diff --git a/.gitignore b/.gitignore
index 5ae6db0..0ec9398 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,10 @@
 # runtime bundles
-runtime/updates/org.eclipse.rcptt.updates.runtime/q7/
 runtime/updates/org.eclipse.rcptt.updates.runtime.e4x/q7/
 modules/rap/bundles/runtime/updates/org.eclipse.rcptt.updates.runtime.rap/q7/
 
 # external dependencies bundles
 dependencies/bundles/org.eclipse.rcptt.updates.external.dependencies.rap/dependencies
 dependencies/bundles/org.eclipse.rcptt.updates.kepler/dependencies
-dependencies/bundles/org.eclipse.rcptt.updates.helios/dependencies
-dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/dependencies
-dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/dependencies
 dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e44x/dependencies
 dependencies/bundles/org.eclipse.rcptt.updates.extra/dependencies
 
diff --git a/build.cmd b/build.cmd
index a306390..ba990d8 100644
--- a/build.cmd
+++ b/build.cmd
@@ -10,9 +10,6 @@
 call mvn %TARGETS% %OPTIONS% %* -f releng/core/pom.xml ^
     || goto :EOF
 
-call mvn %TARGETS% %OPTIONS% %* -f releng/runtime/pom.xml -P runtime3x ^
-    || goto :EOF
-
 call mvn %TARGETS% %OPTIONS% %* -f releng/runtime/pom.xml -P runtime4x ^
     || goto :EOF
 
diff --git a/build.sh b/build.sh
index 8720a0b..cb83b5d 100755
--- a/build.sh
+++ b/build.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #*******************************************************************************
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
+# Copyright (c) 2009, 2020 Xored Software Inc and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -18,9 +18,6 @@
 echo "======================Building Core======================"
 mvn clean verify -f releng/core/pom.xml $OPTIONS || exit 101
 
-echo "======================Building Runtime 3x======================"
-mvn clean verify -f releng/runtime/pom.xml -P runtime3x $OPTIONS || exit 102
-
 echo "======================Building Runtime 4x======================"
 mvn clean verify -f releng/runtime/pom.xml -P runtime4x $OPTIONS || exit 103
 
diff --git a/build_nodeps.sh b/build_nodeps.sh
index e0a9986..7a4cd4e 100755
--- a/build_nodeps.sh
+++ b/build_nodeps.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #*******************************************************************************
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
+# Copyright (c) 2009, 2020 Xored Software Inc and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -14,7 +14,6 @@
 OPTIONS="-Dtycho.localArtifacts=ignore $@"
 
 mvn clean verify -f releng/core/pom.xml $OPTIONS || exit 101
-mvn clean verify -f releng/runtime/pom.xml -P runtime3x $OPTIONS || exit 102
 mvn clean verify -f releng/runtime/pom.xml -P runtime4x $OPTIONS || exit 103
 mvn clean verify -f releng/ide/pom.xml $OPTIONS || exit 105
 
