diff --git a/features/org.eclipse.app4mc.multicore/feature.xml b/features/org.eclipse.app4mc.multicore/feature.xml
index 52ae826..f9eedaa 100644
--- a/features/org.eclipse.app4mc.multicore/feature.xml
+++ b/features/org.eclipse.app4mc.multicore/feature.xml
@@ -48,28 +48,14 @@
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-<!--
-   <plugin
-         id="org.eclipse.app4mc.multicore.partitioning"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
--->
+
    <plugin
          id="org.eclipse.app4mc.multicore.sharelibs"
          download-size="0"
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-<!--
-   <plugin
-         id="org.eclipse.app4mc.multicore.dialogs"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
--->
+
    <plugin
          id="org.eclipse.app4mc.multicore.execution.logic"
          download-size="0"
@@ -99,25 +85,12 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.app4mc.multicore.execution.ui.traceeditor"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.app4mc.multicore.execution.ui.traceview"
          download-size="0"
          install-size="0"
          version="0.0.0"
          unpack="false"/>
-<!--
-   <plugin
-         id="org.apache.commons.math"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"/>
--->
+
    <plugin
          id="org.jgrapht"
          download-size="0"
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.classpath b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.classpath
deleted file mode 100755
index eca7bdb..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.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.8"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.gitignore b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.gitignore
deleted file mode 100755
index fc7bea0..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin
-/target
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.project b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.project
deleted file mode 100755
index f0a0070..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.app4mc.multicore.execution.ui.widget.traceeditor</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<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>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100755
index a229c06..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,10 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/META-INF/MANIFEST.MF
deleted file mode 100755
index 90309a4..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: APP4MC Multicore TraceEditor
-Bundle-SymbolicName: org.eclipse.app4mc.multicore.execution.ui.traceeditor;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.jface.text,
- org.eclipse.ui.editors,
- org.eclipse.ui.ide,
- org.junit,
- org.eclipse.emf.common,
- org.eclipse.app4mc.multicore.execution.logic,
- org.eclipse.app4mc.multicore.execution.logic.btf,
- org.eclipse.app4mc.multicore.execution.ui.widget
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.core.resources
-Bundle-Vendor: Eclipse APP4MC
-Automatic-Module-Name: org.eclipse.app4mc.multicore.execution.ui.traceeditor
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/about.html b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/about.html
deleted file mode 100755
index 164f781..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/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="http://www.eclipse.org/legal/epl-2.0">http://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>
\ No newline at end of file
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/build.properties b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/build.properties
deleted file mode 100755
index 659be1e..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2017, 2018 Dortmund University of Applied Sciences and Arts and others.
-#
-# This program and the accompanying materials are made
-# available under the terms of the Eclipse Public License 2.0
-# which is available at https://www.eclipse.org/legal/epl-2.0/
-#  
-# SPDX-License-Identifier: EPL-2.0
-#  
-# Contributors:
-#   Dortmund University of Applied Sciences and Arts - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = plugin.xml,\
-               META-INF/,\
-               .,\
-               icons/,\
-               res/
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/epl-2.0.html b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/epl-2.0.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/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/coreIcon.png b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/coreIcon.png
deleted file mode 100755
index 229deec..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/coreIcon.png
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/ganttchart.css b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/ganttchart.css
deleted file mode 100755
index df21c56..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/ganttchart.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.status-red {
-    -fx-background-color:rgba(128,0,0,0.7);
-}
-.status-green {
-    -fx-background-color:rgba(0,64,0,0.7);
-}
-.status-blue {
-    -fx-background-color:rgba(0,0,128,0.7);
-}
-.status-light-green {
-	-fx-background-color:rgba(50,205,50,0.7);
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/sample.gif b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/sample.gif
deleted file mode 100755
index 34fb3c9..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/icons/sample.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/plugin.xml b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/plugin.xml
deleted file mode 100755
index 7d8ed5a..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/plugin.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<!--
-    Copyright (c) 2017 Dortmund University of Applied Sciences and Arts and others.
-    All rights reserved. This program and the accompanying materials
-    are made available under the terms of the Eclipse Public License 2.0
-    which accompanies this distribution, and is available at
-    https://www.eclipse.org/legal/epl-2.0/
-     
-    Contributors:
-       Dortmund University of Applied Sciences and Arts - initial API and implementation
- -->
-
-<plugin>
-
-   <extension
-         point="org.eclipse.ui.editors">
-      <editor
-            name="TraceEditor"
-            extensions="btf"
-            icon="icons/sample.gif"
-            contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
-            class="org.eclipse.app4mc.multicore.execution.ui.traceeditor.TraceEditor"
-            id="org.eclipse.app4mc.amalthea.traceeditor.view.TraceEditor">
-      </editor>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/res/example1_task_only_short.btf b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/res/example1_task_only_short.btf
deleted file mode 100755
index dcc7c54..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/res/example1_task_only_short.btf
+++ /dev/null
@@ -1,38 +0,0 @@
-#version 1.0
-#creator TA-Toolsuite 12.06.1
-# Simulation of dualcore processor 120MHz, 16Kbyte RAM
-#creationDate 2012-08-31T15:53:00
-#inputFile c:\TAsc\doc\examples\ems.tap
-#timeScale ns
-#entityType
-#-0 T
-#-1 R
-#-2 C
-#entityTable
-#-0 Task_A
-#-1 Task_B
-#-2 Core_1
-#-3 Core_2
-#entityTypeTable
-#-T Task_A
-#-T Task_B
-#-T Task_C
-#-T Task_D
-#-C Core_1
-#-C Core_2
-0,Task_A,0,T,Task_A,0,activate
-100,Core_1,0,T,Task_A,0,start
-110,Task_C,0,T,Task_C,0,activate
-120,Core_2,0,T,Task_C,0,start
-150,Core_1,0,T,Task_A,0,preempt
-170,Core_2,0,T,Task_C,0,preempt
-180,Task_B,0,T,Task_B,0,activate
-200,Core_1,0,T,Task_B,0,start
-210,Task_D,0,T,Task_D,0,activate
-220,Core_2,0,T,Task_D,0,start
-220,Core_1,0,T,Task_B,0,preempt
-230,Core_1,0,T,Task_A,0,resume
-240,Core_2,0,T,Task_D,0,preempt
-250,Core_2,0,T,Task_C,0,resume
-270,Core_1,0,T,Task_A,0,preempt
-290,Core_2,0,T,Task_C,0,preempt
\ No newline at end of file
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/FXEditorPart.java b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/FXEditorPart.java
deleted file mode 100755
index 3872d72..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/FXEditorPart.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Dortmund University of Applied Sciences and Arts and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *  
- * SPDX-License-Identifier: EPL-2.0
- *  
- * Contributors:
- *   Dortmund University of Applied Sciences and Arts - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.app4mc.multicore.execution.ui.traceeditor;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.EditorPart;
-
-import javafx.application.Platform;
-import javafx.embed.swt.FXCanvas;
-import javafx.scene.Scene;
-
-public abstract class FXEditorPart extends EditorPart {
-
-	private FXCanvas canvas;
-
-	@Override
-	public void createPartControl(Composite parent) {
-		Platform.setImplicitExit(false);
-		this.canvas = new FXCanvas(parent, SWT.NONE);
-		this.canvas.setScene(createFxScene());
-	}
-
-	protected abstract Scene createFxScene();
-
-	@Override
-	public void setFocus() {
-		this.canvas.setFocus();
-		setFxFocus();
-	}
-
-	protected abstract void setFxFocus();
-}
diff --git a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/TraceEditor.java b/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/TraceEditor.java
deleted file mode 100755
index 6c94c26..0000000
--- a/plugins/org.eclipse.app4mc.multicore.execution.ui.traceeditor/src/org/eclipse/app4mc/multicore/execution/ui/traceeditor/TraceEditor.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017, 2018 Dortmund University of Applied Sciences and Arts and others.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *   Dortmund University of Applied Sciences and Arts - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.app4mc.multicore.execution.ui.traceeditor;
-
-import org.eclipse.app4mc.multicore.execution.logic.btf.BtfComputer;
-import org.eclipse.app4mc.multicore.execution.logic.btf.BtfException;
-import org.eclipse.app4mc.multicore.execution.logic.btf.BtfTraceParser;
-import org.eclipse.app4mc.multicore.execution.logic.btf.model.BtfTrace;
-import org.eclipse.app4mc.multicore.execution.logic.executionmodel.ExecutionModel;
-import org.eclipse.app4mc.multicore.execution.ui.widget.emtracewidget.EMTraceWidget;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.PartInitException;
-
-import javafx.application.Platform;
-import javafx.scene.Scene;
-import javafx.scene.control.ScrollPane;
-
-public class TraceEditor extends FXEditorPart {
-
-	private IEditorInput input;
-
-	EMTraceWidget tw;
-
-	@Override
-	public void init(final IEditorSite site, final IEditorInput input) throws PartInitException {
-		setSite(site);
-		this.input = input;
-		setInput(input);
-		setPartName("computing...");
-
-	}
-
-	BtfTrace manageParsing() {
-		if (!(this.input instanceof IFileEditorInput)) {
-			handleWarning("BTF-Parsing", "No file input for TraceEditor!");
-			return null;
-		}
-		System.out.println("Is FileEditorInput");
-		final IFileEditorInput fei = (IFileEditorInput) this.input;
-		System.out.println("File: " + fei.getFile().getName());
-
-		final IFile file = fei.getFile();
-		final IPath location = file.getLocation();
-		if (location == null) {
-			handleWarning("BTF-Parsing", "File location not found!");
-			return null;
-		}
-		final BtfTraceParser parser = new BtfTraceParser(location.toFile());
-
-		try {
-			parser.parseTrace();
-		}
-		catch (final BtfException e) {
-			handleWarning("BTF-Parsing", "Error while parsing! \n" + e.getMessage());
-			e.printStackTrace();
-		}
-		setPartName(file.getName());
-		return parser.getTrace();
-	}
-
-	@Override
-	protected Scene createFxScene() {
-		this.tw = new EMTraceWidget();
-
-		new Thread(new Runnable() {
-			@Override
-			public void run() {
-				final BtfTrace trace = manageParsing();
-
-				final ExecutionModel m = new ExecutionModel();
-
-				final BtfComputer com = new BtfComputer(trace, m);
-				try {
-					com.compute();
-					TraceEditor.this.tw.addExecutionModel(m);
-				}
-				catch (final BtfException e) {
-					handleWarning("Malformed BTF-Trace", e.getMessage());
-				}
-			}
-		}).start();
-		final ScrollPane pane = new ScrollPane();
-
-		pane.setContent(this.tw);
-		pane.setFitToWidth(true);
-		return new Scene(pane);
-	}
-
-	void handleWarning(final String title, final String msg) {
-		System.err.println(title + ": " + msg);
-		Platform.runLater(new Runnable() {
-			@Override
-			public void run() {
-				MessageDialog.openWarning(getSite().getShell(), title, msg);
-			}
-		});
-
-	}
-
-	@Override
-	protected void setFxFocus() {
-		/**
-		 * 
-		 */
-	}
-
-	@Override
-	public void doSave(final IProgressMonitor arg0) {
-		/**
-		 * 
-		 */
-	}
-
-	@Override
-	public void doSaveAs() {
-		/**
-		 * 
-		 */
-	}
-
-	@Override
-	public boolean isDirty() {
-
-		return false;
-	}
-
-	@Override
-	public boolean isSaveAsAllowed() {
-
-		return false;
-	}
-
-}