diff --git a/core/contexts/org.eclipse.rcptt.ctx.capability/src/org/eclipse/rcptt/ctx/capability/CapabilityManager.java b/core/contexts/org.eclipse.rcptt.ctx.capability/src/org/eclipse/rcptt/ctx/capability/CapabilityManager.java
index 5e708e4..f43c27b 100644
--- a/core/contexts/org.eclipse.rcptt.ctx.capability/src/org/eclipse/rcptt/ctx/capability/CapabilityManager.java
+++ b/core/contexts/org.eclipse.rcptt.ctx.capability/src/org/eclipse/rcptt/ctx/capability/CapabilityManager.java
@@ -46,7 +46,7 @@
 	}
 
 	public String[] getAllCapabilities() {
-		return new String[] { "e3", "e4", "rap" };
+		return new String[] { "e4", "rap" };
 	}
 
 	public CapabilityContextItem addCapability(CapabilityContext context, String... capabilities) {
diff --git a/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/Capability.java b/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/Capability.java
index 3742233..c89293b 100644
--- a/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/Capability.java
+++ b/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/Capability.java
@@ -38,22 +38,6 @@
 	 */
 	OTHER(0, "Other", "Other"),
 
-	/**
-	 * The '<em><b>E3</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #E3_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	E3(1, "e3", "e3"), /**
-	 * The '<em><b>E4</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #E4_VALUE
-	 * @generated
-	 * @ordered
-	 */
 	E4(2, "e4", "e4"), /**
 	 * The '<em><b>Rap</b></em>' literal object.
 	 * <!-- begin-user-doc -->
@@ -80,21 +64,6 @@
 	public static final int OTHER_VALUE = 0;
 
 	/**
-	 * The '<em><b>E3</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>E3</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #E3
-	 * @model name="e3"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int E3_VALUE = 1;
-
-	/**
 	 * The '<em><b>E4</b></em>' literal value.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -133,7 +102,6 @@
 	private static final Capability[] VALUES_ARRAY =
 		new Capability[] {
 			OTHER,
-			E3,
 			E4,
 			RAP,
 		};
@@ -193,7 +161,6 @@
 	public static Capability get(int value) {
 		switch (value) {
 			case OTHER_VALUE: return OTHER;
-			case E3_VALUE: return E3;
 			case E4_VALUE: return E4;
 			case RAP_VALUE: return RAP;
 		}
diff --git a/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/impl/EventsPackageImpl.java b/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/impl/EventsPackageImpl.java
index 09afe5d..8a224bb 100644
--- a/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/impl/EventsPackageImpl.java
+++ b/core/org.eclipse.rcptt.core.launching/gen-src/org/eclipse/rcptt/core/launching/events/impl/EventsPackageImpl.java
@@ -597,7 +597,6 @@
 
 		initEEnum(capabilityEEnum, Capability.class, "Capability");
 		addEEnumLiteral(capabilityEEnum, Capability.OTHER);
-		addEEnumLiteral(capabilityEEnum, Capability.E3);
 		addEEnumLiteral(capabilityEEnum, Capability.E4);
 		addEEnumLiteral(capabilityEEnum, Capability.RAP);
 
diff --git a/core/org.eclipse.rcptt.core.launching/models/launching.ecore b/core/org.eclipse.rcptt.core.launching/models/launching.ecore
index 4868601..830ce8b 100644
--- a/core/org.eclipse.rcptt.core.launching/models/launching.ecore
+++ b/core/org.eclipse.rcptt.core.launching/models/launching.ecore
@@ -50,7 +50,6 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="Capability">
     <eLiterals name="Other"/>
-    <eLiterals name="e3" value="1"/>
     <eLiterals name="e4" value="2"/>
     <eLiterals name="rap" value="3"/>
   </eClassifiers>
diff --git a/core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/persistence/plain/PlainTextPersistenceModel.java b/core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/persistence/plain/PlainTextPersistenceModel.java
index 5f3df99..5bda80d 100644
--- a/core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/persistence/plain/PlainTextPersistenceModel.java
+++ b/core/org.eclipse.rcptt.core/src/org/eclipse/rcptt/core/persistence/plain/PlainTextPersistenceModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -234,7 +234,7 @@
 			}
 			saveAttrs.put("Save-Time", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US)
 					.format(new Date(System.currentTimeMillis())));
-			Bundle runtimeBundle = Platform.getBundle("org.eclipse.rcptt.updates.runtime");
+			Bundle runtimeBundle = Platform.getBundle("org.eclipse.rcptt.updates.runtime.e4x");
 			if (runtimeBundle != null) {
 				saveAttrs.put("Runtime-Version", runtimeBundle.getVersion().toString());
 			}
diff --git a/core/org.eclipse.rcptt.tesla.core/src/org/eclipse/rcptt/tesla/internal/core/TeslaCore.java b/core/org.eclipse.rcptt.tesla.core/src/org/eclipse/rcptt/tesla/internal/core/TeslaCore.java
index dd193b2..907ae24 100644
--- a/core/org.eclipse.rcptt.tesla.core/src/org/eclipse/rcptt/tesla/internal/core/TeslaCore.java
+++ b/core/org.eclipse.rcptt.tesla.core/src/org/eclipse/rcptt/tesla/internal/core/TeslaCore.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -117,8 +117,6 @@
 	/**
 	 * Return platform version:
 	 * 
-	 * 3.4-3.8 for classic eclipses.
-	 * 
 	 * 3.103 - for Eclipse 4.2
 	 * 
 	 * @return
@@ -138,10 +136,6 @@
 		Version version = getPlatformVersion();
 		return version.getMajor() == 3 && version.getMinor() >= 103;
 	}
-	public static boolean isEclipse46() {
-		Version version = getPlatformVersion();
-		return version.getMajor() == 3 && version.getMinor() >= 107;
-	}
 
 	public static IStatus createError(String message) {
 		return createError(message, null);
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/.project b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/.project
deleted file mode 100644
index 04e4469..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.updates.aspectj.e38x</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/META-INF/MANIFEST.MF b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/META-INF/MANIFEST.MF
deleted file mode 100644
index 2dff03a..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.rcptt.updates.aspectj.e38x;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Eclipse-BundleShape: dir
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/about.html b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/build.properties b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/build.properties
deleted file mode 100644
index d7b83ec..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = META-INF/,\
-               plugin.xml,\
-               dependencies/,\
-               plugin.properties,\
-               about.html
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/epl-v20.html b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.properties b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.properties
deleted file mode 100644
index 89400b6..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName = Eclipse RCP Testing Tool Project
-pluginName = Bundled AspectJ Runtime for Juno/Kepler AUTs
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.xml b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.xml
deleted file mode 100644
index 6029645..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/plugin.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<plugin>
-   <extension
-         point="org.eclipse.rcptt.launching.ext.q7runtime">
-      <q7runtime
-            kind="aspectj"
-            path="platform:///plugin/org.eclipse.rcptt.updates.aspectj.e38x/dependencies/"
-            version="[3.8,3.10)">
-      </q7runtime>
-   </extension>
-</plugin>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/pom.xml b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/pom.xml
deleted file mode 100644
index 482730c..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e38x/pom.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.eclipse.rcptt.external.dependencies</groupId>
-  	<artifactId>bundles</artifactId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.rcptt.updates.aspectj.e38x</artifactId>
-  <packaging>eclipse-plugin</packaging>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-clean-plugin</artifactId>
-        <configuration>
-          <filesets>
-            <fileset>
-              <directory>dependencies</directory>
-              <includes>
-                <include>**/*</include>
-              </includes>
-              <followSymlinks>false</followSymlinks>
-            </fileset>
-          </filesets>
-        </configuration>
-      </plugin>
-
-      
-      <plugin>
-	<groupId>org.eclipse.tycho.extras</groupId>
-	<artifactId>tycho-p2-extras-plugin</artifactId>
-	<executions>
-	  <execution>
-	    <phase>generate-resources</phase>
-	    <goals>
-	      <goal>mirror</goal>
-	    </goals>
-	  </execution>
-	</executions>
-	<configuration>
-	  <source>
-	    <repository>
-	      <url>http://download.eclipse.org/tools/ajdt/42/update</url>
-	      <layout>p2</layout>
-	    </repository>
-	  </source>
-	  
-	  <destination>${project.basedir}/dependencies</destination>
-	  <followStrictOnly>true</followStrictOnly>
-	  <includeOptional>false</includeOptional>
-	  <includeNonGreedy>false</includeNonGreedy>
-	  <latestVersionOnly>true</latestVersionOnly>
-	  <mirrorMetadataOnly>false</mirrorMetadataOnly>
-	  <compress>true</compress>
-	  <append>false</append>
-	  <includePacked>false</includePacked>
-
-	  <ius>
-	    <iu><id>org.aspectj.runtime</id></iu>
-	    <iu><id>org.aspectj.weaver</id></iu>
-	    <iu><id>org.eclipse.equinox.weaving.aspectj</id></iu>
-	    <iu><id>org.eclipse.equinox.weaving.hook</id></iu>
-	  </ius>
-	</configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/.project b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/.project
deleted file mode 100644
index 5a4722a..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.updates.aspectj.e3x</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/META-INF/MANIFEST.MF b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/META-INF/MANIFEST.MF
deleted file mode 100644
index 38498df..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.rcptt.updates.aspectj.e3x;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Eclipse-BundleShape: dir
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.html b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.ini b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.ini
deleted file mode 100644
index e24f662..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=featureImage.png
-aboutText=%blurb
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.properties b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.properties
deleted file mode 100644
index c8fae8b..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/about.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-blurb=RCPTT Runtime Sites\n\
-\n\
-Version: {featureVersion}\n\
-\n\
-(c) Copyright (c) 2009, 2019 Xored Software Inc and others.  All rights reserved.\n\
-Visit http://www.eclipse.org/rcptt
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/build.properties b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/build.properties
deleted file mode 100644
index 5086059..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = META-INF/,\
-               plugin.xml,\
-               dependencies/,\
-               plugin.properties,\
-               about.html,\
-               about.ini,\
-               about.properties,\
-               featureImage.png
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/epl-v20.html b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/featureImage.png b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/featureImage.png
deleted file mode 100644
index 344c74b..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/featureImage.png
+++ /dev/null
Binary files differ
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.properties b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.properties
deleted file mode 100644
index 581ce9b..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName = Eclipse RCP Testing Tool Project
-pluginName = Bundled AspectJ Runtime for Helios/Helios AUTs
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.xml b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.xml
deleted file mode 100644
index 1ce7e2c..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/plugin.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<plugin>
-   <extension
-         point="org.eclipse.rcptt.launching.ext.q7runtime">
-      <q7runtime
-            kind="aspectj"
-            path="platform:///plugin/org.eclipse.rcptt.updates.aspectj.e3x/dependencies/"
-            version="(3.4,3.8)">
-      </q7runtime>
-   </extension>
-</plugin>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/pom.xml b/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/pom.xml
deleted file mode 100644
index d9a0b56..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.aspectj.e3x/pom.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.eclipse.rcptt.external.dependencies</groupId>
-  	<artifactId>bundles</artifactId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  
-  <artifactId>org.eclipse.rcptt.updates.aspectj.e3x</artifactId>
-  <packaging>eclipse-plugin</packaging>
-
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-clean-plugin</artifactId>
-        <configuration>
-          <filesets>
-            <fileset>
-              <directory>dependencies</directory>
-              <includes>
-                <include>**/*</include>
-              </includes>
-              <followSymlinks>false</followSymlinks>
-            </fileset>
-          </filesets>
-        </configuration>
-      </plugin>
-
-      
-      <plugin>
-	<groupId>org.eclipse.tycho.extras</groupId>
-	<artifactId>tycho-p2-extras-plugin</artifactId>
-	<executions>
-	  <execution>
-	    <phase>generate-resources</phase>
-	    <goals>
-	      <goal>mirror</goal>
-	    </goals>
-	  </execution>
-	</executions>
-	<configuration>
-	  <source>
-	    <repository>
-	      <url>http://download.eclipse.org/tools/ajdt/37/update</url>
-	      <layout>p2</layout>
-	    </repository>
-	  </source>
-	  
-	  <destination>${project.basedir}/dependencies</destination>
-	  <followStrictOnly>true</followStrictOnly>
-	  <includeOptional>false</includeOptional>
-	  <includeNonGreedy>false</includeNonGreedy>
-	  <latestVersionOnly>true</latestVersionOnly>
-	  <mirrorMetadataOnly>false</mirrorMetadataOnly>
-	  <compress>true</compress>
-	  <append>false</append>
-	  <includePacked>false</includePacked>
-
-	  <ius>
-	    <iu><id>org.aspectj.runtime</id></iu>
-	    <iu><id>org.aspectj.weaver</id></iu>
-	    <iu><id>org.eclipse.equinox.weaving.aspectj</id></iu>
-	    <iu><id>org.eclipse.equinox.weaving.hook</id></iu>
-	  </ius>
-	</configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
-
-
-
-
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/.project b/dependencies/bundles/org.eclipse.rcptt.updates.helios/.project
deleted file mode 100644
index eaf0ef5..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.updates.helios</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/META-INF/MANIFEST.MF b/dependencies/bundles/org.eclipse.rcptt.updates.helios/META-INF/MANIFEST.MF
deleted file mode 100644
index 41e5b98..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.rcptt.updates.helios;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.html b/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.ini b/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.ini
deleted file mode 100644
index 0172157..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2020 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=featureImage.png
-aboutText=%blurb
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.properties b/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.properties
deleted file mode 100644
index c34f30d..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/about.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2020 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-blurb=RCPTT External Dependencies\n\
-\n\
-Version: {featureVersion}\n\
-\n\
-(c) Copyright (c) 2009, 2019 Xored Software Inc and others.  All rights reserved.\n\
-Visit http://www.eclipse.org/rcptt
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/build.properties b/dependencies/bundles/org.eclipse.rcptt.updates.helios/build.properties
deleted file mode 100644
index 2cfd7c6..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2020 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = META-INF/,\
-               plugin.xml,\
-               dependencies/,\
-               plugin.properties,\
-               about.html,\
-               about.ini,\
-               about.properties,\
-               featureImage.png
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/epl-v20.html b/dependencies/bundles/org.eclipse.rcptt.updates.helios/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/featureImage.png b/dependencies/bundles/org.eclipse.rcptt.updates.helios/featureImage.png
deleted file mode 100644
index 344c74b..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/featureImage.png
+++ /dev/null
Binary files differ
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.properties b/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.properties
deleted file mode 100644
index cc3e2aa..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName = Eclipse RCP Testing Tool Project
-pluginName = RCPTT Runtime Prerequisites for Helios/Helios AUTs
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.xml b/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.xml
deleted file mode 100644
index d25cb00..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/plugin.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<plugin>
-   <extension
-         point="org.eclipse.rcptt.launching.ext.q7runtime">
-      <q7runtime
-            kind="dependency"
-            path="platform:///plugin/org.eclipse.rcptt.updates.helios/dependencies/"
-            version="[3.6,4.3)">
-      </q7runtime>
-   </extension>
-</plugin>
diff --git a/dependencies/bundles/org.eclipse.rcptt.updates.helios/pom.xml b/dependencies/bundles/org.eclipse.rcptt.updates.helios/pom.xml
deleted file mode 100644
index 59cabc3..0000000
--- a/dependencies/bundles/org.eclipse.rcptt.updates.helios/pom.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.eclipse.rcptt.external.dependencies</groupId>
-    <artifactId>bundles</artifactId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>org.eclipse.rcptt.updates.helios</artifactId>
-  <packaging>eclipse-plugin</packaging>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-clean-plugin</artifactId>
-        <configuration>
-          <filesets>
-            <fileset>
-              <directory>dependencies</directory>
-              <includes>
-                <include>**/*</include>
-              </includes>
-              <followSymlinks>false</followSymlinks>
-            </fileset>
-          </filesets>
-        </configuration>
-      </plugin>
-
-
-      <plugin>
-	<groupId>org.eclipse.tycho.extras</groupId>
-	<artifactId>tycho-p2-extras-plugin</artifactId>
-	<executions>
-	  <execution>
-	    <phase>generate-resources</phase>
-	    <goals>
-	      <goal>mirror</goal>
-	    </goals>
-	  </execution>
-	</executions>
-	<configuration>
-	  <source>
-	    <repository>
-        <id>helios</id>
-	      <url>http://download.eclipse.org/releases/helios/</url>
-	      <layout>p2</layout>
-	    </repository>
-	  </source>
-
-	  <destination>${project.basedir}/dependencies</destination>
-	  <followStrictOnly>true</followStrictOnly>
-	  <includeOptional>false</includeOptional>
-	  <includeNonGreedy>false</includeNonGreedy>
-	  <latestVersionOnly>true</latestVersionOnly>
-	  <mirrorMetadataOnly>false</mirrorMetadataOnly>
-	  <compress>true</compress>
-	  <append>false</append>
-	  <includePacked>false</includePacked>
-
-	  <ius>
-	    <iu><id>org.eclipse.emf.codegen.ecore.ui.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.codegen.ecore.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.codegen.ui.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.codegen.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.common.ui.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.common.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.converter.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.databinding.edit.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.databinding.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.ecore.edit.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.ecore.editor.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.ecore.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.edit.ui.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.edit.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.mapping.ecore.editor.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.mapping.ecore.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.mapping.ui.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.mapping.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.query.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.transaction.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.validation.feature.group</id></iu>
-            <iu><id>org.eclipse.emf.feature.group</id></iu>
-	  </ius>
-	</configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/dependencies/bundles/pom.xml b/dependencies/bundles/pom.xml
index 4610715..bc0537c 100644
--- a/dependencies/bundles/pom.xml
+++ b/dependencies/bundles/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -23,10 +23,7 @@
   <packaging>pom</packaging>
 
   <modules>
-    <module>org.eclipse.rcptt.updates.aspectj.e38x</module>
-    <module>org.eclipse.rcptt.updates.aspectj.e3x</module>
     <module>org.eclipse.rcptt.updates.aspectj.e44x</module>
-    <module>org.eclipse.rcptt.updates.helios</module>
     <module>org.eclipse.rcptt.updates.kepler</module>
     <module>org.eclipse.rcptt.updates.external.dependencies.rap</module>
     <module>org.eclipse.rcptt.updates.extra</module>
diff --git a/dependencies/features/org.eclipse.rcptt.external.dependencies-feature/feature.xml b/dependencies/features/org.eclipse.rcptt.external.dependencies-feature/feature.xml
index 801fd1b..0199fbd 100644
--- a/dependencies/features/org.eclipse.rcptt.external.dependencies-feature/feature.xml
+++ b/dependencies/features/org.eclipse.rcptt.external.dependencies-feature/feature.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -28,13 +28,6 @@
       %license
    </license>
 
-    <plugin
-         id="org.eclipse.rcptt.updates.helios"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
    <plugin
          id="org.eclipse.rcptt.updates.kepler"
          download-size="0"
@@ -42,18 +35,6 @@
          version="2.5.2.qualifier"
          unpack="false"/>
    <plugin
-         id="org.eclipse.rcptt.updates.aspectj.e3x"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-   <plugin
-         id="org.eclipse.rcptt.updates.aspectj.e38x"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-   <plugin
          id="org.eclipse.rcptt.updates.aspectj.e44x"
          download-size="0"
          install-size="0"
diff --git a/devenv/launches/RCPTT IDE AUT.launch b/devenv/launches/RCPTT IDE AUT.launch
index ab2f7af..c38b127 100644
--- a/devenv/launches/RCPTT IDE AUT.launch
+++ b/devenv/launches/RCPTT IDE AUT.launch
@@ -23,7 +23,7 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.rcptt.platform.product"/>
 <stringAttribute key="productFile" value="/org.eclipse.rcptt.ide/org.eclipse.rcptt.product"/>
-<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.sun.el@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.aspectj.ajde@default:default,org.aspectj.runtime@default:default,org.aspectj.weaver@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.aspectj@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.dialogs@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation.ui.ide@default:default,org.eclipse.emf.validation.ui@default:default,org.eclipse.emf.validation@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.gtk.linux.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.discovery.compatibility@default:default,org.eclipse.equinox.p2.discovery@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.discovery@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.aspectj@default:true,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*1.1.100.v20160418-1457@default:default,org.eclipse.jdt.annotation*2.1.0.v20160418-1457@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.annotations@default:default,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.annotations@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.rcptt.updates.aspectj.e38x@default:default,org.eclipse.rcptt.updates.aspectj.e3x@default:default,org.eclipse.rcptt.updates.aspectj.e44x@default:default,org.eclipse.rcptt.updates.helios@default:default,org.eclipse.rcptt.updates.kepler@default:default,org.eclipse.rcptt.updates.runtime.e4x@default:default,org.eclipse.rcptt.updates.runtime@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.monitoring@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.themes@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.sun.el@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.aspectj.ajde@default:default,org.aspectj.runtime@default:default,org.aspectj.weaver@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.aspectj@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.dialogs@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation.ui.ide@default:default,org.eclipse.emf.validation.ui@default:default,org.eclipse.emf.validation@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.gtk.linux.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.discovery.compatibility@default:default,org.eclipse.equinox.p2.discovery@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.discovery@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.aspectj@default:true,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*1.1.100.v20160418-1457@default:default,org.eclipse.jdt.annotation*2.1.0.v20160418-1457@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.annotations@default:default,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.annotations@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.rcptt.updates.aspectj.e38x@default:default,org.eclipse.rcptt.updates.aspectj.e3x@default:default,org.eclipse.rcptt.updates.aspectj.e44x@default:default,org.eclipse.rcptt.updates.kepler@default:default,org.eclipse.rcptt.updates.runtime.e4x@default:default,org.eclipse.rcptt.updates.runtime@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.monitoring@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.themes@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
 <stringAttribute key="selected_workspace_plugins" value="org.eclipse.rcptt.core.builder@default:default,org.eclipse.rcptt.core.ecl.core@default:default,org.eclipse.rcptt.core.ecl.debug@default:default,org.eclipse.rcptt.core.ecl.formatter@default:default,org.eclipse.rcptt.core.ecl.highlighter@default:default,org.eclipse.rcptt.core.ecl.parser@default:default,org.eclipse.rcptt.core.ecl.scanner@default:default,org.eclipse.rcptt.core.launching@default:default,org.eclipse.rcptt.core.scenario@default:default,org.eclipse.rcptt.core.search@default:default,org.eclipse.rcptt.core.swt@default:default,org.eclipse.rcptt.core@default:default,org.eclipse.rcptt.ctx.capability.ui@default:default,org.eclipse.rcptt.ctx.capability@default:default,org.eclipse.rcptt.ctx.debug.impl@default:default,org.eclipse.rcptt.ctx.debug.ui@default:default,org.eclipse.rcptt.ctx.debug@default:default,org.eclipse.rcptt.ctx.extensions@default:default,org.eclipse.rcptt.ctx.filesystem.impl@default:default,org.eclipse.rcptt.ctx.filesystem.ui@default:default,org.eclipse.rcptt.ctx.filesystem@default:default,org.eclipse.rcptt.ctx.group.impl@default:default,org.eclipse.rcptt.ctx.group.ui@default:default,org.eclipse.rcptt.ctx.group@default:default,org.eclipse.rcptt.ctx.parameters.impl@default:default,org.eclipse.rcptt.ctx.parameters.ui@default:default,org.eclipse.rcptt.ctx.parameters@default:default,org.eclipse.rcptt.ctx.preferences.aspects@default:default,org.eclipse.rcptt.ctx.preferences.impl@default:default,org.eclipse.rcptt.ctx.preferences.ui@default:default,org.eclipse.rcptt.ctx.preferences@default:default,org.eclipse.rcptt.ctx.resources.impl@default:default,org.eclipse.rcptt.ctx.resources.ui@default:default,org.eclipse.rcptt.ctx.resources@default:default,org.eclipse.rcptt.ctx.script.impl@default:default,org.eclipse.rcptt.ctx.script.ui@default:default,org.eclipse.rcptt.ctx.script@default:default,org.eclipse.rcptt.ctx.super.ui@default:default,org.eclipse.rcptt.ctx.super@default:default,org.eclipse.rcptt.ctx.workbench.aspect@default:default,org.eclipse.rcptt.ctx.workbench.impl@default:default,org.eclipse.rcptt.ctx.workbench.ui@default:default,org.eclipse.rcptt.ctx.workbench@default:default,org.eclipse.rcptt.ecl.client.tcp@default:default,org.eclipse.rcptt.ecl.core@default:default,org.eclipse.rcptt.ecl.data.tests@default:false,org.eclipse.rcptt.ecl.data@default:default,org.eclipse.rcptt.ecl.debug.core@default:default,org.eclipse.rcptt.ecl.debug.runtime@default:default,org.eclipse.rcptt.ecl.debug.ui@default:default,org.eclipse.rcptt.ecl.dispatch@default:default,org.eclipse.rcptt.ecl.doc@default:default,org.eclipse.rcptt.ecl.filesystem@default:default,org.eclipse.rcptt.ecl.interop@default:default,org.eclipse.rcptt.ecl.operations@default:default,org.eclipse.rcptt.ecl.parser.test@default:default,org.eclipse.rcptt.ecl.parser@default:default,org.eclipse.rcptt.ecl.perf.tests@default:false,org.eclipse.rcptt.ecl.perf@default:default,org.eclipse.rcptt.ecl.platform.ui@default:default,org.eclipse.rcptt.ecl.platform@default:default,org.eclipse.rcptt.ecl.server.tcp@default:default,org.eclipse.rcptt.expandbar.ide@default:default,org.eclipse.rcptt.expandbar.runtime@default:default,org.eclipse.rcptt.expandbar@default:default,org.eclipse.rcptt.forms.impl@default:default,org.eclipse.rcptt.launching.common@default:default,org.eclipse.rcptt.launching.configuration@default:default,org.eclipse.rcptt.launching.ext.ui@default:default,org.eclipse.rcptt.launching.ext@default:default,org.eclipse.rcptt.launching.injection@default:default,org.eclipse.rcptt.launching.p2utils@default:default,org.eclipse.rcptt.launching.remote.ui@default:default,org.eclipse.rcptt.launching.remote@default:default,org.eclipse.rcptt.launching@default:default,org.eclipse.rcptt.logging@default:default,org.eclipse.rcptt.platform@default:default,org.eclipse.rcptt.reporting.html@default:default,org.eclipse.rcptt.reporting.util@default:default,org.eclipse.rcptt.reporting@default:default,org.eclipse.rcptt.runtime.ui@default:default,org.eclipse.rcptt.search@default:default,org.eclipse.rcptt.tesla.canvas@default:default,org.eclipse.rcptt.tesla.core.am@default:default,org.eclipse.rcptt.tesla.core.context@default:default,org.eclipse.rcptt.tesla.core@default:default,org.eclipse.rcptt.tesla.ecl.impl@default:default,org.eclipse.rcptt.tesla.ecl@default:default,org.eclipse.rcptt.tesla.jface.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding.observable.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding@default:default,org.eclipse.rcptt.tesla.jface.fragment@default:false,org.eclipse.rcptt.tesla.jface.text.aspects@default:default,org.eclipse.rcptt.tesla.jface.text.reconciler.aspects@default:default,org.eclipse.rcptt.tesla.jface.text@default:default,org.eclipse.rcptt.tesla.jobs.aspects@default:default,org.eclipse.rcptt.tesla.properties.view@default:default,org.eclipse.rcptt.tesla.recording.aspects.forms@default:default,org.eclipse.rcptt.tesla.recording.aspects.jface.text@default:default,org.eclipse.rcptt.tesla.recording.aspects.jface@default:default,org.eclipse.rcptt.tesla.recording.aspects.swt@default:default,org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor@default:default,org.eclipse.rcptt.tesla.recording.aspects.workbench@default:default,org.eclipse.rcptt.tesla.recording.canvas@default:default,org.eclipse.rcptt.tesla.recording.core.ecl@default:default,org.eclipse.rcptt.tesla.recording.core@default:default,org.eclipse.rcptt.tesla.recording.jface.text@default:default,org.eclipse.rcptt.tesla.recording.swt@default:default,org.eclipse.rcptt.tesla.recording.workbench.texteditor@default:default,org.eclipse.rcptt.tesla.swt.aspects@default:default,org.eclipse.rcptt.tesla.swt.e4x@default:default,org.eclipse.rcptt.tesla.swt.fragment@default:false,org.eclipse.rcptt.tesla.swt@default:default,org.eclipse.rcptt.tesla.ui.ide.aspects@default:default,org.eclipse.rcptt.tesla.ui.ide@default:default,org.eclipse.rcptt.tesla.variables@default:default,org.eclipse.rcptt.tesla.workbench.aspects.e4x@default:default,org.eclipse.rcptt.tesla.workbench.texteditor.aspects@default:default,org.eclipse.rcptt.tesla.workbench.texteditor@default:default,org.eclipse.rcptt.testing.ecl@default:default,org.eclipse.rcptt.ui.activities@default:default,org.eclipse.rcptt.ui.report@default:default,org.eclipse.rcptt.ui@default:default,org.eclipse.rcptt.util.resources@default:default,org.eclipse.rcptt.util.swt@default:default,org.eclipse.rcptt.util@default:default,org.eclipse.rcptt.verifications.log.impl@default:default,org.eclipse.rcptt.verifications.log.ui@default:default,org.eclipse.rcptt.verifications.log@default:default,org.eclipse.rcptt.verifications.text.impl@default:default,org.eclipse.rcptt.verifications.text.ui@default:default,org.eclipse.rcptt.verifications.text@default:default,org.eclipse.rcptt.verifications.time.impl@default:default,org.eclipse.rcptt.verifications.time.ui@default:default,org.eclipse.rcptt.verifications.time@default:default,org.eclipse.rcptt.verifications.tree.impl@default:default,org.eclipse.rcptt.verifications.tree.ui@default:default,org.eclipse.rcptt.verifications.tree@default:default,org.eclipse.rcptt.verifications@default:default,org.eclipse.rcptt.watson.aspects.jobs@default:default,org.eclipse.rcptt.watson.aspects.swt@default:default,org.eclipse.rcptt.watson.core@default:default,org.eclipse.rcptt.watson.jface@default:default,org.eclipse.rcptt.watson.jobs@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
diff --git a/devenv/launches/RCPTT IDE Self AUT.launch b/devenv/launches/RCPTT IDE Self AUT.launch
index 81eed55..4d3354f 100644
--- a/devenv/launches/RCPTT IDE Self AUT.launch
+++ b/devenv/launches/RCPTT IDE Self AUT.launch
@@ -23,7 +23,7 @@
 <stringAttribute key="pde.version" value="3.3"/>
 <stringAttribute key="product" value="org.eclipse.rcptt.platform.product"/>
 <stringAttribute key="productFile" value="/org.eclipse.rcptt.ide/org.eclipse.rcptt.product"/>
-<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.sun.el@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.aspectj.ajde@default:default,org.aspectj.runtime@default:default,org.aspectj.weaver@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.aspectj@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.dialogs@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation.ui.ide@default:default,org.eclipse.emf.validation.ui@default:default,org.eclipse.emf.validation@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.gtk.linux.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.discovery.compatibility@default:default,org.eclipse.equinox.p2.discovery@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.discovery@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.aspectj@default:true,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*1.1.100.v20160418-1457@default:default,org.eclipse.jdt.annotation*2.1.0.v20160418-1457@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.annotations@default:default,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.annotations@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.rcptt.updates.aspectj.e38x@default:default,org.eclipse.rcptt.updates.aspectj.e3x@default:default,org.eclipse.rcptt.updates.aspectj.e44x@default:default,org.eclipse.rcptt.updates.helios@default:default,org.eclipse.rcptt.updates.kepler@default:default,org.eclipse.rcptt.updates.runtime.e4x@default:default,org.eclipse.rcptt.updates.runtime@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.monitoring@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.themes@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.sun.el@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.apache.ant@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.aspectj.ajde@default:default,org.aspectj.runtime@default:default,org.aspectj.weaver@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.aspectj@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.linux.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.dialogs@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:false,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.transaction.ui@default:default,org.eclipse.emf.transaction@default:default,org.eclipse.emf.validation.ui.ide@default:default,org.eclipse.emf.validation.ui@default:default,org.eclipse.emf.validation@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.gtk.linux.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.directorywatcher@default:default,org.eclipse.equinox.p2.discovery.compatibility@default:default,org.eclipse.equinox.p2.discovery@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.extensionlocation@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.reconciler.dropins@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui.discovery@default:default,org.eclipse.equinox.p2.ui.importexport@default:default,org.eclipse.equinox.p2.ui.sdk.scheduler@default:default,org.eclipse.equinox.p2.ui.sdk@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatechecker@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.aspectj@default:true,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.annotation*1.1.100.v20160418-1457@default:default,org.eclipse.jdt.annotation*2.1.0.v20160418-1457@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.api.tools.annotations@default:default,org.eclipse.pde.api.tools.ui@default:default,org.eclipse.pde.api.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.ds.annotations@default:default,org.eclipse.pde.ds.core@default:default,org.eclipse.pde.ds.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ua.core@default:default,org.eclipse.pde.ua.ui@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.rcptt.updates.aspectj.e38x@default:default,org.eclipse.rcptt.updates.aspectj.e3x@default:default,org.eclipse.rcptt.updates.aspectj.e44x@default:default,org.eclipse.rcptt.updates.kepler@default:default,org.eclipse.rcptt.updates.runtime.e4x@default:default,org.eclipse.rcptt.updates.runtime@default:default,org.eclipse.search@default:default,org.eclipse.swt.gtk.linux.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.quicklinks@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.monitoring@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.themes@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.hamcrest.core@default:default,org.junit@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.tukaani.xz@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
 <stringAttribute key="selected_workspace_plugins" value="org.eclipse.rcptt.core.builder@default:default,org.eclipse.rcptt.core.ecl.core@default:default,org.eclipse.rcptt.core.ecl.debug@default:default,org.eclipse.rcptt.core.ecl.formatter@default:default,org.eclipse.rcptt.core.ecl.highlighter@default:default,org.eclipse.rcptt.core.ecl.parser@default:default,org.eclipse.rcptt.core.ecl.scanner@default:default,org.eclipse.rcptt.core.launching@default:default,org.eclipse.rcptt.core.scenario@default:default,org.eclipse.rcptt.core.search@default:default,org.eclipse.rcptt.core.swt@default:default,org.eclipse.rcptt.core@default:default,org.eclipse.rcptt.ctx.capability.ui@default:default,org.eclipse.rcptt.ctx.capability@default:default,org.eclipse.rcptt.ctx.debug.impl@default:default,org.eclipse.rcptt.ctx.debug.ui@default:default,org.eclipse.rcptt.ctx.debug@default:default,org.eclipse.rcptt.ctx.extensions@default:default,org.eclipse.rcptt.ctx.filesystem.impl@default:default,org.eclipse.rcptt.ctx.filesystem.ui@default:default,org.eclipse.rcptt.ctx.filesystem@default:default,org.eclipse.rcptt.ctx.group.impl@default:default,org.eclipse.rcptt.ctx.group.ui@default:default,org.eclipse.rcptt.ctx.group@default:default,org.eclipse.rcptt.ctx.parameters.impl@default:default,org.eclipse.rcptt.ctx.parameters.ui@default:default,org.eclipse.rcptt.ctx.parameters@default:default,org.eclipse.rcptt.ctx.preferences.aspects@default:default,org.eclipse.rcptt.ctx.preferences.impl@default:default,org.eclipse.rcptt.ctx.preferences.ui@default:default,org.eclipse.rcptt.ctx.preferences@default:default,org.eclipse.rcptt.ctx.resources.impl@default:default,org.eclipse.rcptt.ctx.resources.ui@default:default,org.eclipse.rcptt.ctx.resources@default:default,org.eclipse.rcptt.ctx.script.impl@default:default,org.eclipse.rcptt.ctx.script.ui@default:default,org.eclipse.rcptt.ctx.script@default:default,org.eclipse.rcptt.ctx.super.ui@default:default,org.eclipse.rcptt.ctx.super@default:default,org.eclipse.rcptt.ctx.workbench.aspect@default:default,org.eclipse.rcptt.ctx.workbench.impl@default:default,org.eclipse.rcptt.ctx.workbench.ui@default:default,org.eclipse.rcptt.ctx.workbench@default:default,org.eclipse.rcptt.ecl.client.tcp@default:default,org.eclipse.rcptt.ecl.core@default:default,org.eclipse.rcptt.ecl.data.tests@default:false,org.eclipse.rcptt.ecl.data@default:default,org.eclipse.rcptt.ecl.debug.core@default:default,org.eclipse.rcptt.ecl.debug.runtime@default:default,org.eclipse.rcptt.ecl.debug.ui@default:default,org.eclipse.rcptt.ecl.dispatch@default:default,org.eclipse.rcptt.ecl.doc@default:default,org.eclipse.rcptt.ecl.filesystem@default:default,org.eclipse.rcptt.ecl.interop@default:default,org.eclipse.rcptt.ecl.operations@default:default,org.eclipse.rcptt.ecl.parser.test@default:default,org.eclipse.rcptt.ecl.parser@default:default,org.eclipse.rcptt.ecl.perf.tests@default:false,org.eclipse.rcptt.ecl.perf@default:default,org.eclipse.rcptt.ecl.platform.ui@default:default,org.eclipse.rcptt.ecl.platform@default:default,org.eclipse.rcptt.ecl.server.tcp@default:default,org.eclipse.rcptt.expandbar.ide@default:default,org.eclipse.rcptt.expandbar.runtime@default:default,org.eclipse.rcptt.expandbar@default:default,org.eclipse.rcptt.forms.impl@default:default,org.eclipse.rcptt.launching.common@default:default,org.eclipse.rcptt.launching.configuration@default:default,org.eclipse.rcptt.launching.ext.ui@default:default,org.eclipse.rcptt.launching.ext@default:default,org.eclipse.rcptt.launching.injection@default:default,org.eclipse.rcptt.launching.p2utils@default:default,org.eclipse.rcptt.launching.remote.ui@default:default,org.eclipse.rcptt.launching.remote@default:default,org.eclipse.rcptt.launching@default:default,org.eclipse.rcptt.logging@default:default,org.eclipse.rcptt.platform@default:default,org.eclipse.rcptt.reporting.html@default:default,org.eclipse.rcptt.reporting.util@default:default,org.eclipse.rcptt.reporting@default:default,org.eclipse.rcptt.runtime.ui@default:default,org.eclipse.rcptt.search@default:default,org.eclipse.rcptt.tesla.canvas@default:default,org.eclipse.rcptt.tesla.core.am@default:default,org.eclipse.rcptt.tesla.core.context@default:default,org.eclipse.rcptt.tesla.core@default:default,org.eclipse.rcptt.tesla.ecl.impl@default:default,org.eclipse.rcptt.tesla.ecl@default:default,org.eclipse.rcptt.tesla.jface.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding.observable.aspects@default:default,org.eclipse.rcptt.tesla.jface.databinding@default:default,org.eclipse.rcptt.tesla.jface.fragment@default:false,org.eclipse.rcptt.tesla.jface.text.aspects@default:default,org.eclipse.rcptt.tesla.jface.text.reconciler.aspects@default:default,org.eclipse.rcptt.tesla.jface.text@default:default,org.eclipse.rcptt.tesla.jobs.aspects@default:default,org.eclipse.rcptt.tesla.properties.view@default:default,org.eclipse.rcptt.tesla.recording.aspects.forms@default:default,org.eclipse.rcptt.tesla.recording.aspects.jface.text@default:default,org.eclipse.rcptt.tesla.recording.aspects.jface@default:default,org.eclipse.rcptt.tesla.recording.aspects.swt@default:default,org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor@default:default,org.eclipse.rcptt.tesla.recording.aspects.workbench@default:default,org.eclipse.rcptt.tesla.recording.canvas@default:default,org.eclipse.rcptt.tesla.recording.core.ecl@default:default,org.eclipse.rcptt.tesla.recording.core@default:default,org.eclipse.rcptt.tesla.recording.jface.text@default:default,org.eclipse.rcptt.tesla.recording.swt@default:default,org.eclipse.rcptt.tesla.recording.workbench.texteditor@default:default,org.eclipse.rcptt.tesla.swt.aspects@default:default,org.eclipse.rcptt.tesla.swt.e4x@default:default,org.eclipse.rcptt.tesla.swt.fragment@default:false,org.eclipse.rcptt.tesla.swt@default:default,org.eclipse.rcptt.tesla.ui.ide.aspects@default:default,org.eclipse.rcptt.tesla.ui.ide@default:default,org.eclipse.rcptt.tesla.variables@default:default,org.eclipse.rcptt.tesla.workbench.aspects.e4x@default:default,org.eclipse.rcptt.tesla.workbench.texteditor.aspects@default:default,org.eclipse.rcptt.tesla.workbench.texteditor@default:default,org.eclipse.rcptt.testing.ecl@default:default,org.eclipse.rcptt.ui.activities@default:default,org.eclipse.rcptt.ui.report@default:default,org.eclipse.rcptt.ui@default:default,org.eclipse.rcptt.util.resources@default:default,org.eclipse.rcptt.util.swt@default:default,org.eclipse.rcptt.util@default:default,org.eclipse.rcptt.verifications.log.impl@default:default,org.eclipse.rcptt.verifications.log.ui@default:default,org.eclipse.rcptt.verifications.log@default:default,org.eclipse.rcptt.verifications.text.impl@default:default,org.eclipse.rcptt.verifications.text.ui@default:default,org.eclipse.rcptt.verifications.text@default:default,org.eclipse.rcptt.verifications.time.impl@default:default,org.eclipse.rcptt.verifications.time.ui@default:default,org.eclipse.rcptt.verifications.time@default:default,org.eclipse.rcptt.verifications.tree.impl@default:default,org.eclipse.rcptt.verifications.tree.ui@default:default,org.eclipse.rcptt.verifications.tree@default:default,org.eclipse.rcptt.verifications@default:default,org.eclipse.rcptt.watson.aspects.jobs@default:default,org.eclipse.rcptt.watson.aspects.swt@default:default,org.eclipse.rcptt.watson.core@default:default,org.eclipse.rcptt.watson.jface@default:default,org.eclipse.rcptt.watson.jobs@default:default"/>
 <booleanAttribute key="show_selected_only" value="false"/>
 <booleanAttribute key="tracing" value="false"/>
diff --git a/devenv/oomph/RCPTT_devEnv.setup b/devenv/oomph/RCPTT_devEnv.setup
index fb58ce4..2100177 100644
--- a/devenv/oomph/RCPTT_devEnv.setup
+++ b/devenv/oomph/RCPTT_devEnv.setup
@@ -102,9 +102,6 @@
               xsi:type="predicates:OrPredicate">
             <operand
                 xsi:type="predicates:NamePredicate"
-                pattern=".*.e3x"/>
-            <operand
-                xsi:type="predicates:NamePredicate"
                 pattern=".*.e4x"/>
           </operand>
         </operand>
@@ -134,12 +131,6 @@
           pattern=".*.e4x"/>
     </workingSet>
     <workingSet
-        name="RCPTT Runtime e3">
-      <predicate
-          xsi:type="predicates:NamePredicate"
-          pattern=".*.e3x"/>
-    </workingSet>
-    <workingSet
         name="RCPTT releng"
         id="rcptt.releng"/>
     <description>The dynamic working sets for ${scope.project.label}</description>
diff --git a/ecl/plugins/org.eclipse.rcptt.ecl.telnet.server.ui/plugin.xml b/ecl/plugins/org.eclipse.rcptt.ecl.telnet.server.ui/plugin.xml
index 3a61440..9d359c0 100644
--- a/ecl/plugins/org.eclipse.rcptt.ecl.telnet.server.ui/plugin.xml
+++ b/ecl/plugins/org.eclipse.rcptt.ecl.telnet.server.ui/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
+<?eclipse version="4.2"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
diff --git a/fast-build.sh b/fast-build.sh
index 265f94b..df941cd 100755
--- a/fast-build.sh
+++ b/fast-build.sh
@@ -20,9 +20,6 @@
 echo "======================Building Core======================"
 mvn clean verify -f releng/core/pom.xml $OPTIONS || exit 101
 
-echo "======================Building Runtime 3x======================"
-mvn clean verify -f releng/runtime/pom.xml -P runtime3x $OPTIONS || exit 102
-
 echo "======================Building Runtime 4x======================"
 mvn clean verify -f releng/runtime/pom.xml -P runtime4x $OPTIONS || exit 103
 
diff --git a/launching/org.eclipse.rcptt.launching.ext/schema/q7runtime.exsd b/launching/org.eclipse.rcptt.launching.ext/schema/q7runtime.exsd
index 2dc655d..51c5187 100644
--- a/launching/org.eclipse.rcptt.launching.ext/schema/q7runtime.exsd
+++ b/launching/org.eclipse.rcptt.launching.ext/schema/q7runtime.exsd
@@ -67,7 +67,7 @@
                <documentation>
                   Eclipse target version string.
 Could contain * willcard for any sumsequence matches.
-Eg: 3.* for all 3.x releases.
+Eg: 4.* for all 4.x releases.
                </documentation>
             </annotation>
          </attribute>
diff --git a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/PDEUtils.java b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/PDEUtils.java
index 3333744..6f4d201 100644
--- a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/PDEUtils.java
+++ b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/PDEUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -45,7 +45,7 @@
 				map.put(bundle,
 						BundleLauncherHelper.DEFAULT_UPDATE_CONFIGURATOR_START_LEVEL);
 			} else if (IPDEBuildConstants.BUNDLE_CORE_RUNTIME.equals(modelName)) {
-				if (TargetPlatformHelper.getTargetVersion() > 3.1) {
+				if (TargetPlatformHelper.getTargetVersion() >= 4.3) {
 					map.put(bundle, "default:true"); //$NON-NLS-1$
 				} else {
 					map.put(bundle, "2:true"); //$NON-NLS-1$
diff --git a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/autdetails/AutDetailsCollector.java b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/autdetails/AutDetailsCollector.java
index 090844c..4efb087 100644
--- a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/autdetails/AutDetailsCollector.java
+++ b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/autdetails/AutDetailsCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -90,7 +90,7 @@
 		Properties q7props = new Properties();
 
 		Version runtimeBundle = Platform.getBundle(
-				"org.eclipse.rcptt.updates.runtime").getVersion();
+			"org.eclipse.rcptt.updates.runtime.e4x").getVersion();
 		q7props.put("runtime.version", runtimeBundle.toString());
 		processor.addFile("Q7 version.properties", q7props);
 	}
diff --git a/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/AutLaunch.java b/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/AutLaunch.java
index fd0141d..060863e 100644
--- a/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/AutLaunch.java
+++ b/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/AutLaunch.java
@@ -49,7 +49,7 @@
 	AutLaunchState getState();
 
 	/**
-	 * Return the aut capability platform "e3", "e4", "rap".
+	 * Return the aut capability platform "e4", "rap".
 	 *
 	 * @return capability platform
 	 */
diff --git a/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/IQ7Launch.java b/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/IQ7Launch.java
index 52f17b8..d2a5890 100644
--- a/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/IQ7Launch.java
+++ b/launching/org.eclipse.rcptt.launching/src/org/eclipse/rcptt/launching/IQ7Launch.java
@@ -168,7 +168,7 @@
 	String ATTR_AUT_PLATFORM = Q7LaunchingPlugin.PLUGIN_ID + ".AUT_PLATFORM_ATTR"; //$NON-NLS-1$
 
 	/**
-	 * Launch configuration attribute key. Aut capability values: "e3", "e4", "rap", "other".
+	 * Launch configuration attribute key. Aut capability values: "e4", "rap", "other".
 	 */
 	String ATTR_AUT_CAPABILITY = Q7LaunchingPlugin.PLUGIN_ID + ".AUT_CAPABILITY_ATTR"; //$NON-NLS-1$
 
diff --git a/modules/nebula/plugins/org.eclipse.rcptt.module.nebula.updates/plugin.xml b/modules/nebula/plugins/org.eclipse.rcptt.module.nebula.updates/plugin.xml
index 9239813..11576ea 100644
--- a/modules/nebula/plugins/org.eclipse.rcptt.module.nebula.updates/plugin.xml
+++ b/modules/nebula/plugins/org.eclipse.rcptt.module.nebula.updates/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.4"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
       <q7runtime
             kind="extra"
             path="platform:///plugin/org.eclipse.rcptt.module.nebula.updates/runtime/"
-            version="[3.4,5]">
+            version="[4.2,5]">
       </q7runtime>
    </extension>
 </plugin>
diff --git a/modules/nebula/pom.xml b/modules/nebula/pom.xml
index 2dd2d2e..fab2e6a 100644
--- a/modules/nebula/pom.xml
+++ b/modules/nebula/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -35,9 +35,9 @@
       <url>${rcpttRuntimeRepo}</url>
     </repository>
     <repository>
-      <id>ajdt37</id>
+      <id>ajdt43</id>
       <layout>p2</layout>
-      <url>${ajdt37repository}</url>
+      <url>${ajdt43repository}</url>
     </repository>
   </repositories>
 
diff --git a/modules/testrail/plugins/org.eclipse.rcptt.module.testrail.updates/plugin.xml b/modules/testrail/plugins/org.eclipse.rcptt.module.testrail.updates/plugin.xml
index f358e61..76d16d2 100644
--- a/modules/testrail/plugins/org.eclipse.rcptt.module.testrail.updates/plugin.xml
+++ b/modules/testrail/plugins/org.eclipse.rcptt.module.testrail.updates/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.4"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
       <q7runtime
             kind="extra"
             path="platform:///plugin/org.eclipse.rcptt.module.testrail.updates/runtime/"
-            version="[3.4,5]">
+            version="[4.2,5]">
       </q7runtime>
    </extension>
 </plugin>
diff --git a/releng/README.org b/releng/README.org
index 19127fd..ca1a159 100644
--- a/releng/README.org
+++ b/releng/README.org
@@ -13,13 +13,11 @@
      # Main repo & runtime repos
      /nightly/1.5.2/{qualifier}/repository/
      /nightly/1.5.2/{qualifier}/full/repository/
-     /nightly/1.5.2/{qualifier}/runtime3x/
      /nightly/1.5.2/{qualifier}/runtime4x/
 
      # Latest (just a copy with minor change in ide file (to ensure url is the same))
      /nightly/1.5.2/latest/ide/rcptt.ide-1.5.2-nightly-{platform}.zip
      /nightly/1.5.2/latest/repository/
-     /nightly/1.5.2/latest/runtime3x/
      /nightly/1.5.2/latest/runtime4x/
    #+END_SRC
 
diff --git a/releng/core/pom.xml b/releng/core/pom.xml
index 357e575..62af67a 100644
--- a/releng/core/pom.xml
+++ b/releng/core/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -34,9 +34,9 @@
 
   <repositories>
     <repository>
-      <id>ajdt37</id>
+      <id>ajdt43</id>
       <layout>p2</layout>
-      <url>${ajdt37repository}</url>
+      <url>${ajdt43repository}</url>
     </repository>
   </repositories>
 </project>
diff --git a/releng/ecl/pom.xml b/releng/ecl/pom.xml
index 687e824..d67798e 100644
--- a/releng/ecl/pom.xml
+++ b/releng/ecl/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -37,9 +37,9 @@
       <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository/</url>
     </repository>
      <repository>
-      <id>indigo</id>
+      <id>kepler</id>
       <layout>p2</layout>
-      <url>http://download.eclipse.org/releases/indigo</url>
+      <url>http://download.eclipse.org/releases/kepler</url>
     </repository>
   </repositories>
 </project>
diff --git a/releng/ide/pom.xml b/releng/ide/pom.xml
index 323ce29..c2cca26 100644
--- a/releng/ide/pom.xml
+++ b/releng/ide/pom.xml
@@ -1,5 +1,5 @@
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -36,7 +36,6 @@
   <properties>
     <buildUrl>file:/${user.dir}</buildUrl>
     <rcpttRuntimeRepo>${buildUrl}/runtime/org.eclipse.rcptt.runtime-updatesite/target/repository/</rcpttRuntimeRepo>
-    <e3xRepository>${buildUrl}/repository/e3x/target/repository</e3xRepository>
     <e4xRepository>${buildUrl}/repository/e4x/target/repository</e4xRepository>
     <coreRepository>${buildUrl}/repository/core/target/repository</coreRepository>
     <rcpttExternalDepencenciesRepository>${buildUrl}/repository/dependencies/target/repository</rcpttExternalDepencenciesRepository>
@@ -66,15 +65,6 @@
       <snapshots>
         <updatePolicy>always</updatePolicy>
       </snapshots>
-      <id>e3x-ide</id>
-      <layout>p2</layout>
-      <url>${e3xRepository}</url>
-    </repository>
-
-    <repository>
-      <snapshots>
-        <updatePolicy>always</updatePolicy>
-      </snapshots>
       <id>e4x-ide</id>
       <layout>p2</layout>
       <url>${e4xRepository}</url>
diff --git a/releng/pom.xml b/releng/pom.xml
index 79ec633..f42ea5f 100644
--- a/releng/pom.xml
+++ b/releng/pom.xml
@@ -19,7 +19,7 @@
     <tycho-version>1.5.1</tycho-version>
     <tycho-groupid>org.eclipse.tycho</tycho-groupid>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <ajdt37repository>http://download.eclipse.org/tools/ajdt/37/update/</ajdt37repository>
+    <ajdt43repository>http://download.eclipse.org/tools/ajdt/43/update/</ajdt43repository>
     <signExcludeInnerJars>true</signExcludeInnerJars>
     <aspectj_version>1.7</aspectj_version>
     <aspectj_dep>1.7.0</aspectj_dep>
diff --git a/releng/runtime/pom.xml b/releng/runtime/pom.xml
index f7b610c..7b0c602 100644
--- a/releng/runtime/pom.xml
+++ b/releng/runtime/pom.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2009, 2019 Xored Software Inc and others. All rights reserved. 
+<!-- Copyright (c) 2009, 2020 Xored Software Inc and others. All rights reserved. 
 	This program and the accompanying materials are made available under the 
 	terms of the Eclipse Public License v2.0 which accompanies this distribution, 
 	and is available at https://www.eclipse.org/legal/epl-v20.html Contributors: 
@@ -43,26 +43,6 @@
 
 	<profiles>
 		<profile>
-			<id>runtime3x</id>
-			<modules>
-				<module>../../runtime</module>
-				<module>../../repository/e3x</module>
-			</modules>
-			<repositories>
-				<repository>
-					<id>indigo</id>
-					<layout>p2</layout>
-					<url>http://download.eclipse.org/releases/indigo</url>
-				</repository>
-				<repository>
-					<id>ajdt37</id>
-					<layout>p2</layout>
-					<url>${ajdt37repository}</url>
-				</repository>
-			</repositories>
-		</profile>
-
-		<profile>
 			<id>runtime4x</id>
 			<modules>
 				<module>../../runtime</module>
diff --git a/releng/target-platforms/indigo/ide.target b/releng/target-platforms/indigo/ide.target
deleted file mode 100644
index 8047843..0000000
--- a/releng/target-platforms/indigo/ide.target
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target includeMode="feature" name="ide-indigo" sequenceNumber="79">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="epp.package.java" version="1.4.2.20120213-0813"/>
-<unit id="org.eclipse.rcp.sdk.id" version="3.7.2.M20120208-0800"/>
-<unit id="org.eclipse.emf.common.ui.source.feature.group" version="2.7.0.v20120130-0943"/>
-<unit id="org.eclipse.emf.common.ui.feature.group" version="2.7.0.v20120130-0943"/>
-<unit id="org.eclipse.emf.transaction.sdk.feature.group" version="1.5.1.v20110823-1800-777T19A_WsXmjNatPxcrPm1rOKlH"/>
-<unit id="org.eclipse.gmf.runtime.sdk.feature.group" version="1.5.0.v20110607-1200-67N09E9QnChoWswz-3wf_rz0kQ8Y"/>
-<unit id="org.eclipse.emf.edit.ui.feature.group" version="2.7.0.v20120130-0943"/>
-<unit id="org.eclipse.platform.sdk" version="3.7.2.M20120208-0800"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="2.7.2.v20120130-0943"/>
-<unit id="org.eclipse.draw2d.sdk.feature.group" version="3.7.2.v20110927-2020-7A7I38yF6F19G9K5A7H558C58x42"/>
-<unit id="org.eclipse.emf.edit.ui.source.feature.group" version="2.7.0.v20120130-0943"/>
-<unit id="org.eclipse.pde.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
-<repository location="http://download.eclipse.org/releases/indigo/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.contribution.weaving.source.feature.group" version="2.2.0.e37x-RELEASE-20120704-0900"/>
-<unit id="org.eclipse.contribution.xref.source.feature.group" version="2.2.0.e37x-RELEASE-20120704-0900"/>
-<unit id="org.eclipse.ajdt.feature.group" version="2.2.0.e37x-RELEASE-20120704-0900"/>
-<unit id="org.eclipse.ajdt.source.feature.group" version="2.2.0.e37x-RELEASE-20120704-0900"/>
-<unit id="org.eclipse.contribution.weaving.feature.group" version="2.2.0.e37x-RELEASE-20120704-0900"/>
-<repository location="http://download.xored.com/mirrors/ajdt37_22/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="com.google.guava" version="15.0.0.v201212092141"/>
-<unit id="com.google.gson" version="2.2.4.v201311231704"/>
-<unit id="org.antlr.runtime" version="3.2.0.v201101311130"/>
-<unit id="org.jsoup" version="1.7.2.v201304221138"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20150124073747/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.nebula.widgets.grid.feature.feature.group" version="1.0.0.201409040043"/>
-<repository location="http://download.eclipse.org/technology/nebula/archives/Q32014/release/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.rcptt.module.nebula.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.rcptt.updates.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/rcptt/nightly/1.5.5/latest/repository"/>
-</location>
-</locations>
-</target>
diff --git a/repository/e3x/.project b/repository/e3x/.project
deleted file mode 100644
index 37d07f4..0000000
--- a/repository/e3x/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>q7-stage2-repository</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/repository/e3x/category.xml b/repository/e3x/category.xml
deleted file mode 100644
index e174334..0000000
--- a/repository/e3x/category.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<site>
-	<!-- Runtime feature -->
-	<feature 
-		id="org.eclipse.rcptt.updates.e3x" />
-</site>
diff --git a/repository/e3x/pom.xml b/repository/e3x/pom.xml
deleted file mode 100644
index 12eabc1..0000000
--- a/repository/e3x/pom.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>runtime</artifactId>
-    <groupId>org.eclipse.rcptt</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-    <relativePath>../../releng/runtime/pom.xml</relativePath>
-  </parent>
-  <artifactId>e3x</artifactId>
-  <packaging>eclipse-repository</packaging>
-</project>
diff --git a/runner/product/rcptt.runner.product b/runner/product/rcptt.runner.product
index bc65b3a..ce24b43 100644
--- a/runner/product/rcptt.runner.product
+++ b/runner/product/rcptt.runner.product
@@ -310,13 +310,9 @@
       <plugin id="org.eclipse.rcptt.tesla.recording.core.ecl"/>
       <plugin id="org.eclipse.rcptt.tesla.recording.core"/>
       <plugin id="org.eclipse.rcptt.tesla.recording.nebula.ecl"/>
-      <plugin id="org.eclipse.rcptt.updates.aspectj.e38x"/>
-      <plugin id="org.eclipse.rcptt.updates.aspectj.e3x"/>
       <plugin id="org.eclipse.rcptt.updates.aspectj.e44x"/>
-      <plugin id="org.eclipse.rcptt.updates.helios"/>
       <plugin id="org.eclipse.rcptt.updates.kepler"/>
       <plugin id="org.eclipse.rcptt.updates.runtime.e4x"/>
-      <plugin id="org.eclipse.rcptt.updates.runtime"/>
       <plugin id="org.eclipse.rcptt.updates.extra"/>
 
       <plugin id="org.eclipse.rcptt.updates.external.dependencies.rap"/>
@@ -368,7 +364,6 @@
       <plugin id="org.eclipse.ui.workbench"/>
       <plugin id="org.eclipse.ui"/> -->
       <plugin id="org.eclipse.update.configurator"/>
-      <plugin id="org.eclipse.update.core"/>
       <plugin id="org.hamcrest.core"/>
       <plugin id="org.junit"/>
       <plugin id="org.objectweb.asm.tree"/>
diff --git a/runtime/org.eclipse.rcptt.runtime.ui/src/org/eclipse/rcptt/runtime/ui/AutEventManager.java b/runtime/org.eclipse.rcptt.runtime.ui/src/org/eclipse/rcptt/runtime/ui/AutEventManager.java
index 57c33aa..bba1c46 100644
--- a/runtime/org.eclipse.rcptt.runtime.ui/src/org/eclipse/rcptt/runtime/ui/AutEventManager.java
+++ b/runtime/org.eclipse.rcptt.runtime.ui/src/org/eclipse/rcptt/runtime/ui/AutEventManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -225,10 +225,6 @@
 	}
 
 	private static Capability getCapability() {
-		if (TeslaCore.isEclipse4()) {
-			return Capability.E4;
-		}
-
-		return Capability.E3;
+		return Capability.E4;
 	}
 }
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.core.am/about.properties b/runtime/tesla/org.eclipse.rcptt.tesla.core.am/about.properties
index 6d2366b..af13820 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.core.am/about.properties
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.core.am/about.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
+# Copyright (c) 2009, 2020 Xored Software Inc and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v2.0
 # which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
 # Contributors:
 #     Xored Software Inc - initial API and implementation and/or initial documentation
 ###############################################################################
-blurb=RCPTT Runtime Eclipse 3.x\n\
+blurb=RCPTT Runtime Eclipse 4.x\n\
 \n\
 Version: {featureVersion}\n\
 \n\
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/SWTEventRecorder.java b/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/SWTEventRecorder.java
index 79386d9..64d1cef 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/SWTEventRecorder.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.recording.swt/src/org/eclipse/rcptt/tesla/recording/core/swt/SWTEventRecorder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -2010,28 +2010,7 @@
 		if ((widget instanceof TabFolder || widget instanceof CTabFolder)) {
 			// Check for workbench internal element click
 			boolean skip = false;
-			if (!TeslaCore.isEclipse4()) {
-				// eclipse 3.x
-
-				IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows();
-				Control ctrl = (Control) widget;
-				Shell shell = ctrl.getShell();
-				for (IWorkbenchWindow iWorkbenchWindow : workbenchWindows) {
-					Shell wshell = iWorkbenchWindow.getShell();
-
-					if (wshell == shell) {
-						WorkbenchPage page = (WorkbenchPage) iWorkbenchWindow.getActivePage();
-						Composite composite = page.getClientComposite();
-						Composite p1 = ctrl.getParent();
-						if (p1.equals(composite) || p1.getParent().equals(composite)) {
-							// Skip click on views/editors tab folder
-							// hasViewEditorCTabFolderClick = true;
-							skip = true;
-							break;
-						}
-					}
-				}
-			} else if (widget instanceof CTabFolder) {
+			if (TeslaCore.isEclipse4() && widget instanceof CTabFolder) {
 				// eclipse 4.x
 				skip = EclipseWorkbenchProvider.getProvider().extractViewOrEditorControl((CTabFolder) widget) != null;
 			}
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/.project b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/.project
deleted file mode 100644
index bbec7d3..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.tesla.runtime-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/build.properties b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/build.properties
deleted file mode 100644
index 6f37d45..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = feature.xml,\
-               feature.properties,\
-               epl-v20.html,\
-               license.html
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/epl-v20.html b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.properties b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.properties
deleted file mode 100644
index 1e7a164..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.properties
+++ /dev/null
@@ -1,164 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName=Eclipse RCP Testing Tool Project
-copyrightURL=epl-v20.html
-copyright=\
-Copyright (c) 2009, 2019 Xored Software Inc and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-v20.html\n\
-\n\
-Contributors:\n\
-    Xored Software Inc - initial API and implementation and/or initial documentation\n
-licenseURL=license.html
-license=\
-Eclipse Foundation Software User Agreement\n\
-\n\
-November 22, 2017\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY\n\
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
-MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public License\n\
-Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
-available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
-"Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code, documentation\n\
-and other files maintained in the Eclipse Foundation source code repository\n\
-("Repository") in software modules ("Modules") and made available as\n\
-downloadable archives ("Downloads").\n\
-\n\
--   Content may be structured and packaged into modules to facilitate\n\
-    delivering, extending, and upgrading the Content. Typical modules may\n\
-    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
-    features ("Features").\n\
--   Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
-    (Java\u2122 ARchive) in a directory named "plugins".\n\
--   A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
-    associated material. Each Feature may be packaged as a sub-directory in a\n\
-    directory named "features". Within a Feature, files named "feature.xml" may\n\
-    contain a list of the names and version numbers of the Plug-ins and/or\n\
-    Fragments associated with that Feature.\n\
--   Features may also include other Features ("Included Features"). Within a\n\
-    Feature, files named "feature.xml" may contain a list of the names and\n\
-    version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be contained in\n\
-files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
-and Included Features should be contained in files named "license.html"\n\
-("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
-directory of a Download or Module including, but not limited to the following\n\
-locations:\n\
-\n\
--   The top-level (root) directory\n\
--   Plug-in and Fragment directories\n\
--   Inside Plug-ins and Fragments packaged as JARs\n\
--   Sub-directories of the directory named "src" of certain Plug-ins\n\
--   Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using\n\
-the Provisioning Technology (as defined below), you must agree to a license\n\
-("Feature Update License") during the installation process. If the Feature\n\
-contains Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform you\n\
-where you can locate them. Feature Update Licenses may be found in the "license"\n\
-property of files named "feature.properties" found within a Feature. Such\n\
-Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your use of\n\
-the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
--   Eclipse Public License Version 1.0 (available at\n\
-    http://www.eclipse.org/legal/epl-v10.html)\n\
--   Eclipse Distribution License Version 1.0 (available at\n\
-    http://www.eclipse.org/licenses/edl-v1.0.html)\n\
--   Common Public License Version 1.0 (available at\n\
-    http://www.eclipse.org/legal/cpl-v10.html)\n\
--   Apache Software License 1.1 (available at\n\
-    http://www.apache.org/licenses/LICENSE)\n\
--   Apache Software License 2.0 (available at\n\
-    http://www.apache.org/licenses/LICENSE-2.0)\n\
--   Mozilla Public License Version 1.1 (available at\n\
-    http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
-USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
-provided, please contact the Eclipse Foundation to determine what terms and\n\
-conditions govern that particular Content.\n\
-\n\
-Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which\n\
-include, but are not limited to, p2 and the Eclipse Update Manager\n\
-("Provisioning Technology") for the purpose of allowing users to install\n\
-software, documentation, information and/or other materials (collectively\n\
-"Installable Software"). This capability is provided with the intent of allowing\n\
-such users to install, extend and update Eclipse-based products. Information\n\
-about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install\n\
-Installable Software. You shall be responsible for enabling the applicable\n\
-license agreements relating to the Installable Software to be presented to, and\n\
-accepted by, the users of the Provisioning Technology in accordance with the\n\
-Specification. By using Provisioning Technology in such a manner and making it\n\
-available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the\n\
-following:\n\
-\n\
-1.  A series of actions may occur ("Provisioning Process") in which a user may\n\
-    execute the Provisioning Technology on a machine ("Target Machine") with the\n\
-    intent of installing, extending or updating the functionality of an\n\
-    Eclipse-based product.\n\
-2.  During the Provisioning Process, the Provisioning Technology may cause third\n\
-    party Installable Software or a portion thereof to be accessed and copied to\n\
-    the Target Machine.\n\
-3.  Pursuant to the Specification, you will provide to the user the terms and\n\
-    conditions that govern the use of the Installable Software ("Installable\n\
-    Software Agreement") and such Installable Software Agreement shall be\n\
-    accessed from the Target Machine in accordance with the Specification. Such\n\
-    Installable Software Agreement must inform the user of the terms and\n\
-    conditions that govern the Installable Software and must solicit acceptance\n\
-    by the end user in the manner prescribed in such Installable\n\
-    Software Agreement. Upon such indication of agreement by the user, the\n\
-    provisioning Technology will complete installation of the\n\
-    Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are currently\n\
-may have restrictions on the import, possession, and use, and/or re-export to\n\
-another country, of encryption software. BEFORE using any encryption software,\n\
-please check the country's laws, regulations and policies concerning the import,\n\
-possession, or use, and re-export of encryption software, to see if this is\n\
-permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
-United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.xml b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.xml
deleted file mode 100644
index 5734e61..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/feature.xml
+++ /dev/null
@@ -1,347 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<feature
-      id="org.eclipse.rcptt.tesla.runtime"
-      label="RCPTT Runtime Eclipse 3.x"
-      version="2.5.2.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      Low-level framework for RCPTT Runtime
-   </description>
-
-   <copyright url="%copyrightURL">
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.emf.ecore"/>
-      <import plugin="org.aspectj.runtime"/>
-      <import feature="org.eclipse.rcptt.tesla" version="2.5.2" match="compatible"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.gef"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.gef.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.gmf"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.gmf.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.gef"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.gef"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.draw2d"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.gmf"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.swt"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.swt"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.swt.fragment"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.swt"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.draw2d"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.forms"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.jface"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.gmf"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.workbench"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.fragment"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.swt.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.ui.ide"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.ui.ide.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jobs.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.databinding"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.databinding.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.databinding.observable.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.core.am"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.workbench.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.text"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.jface.text"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.jface.text"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.canvas"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.canvas"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.text.reconciler.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jface.text.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.aspects.workbench.texteditor"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.recording.workbench.texteditor"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.workbench.texteditor"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.workbench.texteditor.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.swt.e3x"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.variables"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.properties.view"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jdt"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.tesla.jdt.aspects"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-</feature>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/license.html b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/license.html
deleted file mode 100644
index 15dfad9..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/license.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-	<h2>Eclipse Foundation Software User Agreement</h2>
-	<p>November 22, 2017</p>
-
-	<h3>Usage Of Content</h3>
-
-	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
-		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
-		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
-		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
-		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
-		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
-		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
-		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
-		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
-		USE THE CONTENT.</p>
-
-	<h3>Applicable Licenses</h3>
-
-	<p>
-		Unless otherwise indicated, all Content made available by the Eclipse
-		Foundation is provided to you under the terms and conditions of the
-		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
-		EPL is provided with this Content and is also available at <a
-			href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>Content includes, but is not limited to, source code, object
-		code, documentation and other files maintained in the Eclipse
-		Foundation source code repository (&quot;Repository&quot;) in software
-		modules (&quot;Modules&quot;) and made available as downloadable
-		archives (&quot;Downloads&quot;).</p>
-
-	<ul>
-		<li>Content may be structured and packaged into modules to
-			facilitate delivering, extending, and upgrading the Content. Typical
-			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
-			fragments (&quot;Fragments&quot;), and features
-			(&quot;Features&quot;).</li>
-		<li>Each Plug-in or Fragment may be packaged as a sub-directory
-			or JAR (Java&trade; ARchive) in a directory named
-			&quot;plugins&quot;.</li>
-		<li>A Feature is a bundle of one or more Plug-ins and/or
-			Fragments and associated material. Each Feature may be packaged as a
-			sub-directory in a directory named &quot;features&quot;. Within a
-			Feature, files named &quot;feature.xml&quot; may contain a list of
-			the names and version numbers of the Plug-ins and/or Fragments
-			associated with that Feature.</li>
-		<li>Features may also include other Features (&quot;Included
-			Features&quot;). Within a Feature, files named
-			&quot;feature.xml&quot; may contain a list of the names and version
-			numbers of Included Features.</li>
-	</ul>
-
-	<p>The terms and conditions governing Plug-ins and Fragments should
-		be contained in files named &quot;about.html&quot;
-		(&quot;Abouts&quot;). The terms and conditions governing Features and
-		Included Features should be contained in files named
-		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
-		Feature Licenses may be located in any directory of a Download or
-		Module including, but not limited to the following locations:</p>
-
-	<ul>
-		<li>The top-level (root) directory</li>
-		<li>Plug-in and Fragment directories</li>
-		<li>Inside Plug-ins and Fragments packaged as JARs</li>
-		<li>Sub-directories of the directory named &quot;src&quot; of
-			certain Plug-ins</li>
-		<li>Feature directories</li>
-	</ul>
-
-	<p>Note: if a Feature made available by the Eclipse Foundation is
-		installed using the Provisioning Technology (as defined below), you
-		must agree to a license (&quot;Feature Update License&quot;) during
-		the installation process. If the Feature contains Included Features,
-		the Feature Update License should either provide you with the terms
-		and conditions governing the Included Features or inform you where you
-		can locate them. Feature Update Licenses may be found in the
-		&quot;license&quot; property of files named
-		&quot;feature.properties&quot; found within a Feature. Such Abouts,
-		Feature Licenses, and Feature Update Licenses contain the terms and
-		conditions (or references to such terms and conditions) that govern
-		your use of the associated Content in that directory.</p>
-
-	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
-		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
-		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
-		ARE NOT LIMITED TO):</p>
-
-	<ul>
-		<li>Eclipse Public License Version 1.0 (available at <a
-			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
-		</li>
-		<li>Eclipse Distribution License Version 1.0 (available at <a
-			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
-		</li>
-		<li>Common Public License Version 1.0 (available at <a
-			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
-		</li>
-		<li>Apache Software License 1.1 (available at <a
-			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
-		</li>
-		<li>Apache Software License 2.0 (available at <a
-			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
-		</li>
-		<li>Mozilla Public License Version 1.1 (available at <a
-			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
-		</li>
-	</ul>
-
-	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
-		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
-		or Feature Update License is provided, please contact the Eclipse
-		Foundation to determine what terms and conditions govern that
-		particular Content.</p>
-
-
-	<h3>Use of Provisioning Technology</h3>
-
-	<p>
-		The Eclipse Foundation makes available provisioning software, examples
-		of which include, but are not limited to, p2 and the Eclipse Update
-		Manager (&quot;Provisioning Technology&quot;) for the purpose of
-		allowing users to install software, documentation, information and/or
-		other materials (collectively &quot;Installable Software&quot;). This
-		capability is provided with the intent of allowing such users to
-		install, extend and update Eclipse-based products. Information about
-		packaging Installable Software is available at <a
-			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-		(&quot;Specification&quot;).
-	</p>
-
-	<p>You may use Provisioning Technology to allow other parties to
-		install Installable Software. You shall be responsible for enabling
-		the applicable license agreements relating to the Installable Software
-		to be presented to, and accepted by, the users of the Provisioning
-		Technology in accordance with the Specification. By using Provisioning
-		Technology in such a manner and making it available in accordance with
-		the Specification, you further acknowledge your agreement to, and the
-		acquisition of all necessary rights to permit the following:</p>
-
-	<ol>
-		<li>A series of actions may occur (&quot;Provisioning
-			Process&quot;) in which a user may execute the Provisioning
-			Technology on a machine (&quot;Target Machine&quot;) with the intent
-			of installing, extending or updating the functionality of an
-			Eclipse-based product.</li>
-		<li>During the Provisioning Process, the Provisioning Technology
-			may cause third party Installable Software or a portion thereof to be
-			accessed and copied to the Target Machine.</li>
-		<li>Pursuant to the Specification, you will provide to the user
-			the terms and conditions that govern the use of the Installable
-			Software (&quot;Installable Software Agreement&quot;) and such
-			Installable Software Agreement shall be accessed from the Target
-			Machine in accordance with the Specification. Such Installable
-			Software Agreement must inform the user of the terms and conditions
-			that govern the Installable Software and must solicit acceptance by
-			the end user in the manner prescribed in such Installable Software
-			Agreement. Upon such indication of agreement by the user, the
-			provisioning Technology will complete installation of the Installable
-			Software.</li>
-	</ol>
-
-	<h3>Cryptography</h3>
-
-	<p>Content may contain encryption software. The country in which
-		you are currently may have restrictions on the import, possession, and
-		use, and/or re-export to another country, of encryption software.
-		BEFORE using any encryption software, please check the country's laws,
-		regulations and policies concerning the import, possession, or use,
-		and re-export of encryption software, to see if this is permitted.</p>
-
-	<p>
-		<small>Java and all Java-based trademarks are trademarks of
-			Oracle Corporation in the United States, other countries, or both.</small>
-	</p>
-</body>
-</html>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/pom.xml b/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/pom.xml
deleted file mode 100644
index 4f528a4..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.runtime-feature/pom.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>tesla</artifactId>
-    <groupId>org.eclipse.rcptt.tesla</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <groupId>org.eclipse.rcptt.tesla.features</groupId>
-  <artifactId>org.eclipse.rcptt.tesla.runtime</artifactId>
-  <packaging>eclipse-feature</packaging>
-</project>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/.classpath b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/.classpath
deleted file mode 100644
index ad32c83..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/META-INF/MANIFEST.MF b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/META-INF/MANIFEST.MF
deleted file mode 100644
index 4d0fe95..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tesla SWT Runtime for Eclipse 3.x
-Bundle-SymbolicName: org.eclipse.rcptt.tesla.swt.e3x;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Activator: org.eclipse.rcptt.tesla.swt.e3x.Activator
-Bundle-Vendor: Eclipse RCP Testing Tool Project
-Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,3.9.0)",
- org.eclipse.core.runtime,
- org.eclipse.rcptt.tesla.swt;bundle-version="[2.5.2,3.0.0)",
- org.eclipse.rcptt.tesla.core;bundle-version="[2.5.2,3.0.0)",
- org.aspectj.runtime,
- org.eclipse.rcptt.tesla.swt.aspects
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-ActivationPolicy: lazy
-
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/about.html b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/build.properties b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/build.properties
deleted file mode 100644
index aa77203..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               about.html
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/epl-v20.html b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/plugin.xml b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/plugin.xml
deleted file mode 100644
index 606a02e..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/plugin.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<plugin>
-   <extension
-         point="org.eclipse.rcptt.tesla.swt.workbenchProvider">
-      <workbenchProvider
-            class="org.eclipse.rcptt.tesla.swt.e3x.ClassicEclipseWorkbenchProvider">
-      </workbenchProvider>
-   </extension>
-
-</plugin>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/pom.xml b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/pom.xml
deleted file mode 100644
index 8439ca2..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/pom.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>tesla</artifactId>
-    <groupId>org.eclipse.rcptt.tesla</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.rcptt.tesla.swt.e3x</artifactId>
-  <packaging>eclipse-plugin</packaging>
-</project>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/Activator.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/Activator.java
deleted file mode 100644
index 784dfb5..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/Activator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-v20.html
- *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.tesla.swt.e3x;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.rcptt.tesla.swt.e3x"; //$NON-NLS-1$
-
-	// The shared instance
-	private static Activator plugin;
-	
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/ClassicEclipseWorkbenchProvider.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/ClassicEclipseWorkbenchProvider.java
deleted file mode 100644
index 0758fd5..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e3x/src/org/eclipse/rcptt/tesla/swt/e3x/ClassicEclipseWorkbenchProvider.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-v20.html
- *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.tesla.swt.e3x;
-
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.PartPane;
-import org.eclipse.ui.internal.PartSite;
-import org.eclipse.ui.internal.PartStack;
-import org.eclipse.ui.internal.Perspective;
-import org.eclipse.ui.internal.ViewPane;
-import org.eclipse.ui.internal.ViewStackTrimToolBar;
-import org.eclipse.ui.internal.WorkbenchPage;
-import org.eclipse.ui.internal.WorkbenchPartReference;
-import org.eclipse.ui.internal.presentations.PaneFolder;
-import org.eclipse.ui.internal.presentations.PaneFolderButtonListener;
-import org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder;
-import org.osgi.framework.Version;
-
-import org.eclipse.rcptt.tesla.internal.core.TeslaCore;
-import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIElement;
-import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIPlayer;
-import org.eclipse.rcptt.tesla.internal.ui.player.TeslaSWTAccess;
-import org.eclipse.rcptt.tesla.swt.workbench.IEclipseWorkbenchProvider;
-
-@SuppressWarnings("restriction")
-public class ClassicEclipseWorkbenchProvider implements
-		IEclipseWorkbenchProvider {
-
-	public Menu getViewMenu(IWorkbenchPart workbenchPart,
-			IWorkbenchPartReference reference, boolean create) {
-		if (workbenchPart.getSite() == null) {
-			return null;
-		}
-
-		PartPane pane = ((PartSite) workbenchPart.getSite()).getPane();
-		if (!(pane instanceof ViewPane)) {
-			return null;
-		}
-
-		MenuManager menuManager = ((ViewPane) pane).getMenuManager();
-		if (menuManager == null) {
-			return null;
-		}
-
-		Menu menu = menuManager.getMenu();
-		if (menu != null && !menu.isDisposed()) {
-			return menu;
-		}
-
-		if (!create) {
-			return null;
-		}
-
-		menuManager.createContextMenu(pane.getControl().getParent());
-		return menuManager.getMenu();
-	}
-
-	public List<?> getPaneFolderButtonListeners(Object paneFolder) {
-		try {
-			Field field = PaneFolder.class.getDeclaredField("buttonListeners");
-			field.setAccessible(true);
-			return (List<?>) field.get(paneFolder);
-		} catch (Throwable e) {
-			TeslaCore.log(e);
-		}
-		return null;
-	}
-
-	public Control getToolbar(IWorkbenchPartReference reference) {
-		return ((WorkbenchPartReference) reference).getPane().getToolBar();
-	}
-
-	public boolean canClickView(IWorkbenchPartReference reference) {
-		IWorkbenchPage page = reference.getPage();
-		Perspective perspective = ((WorkbenchPage) page).getActivePerspective();
-		IWorkbenchPart part = reference.getPart(true);
-		if (part != null && part instanceof IViewPart) {
-			if (!perspective.containsView((IViewPart) part)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	public Map<Control, SWTUIElement> getWorkbenchReference(SWTUIPlayer player) {
-		IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
-				.getWorkbenchWindows();
-		if (!Display.getCurrent()
-				.equals(PlatformUI.getWorkbench().getDisplay())) {
-			return new HashMap<Control, SWTUIElement>();
-		}
-		Map<Control, SWTUIElement> references = new HashMap<Control, SWTUIElement>();
-		for (IWorkbenchWindow iWorkbenchWindow : windows) {
-			// This is workbench window
-			IWorkbenchPage page = iWorkbenchWindow.getActivePage();
-			IEditorReference[] editors = page.getEditorReferences();
-			IViewReference[] views = page.getViewReferences();
-			for (IViewReference iViewReference : views) {
-				WorkbenchPartReference ref = ((WorkbenchPartReference) iViewReference);
-				if (ref.getVisible()) {
-					Control control = ref.getPane().getControl();
-					references.put(control, player.wrap(ref));
-					Control toolBar = ref.getPane().getToolBar();
-					if (toolBar != null) {
-						references.put(toolBar, player.wrap(ref));
-					}
-				}
-			}
-			for (IEditorReference iEditorReference : editors) {
-				WorkbenchPartReference ref = ((WorkbenchPartReference) iEditorReference);
-				if (ref.getVisible()) {
-					Control control = ref.getPane().getControl();
-					references.put(control, player.wrap(ref));
-					Control toolBar = ref.getPane().getToolBar();
-					if (toolBar != null) {
-						references.put(toolBar, player.wrap(ref));
-					}
-				}
-			}
-		}
-		return references;
-	}
-
-	public void processTabFolderButton(Widget widget, int buttonId) {
-		if (!(widget instanceof CTabFolder)) {
-			if (widget instanceof Control) {
-				Composite parent = ((Control) widget).getParent();
-				if (parent == null)
-					return;
-				for (Control c : parent.getChildren())
-					if (c instanceof CTabFolder && !c.isDisposed()) {
-						Object data = ((CTabFolder) c).getData();
-						if (data instanceof PartStack) {
-							PartStack stack = (PartStack) data;
-							PartPane selection = stack.getSelection();
-							if (selection != null
-									&& selection.getControl() == widget)
-								widget = c;
-						}
-					}
-			}
-		}
-
-		if (!(widget instanceof CTabFolder))
-			return;
-
-		// --
-
-		PaneFolder paneFolder = TeslaSWTAccess.getThis(PaneFolder.class,
-				widget, SWT.Dispose);
-		if (paneFolder != null) {
-			List<?> listenters = getPaneFolderButtonListeners(paneFolder);
-			for (Object listener : listenters) {
-				if (listener instanceof PaneFolderButtonListener) {
-					((PaneFolderButtonListener) listener)
-							.stateButtonPressed(buttonId);
-				}
-			}
-		}
-	}
-
-	public void processTabShowList(Widget widget) {
-		if (!(widget instanceof CTabFolder)) {
-			if (widget instanceof Control) {
-				Composite parent = ((Control) widget).getParent();
-				if (parent == null)
-					return;
-				for (Control c : parent.getChildren())
-					if (c instanceof CTabFolder && !c.isDisposed()) {
-						Object data = ((CTabFolder) c).getData();
-						if (data instanceof PartStack) {
-							PartStack stack = (PartStack) data;
-							PartPane selection = stack.getSelection();
-							if (selection != null
-									&& selection.getControl() == widget)
-								widget = c;
-						}
-					}
-			}
-		}
-
-		if (!(widget instanceof CTabFolder))
-			return;
-
-		// --
-
-		PaneFolder paneFolder = TeslaSWTAccess.getThis(PaneFolder.class,
-				widget, SWT.Dispose);
-		if (paneFolder != null) {
-			List<?> listenters = getPaneFolderButtonListeners(paneFolder);
-			for (Object listener : listenters) {
-				if (listener instanceof PaneFolderButtonListener) {
-					CTabFolderEvent event = TeslaSWTAccess
-							.createCTabFolderEvent(widget);
-					((PaneFolderButtonListener) listener).showList(event);
-				}
-			}
-		}
-	}
-
-	public boolean isVisible(IWorkbenchPartReference reference) {
-		return reference instanceof WorkbenchPartReference
-				&& ((WorkbenchPartReference) reference).getVisible();
-	}
-
-	public boolean isActiveContainsView(IWorkbenchPage page,
-			IWorkbenchPartReference reference) {
-		Perspective perspective = ((WorkbenchPage) page).getActivePerspective();
-		IWorkbenchPart part = reference.getPart(true);
-		if (part != null && part instanceof IViewPart) {
-			if (!perspective.containsView((IViewPart) part)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	public boolean isSupported() {
-		Version version = TeslaCore.getPlatformVersion();
-		int major = version.getMajor();
-		int minor = version.getMinor();
-		return major == 3 && minor > 4 && minor < 9;
-	}
-
-	private static final List<String> viewTooltips = Arrays.asList("View Menu",
-			"Maximize", "Minimize", "Restore");
-
-	public boolean isViewOrEditorButton(Widget widget) {
-		if (!(widget instanceof ToolItem))
-			return false;
-
-		ToolItem item = (ToolItem) widget;
-		if (!viewTooltips.contains(item.getToolTipText())) {
-			return false;
-		}
-
-		// view menu
-		if (TeslaSWTAccess.getThis(DefaultTabFolder.class, item.getParent(),
-				SWT.MouseDown) != null)
-			return true;
-
-		// restore button
-		if (TeslaSWTAccess.getThis(ViewStackTrimToolBar.class, item.getData()) != null)
-			return true;
-
-		return false;
-	}
-
-	public Widget extractViewOrEditorControl(CTabFolder tabFolder) {
-		Object data = tabFolder.getData();
-		if (data instanceof PartStack) {
-			PartStack stack = (PartStack) data;
-			PartPane selection = stack.getSelection();
-			if (selection != null)
-				return selection.getControl();
-		}
-
-		return null;
-	}
-
-	public CTabFolder getTabFolderFromButton(ToolItem button) {
-		// TODO Restore button support
-		return null;
-	}
-
-	public Text getQuickAccess() {
-		// no quick access on e3
-		return null;
-	}
-
-	public void updateActiveSelection(List<Object> selectionData,
-			SWTUIElement parent) {
-	}
-
-	public String getViewId(Widget widget) {
-		if (widget instanceof Composite)
-			for (Listener l : widget.getListeners(SWT.Activate))
-				if (l instanceof ViewPane)
-					return ((ViewPane) l).getID();
-
-		return null;
-	}
-}
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/META-INF/MANIFEST.MF b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/META-INF/MANIFEST.MF
index 4a2ac79..b42ef09 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/META-INF/MANIFEST.MF
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Tesla SWT Runtime for Eclipse 3.x
+Bundle-Name: Tesla SWT Runtime for Eclipse 4.x
 Bundle-SymbolicName: org.eclipse.rcptt.tesla.swt.e4x;singleton:=true
 Bundle-Version: 2.5.2.qualifier
 Bundle-Activator: org.eclipse.rcptt.tesla.swt.e4x.Activator
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/src/org/eclipse/rcptt/tesla/swt/e4x/Activator.java b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/src/org/eclipse/rcptt/tesla/swt/e4x/Activator.java
index 711bb07..055eb75 100644
--- a/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/src/org/eclipse/rcptt/tesla/swt/e4x/Activator.java
+++ b/runtime/tesla/org.eclipse.rcptt.tesla.swt.e4x/src/org/eclipse/rcptt/tesla/swt/e4x/Activator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
+ * Copyright (c) 2009, 2020 Xored Software Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
@@ -19,7 +19,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.rcptt.tesla.swt.e3x"; //$NON-NLS-1$
+	public static final String PLUGIN_ID = "org.eclipse.rcptt.tesla.swt.e4x"; //$NON-NLS-1$
 
 	// The shared instance
 	private static Activator plugin;
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/.classpath b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/.classpath
deleted file mode 100644
index 121e527..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/MANIFEST.MF b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/MANIFEST.MF
deleted file mode 100644
index 7a0c4df..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,23 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: RCPTT Runtime Workbench Support Aspects
-Bundle-SymbolicName: org.eclipse.rcptt.tesla.workbench.aspects;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Vendor: Eclipse RCP Testing Tool Project
-Require-Bundle: org.aspectj.runtime;visibility:=reexport,
- org.eclipse.swt,
- org.eclipse.core.runtime,
- org.eclipse.rcptt.tesla.core.context;bundle-version="[2.5.2,3.0.0)",
- org.eclipse.rcptt.tesla.core.am;bundle-version="[2.5.2,3.0.0)",
- org.eclipse.rcptt.tesla.swt;bundle-version="[2.5.2,3.0.0)",
- org.eclipse.rcptt.tesla.swt.aspects;bundle-version="[2.5.2,3.0.0)",
- org.eclipse.ui.workbench;bundle-version="[3.5.0,3.9.0]",
- org.eclipse.rcptt.tesla.recording.aspects.swt;bundle-version="[2.5.2,3.0.0)"
-onEnvironment: JavaSE-1.6
-Import-Package: org.osgi.framework
-Eclipse-SupplementBundle: org.eclipse.ui.workbench
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.rcptt.tesla.workbench.aspects
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-Activator: org.eclipse.rcptt.tesla.workbench.aspects.WorkbenchAspectActivator
-
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/aop.xml b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/aop.xml
deleted file mode 100644
index 324db01..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/META-INF/aop.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<aspectj>
-	<aspects>
-		<aspect name="org.eclipse.rcptt.tesla.workbench.aspects.WorkbenchAspect" />
-	</aspects>
-	<weaver options="-verbose -Xset:typeDemotion=true" />
-</aspectj>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/about.html b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/build.properties b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/build.properties
deleted file mode 100644
index b04b36c..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               about.html
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/epl-v20.html b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/pom.xml b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/pom.xml
deleted file mode 100644
index 591eb45..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/pom.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>tesla</artifactId>
-    <groupId>org.eclipse.rcptt.tesla</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.rcptt.tesla.workbench.aspects</artifactId>
-  <packaging>eclipse-plugin</packaging>
-  <dependencies>
-    <dependency>
-      <groupId>org.aspectj</groupId>
-      <artifactId>aspectjrt</artifactId>
-      <version>${aspectj_dep}</version>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>${tycho-groupid}</groupId>
-        <artifactId>tycho-compiler-plugin</artifactId>
-        <configuration>
-          <excludeResources>
-            <exludeResource>**/*.aj</exludeResource>
-          </excludeResources>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>aspectj-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>compile</id>
-            <configuration>
-              <source>${ajJavaSource}</source>
-              <target>${ajJavaTarget}</target>
-              <complianceLevel>${ajJavaCompilance}</complianceLevel>
-              <aspectDirectory>src</aspectDirectory>
-              <Xlint>ignore</Xlint>
-              <Xreweavable>true</Xreweavable>
-              <deprecation>true</deprecation>
-              <!--ajdtBuildDefFile>build-1-5.ajproperties</ajdtBuildDefFile-->
-            </configuration>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspect.aj b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspect.aj
deleted file mode 100644
index 65270db..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspect.aj
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.eclipse.rcptt.tesla.workbench.aspects;
-
-import java.util.WeakHashMap;
-
-import org.aspectj.lang.annotation.SuppressAjWarnings;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.internal.keys.OutOfOrderListener;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.PageBook.PageBookLayout;
-import org.eclipse.ui.presentations.IStackPresentationSite;
-import org.eclipse.ui.statushandlers.StatusAdapter;
-import org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager;
-
-import org.eclipse.rcptt.tesla.core.am.AspectManager;
-import org.eclipse.rcptt.tesla.internal.ui.player.SWTUIPlayer;
-import org.eclipse.rcptt.tesla.internal.ui.player.TeslaSWTAccess;
-import org.eclipse.rcptt.tesla.recording.aspects.SWTEventManager;
-import org.eclipse.rcptt.tesla.swt.events.TeslaEventManager;
-
-
-@SuppressWarnings("all")
-public aspect WorkbenchAspect {
-	public WorkbenchAspect() {
-		AspectManager.activateAspect(WorkbenchAspectActivator.PLUGIN_ID, this
-				.getClass().getName());
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	Object around(WorkbenchStatusDialogManager mgr, StatusAdapter adapter,
-			boolean modal):
-		execution(void org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager.addStatusAdapter(StatusAdapter, boolean))
-		&& target(mgr) && args(adapter, modal) {
-		if (!TeslaEventManager.getManager().hasListeners()) {
-			return proceed(mgr, adapter, modal);
-		} else if (TeslaEventManager.getManager().isStatusDialogModeAllowed()) {
-			return proceed(mgr, adapter, modal);
-		}
-
-		return null;
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	Object around(PageBookLayout layout, Composite ctrl, boolean flushCache):
-		execution(void org.eclipse.ui.part.PageBook.PageBookLayout.layout(Composite, boolean)) && target(layout) && args(ctrl,flushCache) {
-		try {
-			Object object = TeslaSWTAccess.getThis(layout);
-			if (object != null) {
-				PageBook book = (PageBook) object;
-				Control page = TeslaSWTAccess.getBookPage(book);
-				if (page != null && page.isDisposed()) {
-					return null; // Ignore layout if page is disposed.
-				}
-			}
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-
-		return proceed(layout, ctrl, flushCache);
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	Object around(org.eclipse.ui.internal.PageLayout layout, String partId):
-		execution(boolean org.eclipse.ui.internal.PageLayout.checkPartInLayout(String)) &&target(layout) && args(partId) {
-		try {
-			if (TeslaEventManager.getManager().hasListeners()) {
-				try {
-					Object refPart = TeslaSWTAccess.callMethod(
-							org.eclipse.ui.internal.PageLayout.class, layout,
-							"getRefPart", partId);
-					if (refPart != null) {
-						return true;
-					}
-					Boolean fastView = (Boolean) TeslaSWTAccess.callMethod(
-							org.eclipse.ui.internal.PageLayout.class, layout,
-							"isFastViewId", partId);
-
-					if (fastView) {
-						return true;
-					}
-					return false;
-				} catch (Throwable e) {
-					WorkbenchAspectActivator.log(e);
-				}
-			}
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-		return proceed(layout, partId);
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	before(org.eclipse.ui.internal.presentations.PaneFolder paneFolder,
-			int buttonId): execution(void org.eclipse.ui.internal.presentations.PaneFolder.notifyButtonListeners(int)) && target(paneFolder) && args(buttonId) {
-		try {
-			int eventId = -1;
-			if (buttonId == IStackPresentationSite.STATE_MINIMIZED) {
-				eventId = SWTEventManager.EVENT_TAB_MINIMIZE;
-			} else if (buttonId == IStackPresentationSite.STATE_MAXIMIZED) {
-				eventId = SWTEventManager.EVENT_TAB_MAXIMIZE;
-			} else if (buttonId == IStackPresentationSite.STATE_RESTORED) {
-				eventId = SWTEventManager.EVENT_TAB_RESTORE;
-			}
-			if (eventId != -1) {
-				SWTEventManager.recordTabFolderEvent(paneFolder.getControl(),
-						eventId);
-			}
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	before(org.eclipse.ui.internal.presentations.PaneFolder paneFolder,
-			CTabFolderEvent event): execution(void org.eclipse.ui.internal.presentations.PaneFolder.notifyShowListeners(CTabFolderEvent)) && target(paneFolder) && args(event) {
-		try {
-			SWTEventManager.recordTabFolderEvent(paneFolder.getControl(),
-					SWTEventManager.EVENT_TAB_SHOW_LIST);
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	boolean around(OutOfOrderListener listener, int time):
-		execution(boolean org.eclipse.ui.internal.keys.OutOfOrderListener.isActive(int)) && target(listener) && args(time) {
-		if (TeslaEventManager.getManager().hasListeners()) {
-			try {
-				if (lastWidgets.containsKey(time)) {
-					Listener[] listeners = lastWidgets.get(time).getListeners(
-							SWT.KeyDown);
-					boolean returnFalse = false;
-					if (listeners != null) {
-						for (Listener l : listeners) {
-							if (l instanceof OutOfOrderListener) {
-								returnFalse = true;
-								break;
-							}
-						}
-					}
-					// Return true if listener required to be added and false
-					// overwize.
-					return returnFalse;
-				}
-			} catch (Throwable e) {
-				WorkbenchAspectActivator.log(e);
-			}
-		}
-		return proceed(listener, time);
-	}
-
-	WeakHashMap<Integer, Widget> lastWidgets = new WeakHashMap<Integer, Widget>();
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	before(Event event):
-		execution(void org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(Event)) && args(event) {
-		try {
-			lastWidgets.put(event.time, event.widget);
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	after(Event event):
-		execution(void org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(Event)) && args(event) {
-		try {
-			lastWidgets.remove(event.time);
-		} catch (Throwable e) {
-			WorkbenchAspectActivator.log(e);
-		}
-	}
-
-	@SuppressAjWarnings("adviceDidNotMatch")
-	after(org.eclipse.ui.internal.keys.WorkbenchKeyboard wk,
-			@SuppressWarnings("rawtypes") java.util.List potentialKeyStrokes,
-			org.eclipse.swt.widgets.Event event) returning (boolean result):
-				execution(boolean org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(java.util.List, org.eclipse.swt.widgets.Event)) && target(wk) && args(potentialKeyStrokes, event) {
-		SWTUIPlayer.lastWorkbenchKeyboardPressResult = result;
-	}
-}
diff --git a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspectActivator.java b/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspectActivator.java
deleted file mode 100644
index 99762b8..0000000
--- a/runtime/tesla/org.eclipse.rcptt.tesla.workbench.aspects/src/org/eclipse/rcptt/tesla/workbench/aspects/WorkbenchAspectActivator.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2019 Xored Software Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-v20.html
- *
- * Contributors:
- *     Xored Software Inc - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.rcptt.tesla.workbench.aspects;
-
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.BundleContext;
-
-import org.eclipse.rcptt.tesla.core.am.AspectManager;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class WorkbenchAspectActivator extends Plugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.rcptt.tesla.workbench.aspects";
-
-	// The shared instance
-	private static WorkbenchAspectActivator plugin;
-
-	/**
-	 * The constructor
-	 */
-	public WorkbenchAspectActivator() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
-	 * )
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-		AspectManager.activateBundle(PLUGIN_ID);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
-	 * )
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static WorkbenchAspectActivator getDefault() {
-		return plugin;
-	}
-
-	public static void log(Throwable t) {
-		getDefault().getLog().log(
-				new Status(Status.ERROR, PLUGIN_ID,
-						"Tesla Replaying SWT ERROR", t));
-	}
-
-}
diff --git a/runtime/tesla/pom.xml b/runtime/tesla/pom.xml
index 68e3e69..1eaf37b 100644
--- a/runtime/tesla/pom.xml
+++ b/runtime/tesla/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -66,19 +66,11 @@
   
   <profiles>
     <profile>
-      <id>runtime3x</id>
-      <modules>
-	<module>org.eclipse.rcptt.tesla.runtime-feature</module>
-	<module>org.eclipse.rcptt.tesla.swt.e3x</module>
-	<module>org.eclipse.rcptt.tesla.workbench.aspects</module>
-      </modules>
-    </profile>
-    <profile>
       <id>runtime4x</id>
       <modules>
-	<module>org.eclipse.rcptt.tesla.runtime.e4x-feature</module>
-	<module>org.eclipse.rcptt.tesla.swt.e4x</module>
-	<module>org.eclipse.rcptt.tesla.workbench.aspects.e4x</module>
+        <module>org.eclipse.rcptt.tesla.runtime.e4x-feature</module>
+        <module>org.eclipse.rcptt.tesla.swt.e4x</module>
+        <module>org.eclipse.rcptt.tesla.workbench.aspects.e4x</module>
       </modules>
     </profile>
   </profiles>
diff --git a/runtime/tests/pom.xml b/runtime/tests/pom.xml
index 4e3a0d9..e3129f2 100644
--- a/runtime/tests/pom.xml
+++ b/runtime/tests/pom.xml
@@ -82,12 +82,6 @@
 				<module>org.eclipse.rcptt.watson.test</module>
 			</modules>
 		</profile>
-		<profile>
-			<id>runtime3x</id>
-			<properties>
-				<hookVersion>1.0.200.I20120427-0800</hookVersion>
-			</properties>
-		</profile>
 	</profiles>
 	<artifactId>rcptt.runtime.tests</artifactId>
 	<packaging>pom</packaging>
diff --git a/runtime/updates/org.eclipse.rcptt.updates-feature/feature.xml b/runtime/updates/org.eclipse.rcptt.updates-feature/feature.xml
index 5d2803e..2dccc29 100644
--- a/runtime/updates/org.eclipse.rcptt.updates-feature/feature.xml
+++ b/runtime/updates/org.eclipse.rcptt.updates-feature/feature.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
+    Copyright (c) 2009, 2020 Xored Software Inc and others.
     All rights reserved. This program and the accompanying materials
     are made available under the terms of the Eclipse Public License v2.0
     which accompanies this distribution, and is available at
@@ -33,27 +33,12 @@
    </requires>
 
    <plugin
-         id="org.eclipse.rcptt.updates.runtime"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.rcptt.updates.runtime.e4x"
          download-size="0"
          install-size="0"
          version="2.5.2.qualifier"
          unpack="false"/>
 
-
-   <plugin
-         id="org.eclipse.rcptt.updates.helios"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
    <plugin
          id="org.eclipse.rcptt.updates.kepler"
          download-size="0"
@@ -62,20 +47,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.rcptt.updates.aspectj.e3x"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.rcptt.updates.aspectj.e38x"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.rcptt.updates.aspectj.e44x"
          download-size="0"
          install-size="0"
@@ -96,5 +67,4 @@
          version="2.5.2.qualifier"
          unpack="false"/>
 
-
 </feature>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/.project b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/.project
deleted file mode 100644
index 1b6c51d..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.updates.e3x-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/build.properties b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/build.properties
deleted file mode 100644
index 92caa25..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = feature.xml,\
-			   feature.properties,\
-			   license.html,\
-			   epl-v20.html			   
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/epl-v20.html b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.properties b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.properties
deleted file mode 100644
index 1e7a164..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.properties
+++ /dev/null
@@ -1,164 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName=Eclipse RCP Testing Tool Project
-copyrightURL=epl-v20.html
-copyright=\
-Copyright (c) 2009, 2019 Xored Software Inc and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v2.0\n\
-which accompanies this distribution, and is available at\n\
-https://www.eclipse.org/legal/epl-v20.html\n\
-\n\
-Contributors:\n\
-    Xored Software Inc - initial API and implementation and/or initial documentation\n
-licenseURL=license.html
-license=\
-Eclipse Foundation Software User Agreement\n\
-\n\
-November 22, 2017\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY\n\
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
-MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public License\n\
-Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
-available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
-"Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code, documentation\n\
-and other files maintained in the Eclipse Foundation source code repository\n\
-("Repository") in software modules ("Modules") and made available as\n\
-downloadable archives ("Downloads").\n\
-\n\
--   Content may be structured and packaged into modules to facilitate\n\
-    delivering, extending, and upgrading the Content. Typical modules may\n\
-    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
-    features ("Features").\n\
--   Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
-    (Java\u2122 ARchive) in a directory named "plugins".\n\
--   A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
-    associated material. Each Feature may be packaged as a sub-directory in a\n\
-    directory named "features". Within a Feature, files named "feature.xml" may\n\
-    contain a list of the names and version numbers of the Plug-ins and/or\n\
-    Fragments associated with that Feature.\n\
--   Features may also include other Features ("Included Features"). Within a\n\
-    Feature, files named "feature.xml" may contain a list of the names and\n\
-    version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be contained in\n\
-files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
-and Included Features should be contained in files named "license.html"\n\
-("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
-directory of a Download or Module including, but not limited to the following\n\
-locations:\n\
-\n\
--   The top-level (root) directory\n\
--   Plug-in and Fragment directories\n\
--   Inside Plug-ins and Fragments packaged as JARs\n\
--   Sub-directories of the directory named "src" of certain Plug-ins\n\
--   Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using\n\
-the Provisioning Technology (as defined below), you must agree to a license\n\
-("Feature Update License") during the installation process. If the Feature\n\
-contains Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform you\n\
-where you can locate them. Feature Update Licenses may be found in the "license"\n\
-property of files named "feature.properties" found within a Feature. Such\n\
-Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your use of\n\
-the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
--   Eclipse Public License Version 1.0 (available at\n\
-    http://www.eclipse.org/legal/epl-v10.html)\n\
--   Eclipse Distribution License Version 1.0 (available at\n\
-    http://www.eclipse.org/licenses/edl-v1.0.html)\n\
--   Common Public License Version 1.0 (available at\n\
-    http://www.eclipse.org/legal/cpl-v10.html)\n\
--   Apache Software License 1.1 (available at\n\
-    http://www.apache.org/licenses/LICENSE)\n\
--   Apache Software License 2.0 (available at\n\
-    http://www.apache.org/licenses/LICENSE-2.0)\n\
--   Mozilla Public License Version 1.1 (available at\n\
-    http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
-USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
-provided, please contact the Eclipse Foundation to determine what terms and\n\
-conditions govern that particular Content.\n\
-\n\
-Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which\n\
-include, but are not limited to, p2 and the Eclipse Update Manager\n\
-("Provisioning Technology") for the purpose of allowing users to install\n\
-software, documentation, information and/or other materials (collectively\n\
-"Installable Software"). This capability is provided with the intent of allowing\n\
-such users to install, extend and update Eclipse-based products. Information\n\
-about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install\n\
-Installable Software. You shall be responsible for enabling the applicable\n\
-license agreements relating to the Installable Software to be presented to, and\n\
-accepted by, the users of the Provisioning Technology in accordance with the\n\
-Specification. By using Provisioning Technology in such a manner and making it\n\
-available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the\n\
-following:\n\
-\n\
-1.  A series of actions may occur ("Provisioning Process") in which a user may\n\
-    execute the Provisioning Technology on a machine ("Target Machine") with the\n\
-    intent of installing, extending or updating the functionality of an\n\
-    Eclipse-based product.\n\
-2.  During the Provisioning Process, the Provisioning Technology may cause third\n\
-    party Installable Software or a portion thereof to be accessed and copied to\n\
-    the Target Machine.\n\
-3.  Pursuant to the Specification, you will provide to the user the terms and\n\
-    conditions that govern the use of the Installable Software ("Installable\n\
-    Software Agreement") and such Installable Software Agreement shall be\n\
-    accessed from the Target Machine in accordance with the Specification. Such\n\
-    Installable Software Agreement must inform the user of the terms and\n\
-    conditions that govern the Installable Software and must solicit acceptance\n\
-    by the end user in the manner prescribed in such Installable\n\
-    Software Agreement. Upon such indication of agreement by the user, the\n\
-    provisioning Technology will complete installation of the\n\
-    Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are currently\n\
-may have restrictions on the import, possession, and use, and/or re-export to\n\
-another country, of encryption software. BEFORE using any encryption software,\n\
-please check the country's laws, regulations and policies concerning the import,\n\
-possession, or use, and re-export of encryption software, to see if this is\n\
-permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
-United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.xml b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.xml
deleted file mode 100644
index eff4696..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/feature.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<feature
-      id="org.eclipse.rcptt.updates.e3x"
-      label="RCPTT Runtime Sites"
-      version="2.5.2.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      Prepared update sites with RCP Runtime and RCP Runtime prerequsites for ganymede..indigo
-   </description>
-
-   <copyright url="%copyrightURL">
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.rcptt.updates.runtime"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-   <plugin
-         id="org.eclipse.rcptt.util.swt"
-         download-size="0"
-         install-size="0"
-         version="2.5.2.qualifier"
-         unpack="false"/>
-
-</feature>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/license.html b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/license.html
deleted file mode 100644
index 15dfad9..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/license.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-	<h2>Eclipse Foundation Software User Agreement</h2>
-	<p>November 22, 2017</p>
-
-	<h3>Usage Of Content</h3>
-
-	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
-		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
-		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
-		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
-		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
-		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
-		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
-		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
-		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
-		USE THE CONTENT.</p>
-
-	<h3>Applicable Licenses</h3>
-
-	<p>
-		Unless otherwise indicated, all Content made available by the Eclipse
-		Foundation is provided to you under the terms and conditions of the
-		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
-		EPL is provided with this Content and is also available at <a
-			href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>Content includes, but is not limited to, source code, object
-		code, documentation and other files maintained in the Eclipse
-		Foundation source code repository (&quot;Repository&quot;) in software
-		modules (&quot;Modules&quot;) and made available as downloadable
-		archives (&quot;Downloads&quot;).</p>
-
-	<ul>
-		<li>Content may be structured and packaged into modules to
-			facilitate delivering, extending, and upgrading the Content. Typical
-			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
-			fragments (&quot;Fragments&quot;), and features
-			(&quot;Features&quot;).</li>
-		<li>Each Plug-in or Fragment may be packaged as a sub-directory
-			or JAR (Java&trade; ARchive) in a directory named
-			&quot;plugins&quot;.</li>
-		<li>A Feature is a bundle of one or more Plug-ins and/or
-			Fragments and associated material. Each Feature may be packaged as a
-			sub-directory in a directory named &quot;features&quot;. Within a
-			Feature, files named &quot;feature.xml&quot; may contain a list of
-			the names and version numbers of the Plug-ins and/or Fragments
-			associated with that Feature.</li>
-		<li>Features may also include other Features (&quot;Included
-			Features&quot;). Within a Feature, files named
-			&quot;feature.xml&quot; may contain a list of the names and version
-			numbers of Included Features.</li>
-	</ul>
-
-	<p>The terms and conditions governing Plug-ins and Fragments should
-		be contained in files named &quot;about.html&quot;
-		(&quot;Abouts&quot;). The terms and conditions governing Features and
-		Included Features should be contained in files named
-		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
-		Feature Licenses may be located in any directory of a Download or
-		Module including, but not limited to the following locations:</p>
-
-	<ul>
-		<li>The top-level (root) directory</li>
-		<li>Plug-in and Fragment directories</li>
-		<li>Inside Plug-ins and Fragments packaged as JARs</li>
-		<li>Sub-directories of the directory named &quot;src&quot; of
-			certain Plug-ins</li>
-		<li>Feature directories</li>
-	</ul>
-
-	<p>Note: if a Feature made available by the Eclipse Foundation is
-		installed using the Provisioning Technology (as defined below), you
-		must agree to a license (&quot;Feature Update License&quot;) during
-		the installation process. If the Feature contains Included Features,
-		the Feature Update License should either provide you with the terms
-		and conditions governing the Included Features or inform you where you
-		can locate them. Feature Update Licenses may be found in the
-		&quot;license&quot; property of files named
-		&quot;feature.properties&quot; found within a Feature. Such Abouts,
-		Feature Licenses, and Feature Update Licenses contain the terms and
-		conditions (or references to such terms and conditions) that govern
-		your use of the associated Content in that directory.</p>
-
-	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
-		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
-		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
-		ARE NOT LIMITED TO):</p>
-
-	<ul>
-		<li>Eclipse Public License Version 1.0 (available at <a
-			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
-		</li>
-		<li>Eclipse Distribution License Version 1.0 (available at <a
-			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
-		</li>
-		<li>Common Public License Version 1.0 (available at <a
-			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
-		</li>
-		<li>Apache Software License 1.1 (available at <a
-			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
-		</li>
-		<li>Apache Software License 2.0 (available at <a
-			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
-		</li>
-		<li>Mozilla Public License Version 1.1 (available at <a
-			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
-		</li>
-	</ul>
-
-	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
-		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
-		or Feature Update License is provided, please contact the Eclipse
-		Foundation to determine what terms and conditions govern that
-		particular Content.</p>
-
-
-	<h3>Use of Provisioning Technology</h3>
-
-	<p>
-		The Eclipse Foundation makes available provisioning software, examples
-		of which include, but are not limited to, p2 and the Eclipse Update
-		Manager (&quot;Provisioning Technology&quot;) for the purpose of
-		allowing users to install software, documentation, information and/or
-		other materials (collectively &quot;Installable Software&quot;). This
-		capability is provided with the intent of allowing such users to
-		install, extend and update Eclipse-based products. Information about
-		packaging Installable Software is available at <a
-			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-		(&quot;Specification&quot;).
-	</p>
-
-	<p>You may use Provisioning Technology to allow other parties to
-		install Installable Software. You shall be responsible for enabling
-		the applicable license agreements relating to the Installable Software
-		to be presented to, and accepted by, the users of the Provisioning
-		Technology in accordance with the Specification. By using Provisioning
-		Technology in such a manner and making it available in accordance with
-		the Specification, you further acknowledge your agreement to, and the
-		acquisition of all necessary rights to permit the following:</p>
-
-	<ol>
-		<li>A series of actions may occur (&quot;Provisioning
-			Process&quot;) in which a user may execute the Provisioning
-			Technology on a machine (&quot;Target Machine&quot;) with the intent
-			of installing, extending or updating the functionality of an
-			Eclipse-based product.</li>
-		<li>During the Provisioning Process, the Provisioning Technology
-			may cause third party Installable Software or a portion thereof to be
-			accessed and copied to the Target Machine.</li>
-		<li>Pursuant to the Specification, you will provide to the user
-			the terms and conditions that govern the use of the Installable
-			Software (&quot;Installable Software Agreement&quot;) and such
-			Installable Software Agreement shall be accessed from the Target
-			Machine in accordance with the Specification. Such Installable
-			Software Agreement must inform the user of the terms and conditions
-			that govern the Installable Software and must solicit acceptance by
-			the end user in the manner prescribed in such Installable Software
-			Agreement. Upon such indication of agreement by the user, the
-			provisioning Technology will complete installation of the Installable
-			Software.</li>
-	</ol>
-
-	<h3>Cryptography</h3>
-
-	<p>Content may contain encryption software. The country in which
-		you are currently may have restrictions on the import, possession, and
-		use, and/or re-export to another country, of encryption software.
-		BEFORE using any encryption software, please check the country's laws,
-		regulations and policies concerning the import, possession, or use,
-		and re-export of encryption software, to see if this is permitted.</p>
-
-	<p>
-		<small>Java and all Java-based trademarks are trademarks of
-			Oracle Corporation in the United States, other countries, or both.</small>
-	</p>
-</body>
-</html>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/pom.xml b/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/pom.xml
deleted file mode 100644
index 14b3368..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.e3x-feature/pom.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>rcptt.runtime.updates</artifactId>
-    <groupId>org.eclipse.rcptt</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <groupId>org.eclipse.rcptt.features</groupId>
-  <artifactId>org.eclipse.rcptt.updates.e3x</artifactId>
-  <packaging>eclipse-feature</packaging>
-</project>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/.project b/runtime/updates/org.eclipse.rcptt.updates.runtime/.project
deleted file mode 100644
index d0521db..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.rcptt.updates.runtime</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/META-INF/MANIFEST.MF b/runtime/updates/org.eclipse.rcptt.updates.runtime/META-INF/MANIFEST.MF
deleted file mode 100644
index 37ee024..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.rcptt.updates.runtime;singleton:=true
-Bundle-Version: 2.5.2.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Eclipse-BundleShape: dir
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.html b/runtime/updates/org.eclipse.rcptt.updates.runtime/about.html
deleted file mode 100644
index 74354e3..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.ini b/runtime/updates/org.eclipse.rcptt.updates.runtime/about.ini
deleted file mode 100644
index e24f662..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=featureImage.png
-aboutText=%blurb
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.properties b/runtime/updates/org.eclipse.rcptt.updates.runtime/about.properties
deleted file mode 100644
index c8fae8b..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/about.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-blurb=RCPTT Runtime Sites\n\
-\n\
-Version: {featureVersion}\n\
-\n\
-(c) Copyright (c) 2009, 2019 Xored Software Inc and others.  All rights reserved.\n\
-Visit http://www.eclipse.org/rcptt
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/build.properties b/runtime/updates/org.eclipse.rcptt.updates.runtime/build.properties
deleted file mode 100644
index d1b26fe..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-bin.includes = META-INF/,\
-               plugin.xml,\
-               q7/,\
-               plugin.properties,\
-               about.html,\
-               about.ini,\
-               about.properties,\
-               featureImage.png
-
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/epl-v20.html b/runtime/updates/org.eclipse.rcptt.updates.runtime/epl-v20.html
deleted file mode 100644
index 637a181..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/epl-v20.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/featureImage.png b/runtime/updates/org.eclipse.rcptt.updates.runtime/featureImage.png
deleted file mode 100644
index 344c74b..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/featureImage.png
+++ /dev/null
Binary files differ
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.properties b/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.properties
deleted file mode 100644
index a2a12da..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2019 Xored Software Inc and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v2.0
-# which accompanies this distribution, and is available at
-# https://www.eclipse.org/legal/epl-v20.html
-#
-# Contributors:
-#     Xored Software Inc - initial API and implementation and/or initial documentation
-###############################################################################
-providerName = Eclipse RCP Testing Tool Project
-pluginName = RCPTT Runtime for 3.x AUTs
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.xml b/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.xml
deleted file mode 100644
index 9139651..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/plugin.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<plugin>
-   <extension
-         point="org.eclipse.rcptt.launching.ext.q7runtime">
-      <q7runtime
-            kind="runtime"
-            path="platform:///plugin/org.eclipse.rcptt.updates.runtime/q7/"
-            version="[3.4,3.9)">
-      </q7runtime>
-   </extension>
-</plugin>
diff --git a/runtime/updates/org.eclipse.rcptt.updates.runtime/pom.xml b/runtime/updates/org.eclipse.rcptt.updates.runtime/pom.xml
deleted file mode 100644
index 77179e8..0000000
--- a/runtime/updates/org.eclipse.rcptt.updates.runtime/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>rcptt.runtime.updates</artifactId>
-    <groupId>org.eclipse.rcptt</groupId>
-    <version>2.5.2-SNAPSHOT</version>
-  </parent>
-  <artifactId>org.eclipse.rcptt.updates.runtime</artifactId>
-  <packaging>eclipse-plugin</packaging>
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-clean-plugin</artifactId>
-        <configuration>
-          <filesets>
-            <fileset>
-              <directory>q7</directory>
-              <includes>
-                <include>**/*.*</include>
-              </includes>
-            </fileset>
-          </filesets>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-resources</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${basedir}/q7</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>../../org.eclipse.rcptt.runtime-updatesite/target/repository/</directory>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>${tycho-groupid}</groupId>
-        <artifactId>tycho-packaging-plugin</artifactId>
-        <configuration>
-          <timestampProvider>default</timestampProvider>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>enforce-artifacts</id>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <phase>compile</phase>
-            <configuration>
-              <rules>
-                <requireFilesExist>
-                  <files>
-                   <file>${basedir}/q7/artifacts.jar</file>
-                   <file>${basedir}/q7/content.jar</file>
-                  </files>
-                </requireFilesExist>
-              </rules>
-              <fail>true</fail>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/runtime/updates/pom.xml b/runtime/updates/pom.xml
index 61d2acd..f78ee5a 100644
--- a/runtime/updates/pom.xml
+++ b/runtime/updates/pom.xml
@@ -19,13 +19,6 @@
   </parent>
   <profiles>
     <profile>
-      <id>runtime3x</id>
-      <modules>
-	      <module>org.eclipse.rcptt.updates.runtime</module>
-	      <module>org.eclipse.rcptt.updates.e3x-feature</module>
-      </modules>
-    </profile>
-    <profile>
       <id>runtime4x</id>
       <modules>
 	      <module>org.eclipse.rcptt.updates.runtime.e4x</module>
diff --git a/xored_settings.xml b/xored_settings.xml
deleted file mode 100644
index 4c23059..0000000
--- a/xored_settings.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-    Copyright (c) 2009, 2019 Xored Software Inc and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License v2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-v20.html
-     
-    Contributors:
-    	Xored Software Inc - initial API and implementation and/or initial documentation
- -->
-<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
-                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
-  <mirrors>
-    <mirror>
-      <id>helios-xored</id>
-      <mirrorOf>indigo</mirrorOf>
-      <name>Xored idnigo</name>
-      <url>http://updates.xored.com/indigo/</url>
-      <layout>p2</layout>
-      <mirrorOfLayouts>p2</mirrorOfLayouts>
-    </mirror>
-    <mirror>
-      <id>indigo-xored</id>
-      <mirrorOf>indigo</mirrorOf>
-      <name>Xored indigo</name>
-      <url>http://updates.xored.com/indigo/</url>
-      <layout>p2</layout>
-      <mirrorOfLayouts>p2</mirrorOfLayouts>
-    </mirror>
-    <mirror>
-      <id>juno-xored</id>
-      <mirrorOf>juno</mirrorOf>
-      <url>http://updates.xored.com/juno</url>
-      <layout>p2</layout>
-      <mirrorOfLayouts>p2</mirrorOfLayouts>
-    </mirror>
-    <mirror>
-      <id>kepler-xored</id>
-      <mirrorOf>kepler</mirrorOf>
-      <url>http://updates.xored.com/kepler</url>
-      <layout>p2</layout>
-      <mirrorOfLayouts>p2</mirrorOfLayouts>
-    </mirror>
-  </mirrors>
-  <profiles>
-    <profile>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-      </activation>
-      <tycho.localArtifacts>ignore</tycho.localArtifacts>
-    </profile>
-  </profiles>
-
-
-</settings>
\ No newline at end of file
