diff --git a/.gitignore b/.gitignore
index ce254b76353f94069f5ba8135754f818f3bdf290..57032a5758944f98e3e08ddaacb41e0fd209828d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,5 @@ pom.xml
 updatesite/
 **/lib/dependencies/
 de.prob.core/prob/
-build/
\ No newline at end of file
+build/
+.tycho-consumer-pom.xml
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 577d5a4adbca85ba2f7163dac758aa95ac86f145..da9f39b1af64ebc6037875eb6f8e1564a2cf93c3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,6 @@
 build:
   stage: build
-  image: maven:3-eclipse-temurin-11
+  image: maven:3-eclipse-temurin-17
   variables:
     GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
   before_script:
diff --git a/build.gradle b/build.gradle
index c0d0efe936d23800ff5c7b86c7e76190885c5f2a..f0dcc50d2773d7e38a5e789e275d6bdbc340ca68 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit
 
 project.ext {
 	targetRepositories = [
-		"https://download.eclipse.org/releases/2022-03/",
+		"https://download.eclipse.org/releases/2023-12/",
 		"https://rodin-b-sharp.sourceforge.net/core-updates/",
 		"https://rodin-b-sharp.sourceforge.net/updates",
 	]
@@ -33,7 +33,7 @@ project(':de.prob.core') {
 		}
 	}
 
-	def parser_version = "2.13.0"
+	def parser_version = "2.13.3"
 
 	dependencies {
 		// Note: After changing/updating dependencies or their versions here,
@@ -87,7 +87,7 @@ task downloadCli {
 
 			def targetdir = dir + it.getValue()
 			def targetzip = dir + "probcli_${n}.zip"
-			def url = "https://stups.hhu-hosting.de/downloads/prob/cli/releases/1.13.0/probcli_${n}.zip"
+			def url = "https://stups.hhu-hosting.de/downloads/prob/cli/releases/1.13.1-beta2/probcli_${n}.zip"
 			download(url, targetzip)
 			FileTree zip = zipTree(targetzip)
 			copy {
diff --git a/de.bmotionstudio.feature/.project b/de.bmotionstudio.feature/.project
new file mode 100644
index 0000000000000000000000000000000000000000..f1731f09b5d8a9af22ff73d376154a8b35ccef72
--- /dev/null
+++ b/de.bmotionstudio.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>de.bmotionstudio.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/de.bmotionstudio.rodin/.settings/org.eclipse.core.resources.prefs b/de.bmotionstudio.feature/.settings/org.eclipse.core.resources.prefs
similarity index 64%
rename from de.bmotionstudio.rodin/.settings/org.eclipse.core.resources.prefs
rename to de.bmotionstudio.feature/.settings/org.eclipse.core.resources.prefs
index 156f29381b0c8806bc165f075872846ca9ab5580..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.bmotionstudio.rodin/.settings/org.eclipse.core.resources.prefs
+++ b/de.bmotionstudio.feature/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:00 CET 2011
 eclipse.preferences.version=1
 encoding/<project>=UTF-8
diff --git a/de.bmotionstudio.rodin/.settings/org.eclipse.core.runtime.prefs b/de.bmotionstudio.feature/.settings/org.eclipse.core.runtime.prefs
similarity index 61%
rename from de.bmotionstudio.rodin/.settings/org.eclipse.core.runtime.prefs
rename to de.bmotionstudio.feature/.settings/org.eclipse.core.runtime.prefs
index b9abd08f2a694492220a0dd285128368c2de7eac..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.bmotionstudio.rodin/.settings/org.eclipse.core.runtime.prefs
+++ b/de.bmotionstudio.feature/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:00 CET 2011
 eclipse.preferences.version=1
 line.separator=\n
diff --git a/de.bmotionstudio.feature/build.properties b/de.bmotionstudio.feature/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..64f93a9f0b7328eb563aa5ad6cec7f828020e124
--- /dev/null
+++ b/de.bmotionstudio.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/de.bmotionstudio.feature/feature.xml b/de.bmotionstudio.feature/feature.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba945c89c2addd4003540a5411580703420f9226
--- /dev/null
+++ b/de.bmotionstudio.feature/feature.xml
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="de.bmotionstudio.feature"
+      label="ProB for Rodin - BMotion Studio"
+      version="3.2.0.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group"
+      plugin="de.bmotionstudio.gef.editor">
+
+   <description url="https://prob.hhu.de/w/">
+The BMotion Studio interactive visualization tool based on the ProB animator.
+Warning: Development of BMotion Studio has ended in 2013.
+This plug-in is maintained on a best-effort basis and not actively tested.
+
+ProB is an animator and model checker for the B-Method. It allows
+fully automatic animation of many B specifications, and can be
+used to systematically check a specification for errors.
+Part of the research and development was conducted within the
+EPSRC funded projects ABCD and iMoc, and within the EU funded
+projects Rodin and Deploy and the DFG projects Gepavas and Gepavas II.
+ProB has been successfully used on various industrial specifications
+and is now being used within Siemens, Alstom, Thales.
+   </description>
+
+   <copyright>
+      (C) 2000-2020 Michael Leuschel (and many others) All rights reserved.
+   </copyright>
+
+   <license url="http://www.eclipse.org/org/documents/epl-v10.html">
+      ProB can be used freely for commercial, non-commercial and academic
+use under the Eclipse Public Licence v. 1.0. (below) 
+For availability of commercial support, please contact the author
+(http://www.stups.uni-duesseldorf.de/~leuschel). 
+Use of ProB&apos;s nauty library for symmetry reduction implies further
+restrictions (no applications with nontrivial military significance,
+see http://cs.anu.edu.au/~bdm/nauty/).
+--- 
+Eclipse Public License - v. 1.0
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS
+ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE
+OF THIS AGREEMENT.
+1. DEFINITIONS
+&quot;Contribution&quot; means:
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate
+from and are distributed by that particular Contributor. A Contribution
+&apos;originates&apos; from a Contributor if it was added to the Program
+by such Contributor itself or anyone acting on such Contributor&apos;s
+behalf. Contributions do not include additions to the Program
+which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.
+&quot;Contributor&quot; means any person or entity that distributes the
+Program.
+&quot;Licensed Patents&quot; 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.
+&quot;Program&quot; means the Contributions distributed in accordance with
+this Agreement.
+&quot;Recipient&quot; means anyone who receives the Program under this
+Agreement, including all Contributors.
+2. GRANT OF RIGHTS
+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, in source
+code and object code form.
+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 and object code 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.
+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&apos;s responsibility to acquire
+that license before distributing the Program.
+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.
+3. REQUIREMENTS
+A Contributor may choose to distribute the Program in object
+code form under its own license agreement, provided that:
+a) it complies with the terms and conditions of this Agreement;
+and
+b) its license agreement:
+i) effectively disclaims on behalf of all 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;
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental
+and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement
+are offered by that Contributor alone and not by any other party;
+and
+iv) states that source code for the Program is available from
+such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for
+software exchange.
+When the Program is made available in source code form:
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of
+the Program.
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+4. COMMERCIAL DISTRIBUTION
+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
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify
+every other Contributor (&quot;Indemnified Contributor&quot;) against any
+losses, damages and costs (collectively &quot;Losses&quot;) 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.
+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&apos;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.
+5. NO WARRANTY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM
+IS PROVIDED ON AN &quot;AS IS&quot; 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.
+6. DISCLAIMER OF LIABILITY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, 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.
+7. GENERAL
+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.
+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&apos;s patent(s),
+then such Recipient&apos;s rights granted under Section 2(b) shall
+terminate as of the date such litigation is filed.
+All Recipient&apos;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&apos;s rights under this Agreement terminate, Recipient
+agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient&apos;s obligations under
+this Agreement and any licenses granted by Recipient relating
+to the Program shall continue and survive.
+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. 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.
+This Agreement is governed by the laws of the State of New York
+and the intellectual property laws of the United States of America.
+No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose.
+Each party waives its rights to a jury trial in any resulting
+litigation.
+   </license>
+
+   <requires>
+      <import plugin="de.prob.core" version="9.6.0" match="equivalent"/>
+      <import plugin="de.prob.ui" version="7.6.0" match="equivalent"/>
+      <import plugin="org.eclipse.core.databinding" version="1.10.0" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding.beans" version="1.7.0" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding.property" version="1.7.0" match="compatible"/>
+      <import plugin="org.eclipse.core.resources" version="3.13.0" match="compatible"/>
+      <import plugin="org.eclipse.core.runtime" version="3.20.0" match="compatible"/>
+      <import plugin="org.eclipse.gef" version="3.11.0" match="compatible"/>
+      <import plugin="org.eclipse.jface.databinding" version="1.12.0" match="compatible"/>
+      <import plugin="org.eclipse.ui" version="3.118.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.ide" version="3.18.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.navigator" version="3.9.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.views" version="3.10.0" match="compatible"/>
+      <import plugin="org.eventb.core" version="3.5.0" match="compatible"/>
+      <import plugin="org.eventb.core.ast" version="3.5.0" match="compatible"/>
+      <import plugin="org.rodinp.core" version="1.9.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="de.bmotionstudio.gef.editor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs
index 35c1f5a73d13cf6b4f0a370335f908432f2fe713..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs
+++ b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:11 CET 2011
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs
index 11c1f686b491df30d3f56ce88d8512986f4f43b2..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs
+++ b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:11 CET 2011
-eclipse.preferences.version=1
-line.separator=\n
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
index e88976ea17cc3dddd55d72edba609dc8b417a758..bfea7eaa01ec3c3f1c7830d7487fd1a853b0c8e3 100644
--- a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
+++ b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
@@ -1,18 +1,21 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: BMotion Studio Editor Plug-in
+Bundle-Name: BMotion Studio for Rodin
 Bundle-SymbolicName: de.bmotionstudio.gef.editor;singleton:=true
-Bundle-Version: 5.6.1.qualifier
+Bundle-Version: 5.7.0.qualifier
 Bundle-Activator: de.bmotionstudio.gef.editor.BMotionEditorPlugin
-Require-Bundle: de.prob.core;bundle-version="[9.5.1,9.6.0)";visibility:=reexport,
+Require-Bundle: de.prob.core;bundle-version="[9.6.0,9.7.0)";visibility:=reexport,
+ de.prob.ui;bundle-version="[7.6.0,7.7.0)",
  org.eclipse.core.databinding;bundle-version="[1.10.0,2.0.0)",
  org.eclipse.core.databinding.beans;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.7.0,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
  org.eclipse.gef;bundle-version="[3.11.0,4.0.0)";visibility:=reexport,
  org.eclipse.jface.databinding;bundle-version="[1.12.0,2.0.0)",
  org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.18.0,4.0.0)",
+ org.eclipse.ui.navigator;bundle-version="[3.9.0,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.10.0,4.0.0)";visibility:=reexport,
  org.eventb.core;bundle-version="[3.5.0,4.0.0)",
  org.eventb.core.ast;bundle-version="[3.5.0,4.0.0)",
diff --git a/de.bmotionstudio.gef.editor/about.ini b/de.bmotionstudio.gef.editor/about.ini
new file mode 100644
index 0000000000000000000000000000000000000000..13393b98f1164ea914e2c46e7677d15d61356c91
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/about.ini
@@ -0,0 +1,2 @@
+aboutText=BMotion Studio (c) 2005-2024 https://prob.hhu.de/w/
+featureImage=icons/logo_bmotion_32.png
diff --git a/de.bmotionstudio.gef.editor/build.properties b/de.bmotionstudio.gef.editor/build.properties
index bb491748de41c8dd30488c2b1d35dcbe5e0c7654..3e895de4d7b464c86549140e27ec0999f8372a67 100644
--- a/de.bmotionstudio.gef.editor/build.properties
+++ b/de.bmotionstudio.gef.editor/build.properties
@@ -1,6 +1,7 @@
 source.. = src/
 output.. = bin/
-bin.includes = plugin.xml,\
+bin.includes = about.ini,\
+               plugin.xml,\
                META-INF/,\
                .,\
                icons/,\
diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif
deleted file mode 100644
index 86550fe9f4505c88287a70add9bb89bd24d0e8b2..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_ascript.png b/de.bmotionstudio.gef.editor/icons/icon_ascript.png
deleted file mode 100644
index 4cd71dba209ec693a58b14e7351873b374080988..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_ascript.png and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_composite.gif b/de.bmotionstudio.gef.editor/icons/icon_composite.gif
deleted file mode 100644
index 3e53cbdc5fc65bfd4f7178bf328195067ae8b7f1..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_composite.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_down.gif b/de.bmotionstudio.gef.editor/icons/icon_down.gif
deleted file mode 100644
index c595aae874c758052a5960501a8ce3fe6f3cb71b..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_down.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_edit.gif b/de.bmotionstudio.gef.editor/icons/icon_edit.gif
deleted file mode 100644
index 30dfbf3a509ccfe533222d8fd98c48deec2694eb..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_edit.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_error.png b/de.bmotionstudio.gef.editor/icons/icon_error.png
deleted file mode 100644
index b1b788b24ce94febf1b0857cd54274bf75fdeb70..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_error.png and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_image.gif b/de.bmotionstudio.gef.editor/icons/icon_image.gif
deleted file mode 100644
index dc62a3fdb2317025335a438971282867c1149435..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_image.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_label.gif b/de.bmotionstudio.gef.editor/icons/icon_label.gif
deleted file mode 100644
index cf00ad26ffb8b308cd51369b5544187ba14c8002..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_label.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_list.gif b/de.bmotionstudio.gef.editor/icons/icon_list.gif
deleted file mode 100644
index bf1274e2bac99a3bed268e6d003319320dbbe756..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_list.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_motion.gif b/de.bmotionstudio.gef.editor/icons/icon_motion.gif
deleted file mode 100644
index 173d240af99eff66594bbefb1d12d16da8d8b548..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_motion.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif b/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif
deleted file mode 100644
index 1e9bf55a7b95055a4cc8bc7646266c58fb28e45f..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_motion_wiz.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif b/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif
deleted file mode 100644
index 176830af2dc8be87218c4dd944ba7dc6ffb79756..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_screenshot.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_table.gif b/de.bmotionstudio.gef.editor/icons/icon_table.gif
deleted file mode 100644
index d11c996e570dfe06518631ba3f0f1893a21f88d1..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_table.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_up.gif b/de.bmotionstudio.gef.editor/icons/icon_up.gif
deleted file mode 100644
index 23363997b4716905dd7765b2e33e36dd9b4c4e82..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_up.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/logo_b.gif b/de.bmotionstudio.gef.editor/icons/logo_b.gif
deleted file mode 100644
index 8edac4c3f2cb3d5099e20f72122f635dfb926412..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/logo_b.gif and /dev/null differ
diff --git a/de.bmotionstudio.gef.editor/icons/logo_bmotion_32.png b/de.bmotionstudio.gef.editor/icons/logo_bmotion_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..af4219bf12f7c997ee7917336a3c95a4f77b5275
Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/logo_bmotion_32.png differ
diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml
index 2f254fad8295f60c884b3955105845870987acf1..1b0173811f8dd4b63dd1bcd00bf5fba26ac8b17a 100644
--- a/de.bmotionstudio.gef.editor/plugin.xml
+++ b/de.bmotionstudio.gef.editor/plugin.xml
@@ -10,6 +10,21 @@
    <extension-point id="de.bmotionstudio.gef.editor.observer" name="BMotion Studio Observer" schema="schema/de.bmotionstudio.gef.editor.observer.exsd"/>
    <extension-point id="de.bmotionstudio.gef.editor.paletteEntry" name="Add a custom Palette Entry" schema="schema/de.bmotionstudio.gef.editor.paletteEntry.exsd"/>
    <extension-point id="de.bmotionstudio.gef.editor.includeObserver" name="Include Observer Extension Point" schema="schema/de.bmotionstudio.gef.editor.includeObserver.exsd"/>
+   <extension
+         point="org.eclipse.ui.perspectives">
+      <perspective
+            class="de.bmotionstudio.gef.editor.internal.PerspectiveEditFactory"
+            icon="icons/logo_bmotion.png"
+            id="de.bmotionstudio.perspective.edit"
+            name="BMS Edit">
+      </perspective>
+      <perspective
+            class="de.bmotionstudio.gef.editor.internal.PerspectiveRunFactory"
+            icon="icons/icon_run.png"
+            id="de.bmotionstudio.perspective.run"
+            name="BMS Run">
+      </perspective>
+   </extension>
    <extension
          point="org.eclipse.ui.editors">
       <editor
@@ -56,35 +71,22 @@
    <extension
          point="org.eclipse.ui.menus">
       <menuContribution
-            locationURI="menu:org.eclipse.ui.main.menu">
-         <menu
-               id="de.bmotionstudio.gef.editor.menu"
-               label="BMotion Studio">
-            <command
-                  commandId="de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite"
-                  label="Open website"
-                  style="push">
-            </command>
-            <separator
-                  name="group.filter"
-                  visible="true">
-            </separator>
-            <command
-                  commandId="de.bmotionstudio.command.startVisualizationFromEditor"
-                  icon="icons/icon_run.png"
-                  label="Start Visualization"
-                  style="push">
-               <visibleWhen
-                     checkEnabled="true">
-                  <with
-                        variable="activeEditorId">
-                     <equals
-                           value="de.bmotionstudio.gef.editor.BMotionStudioEditor">
-                     </equals>
-                  </with>
-               </visibleWhen>
-            </command>
-         </menu>
+            locationURI="menu:org.eclipse.ui.run">
+         <command
+               commandId="de.bmotionstudio.command.startVisualizationFromEditor"
+               icon="icons/icon_run.png"
+               label="Start Visualization"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <with
+                     variable="activeEditorId">
+                  <equals
+                        value="de.bmotionstudio.gef.editor.BMotionStudioEditor">
+                  </equals>
+               </with>
+            </visibleWhen>
+         </command>
       </menuContribution>
       <menuContribution
             locationURI="toolbar:org.eclipse.ui.main.toolbar">
@@ -107,14 +109,29 @@
             </command>
          </toolbar>
       </menuContribution>
+      <menuContribution
+            locationURI="popup:fr.systerel.explorer.navigator.view">
+         <command
+               commandId="de.bmotionstudio.rodin.command.startVisualization"
+               icon="icons/icon_run.png"
+               label="Start Visualization"
+               style="push">
+            <visibleWhen>
+               <with
+                     variable="selection">
+                  <iterate
+                        operator="or">
+                     <instanceof
+                           value="de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile">
+                     </instanceof>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+      </menuContribution>
    </extension>
    <extension
          point="org.eclipse.ui.commands">
-      <command
-            defaultHandler="de.bmotionstudio.gef.editor.handler.OpenWebsiteHandler"
-            id="de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite"
-            name="Open website">
-      </command>
       <command
             id="de.bmotionstudio.command.startVisualizationFromEditor"
             name="Start Visualization from Editor">
@@ -124,6 +141,11 @@
             id="de.bmotionstudio.command.startVisualizationFromFile"
             name="Start Visualization from File">
       </command>
+      <command
+            defaultHandler="de.bmotionstudio.gef.editor.handler.StartEventBVisualizationHandler"
+            id="de.bmotionstudio.rodin.command.startVisualization"
+            name="Start Visualization">
+      </command>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
@@ -140,6 +162,61 @@
          </enabledWhen>
       </handler>
    </extension>
+   <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <navigatorContent
+            contentProvider="de.bmotionstudio.gef.editor.internal.BMotionStudioContentProvider"
+            id="de.bmotionstudio.ui.navigatorContent"
+            labelProvider="de.bmotionstudio.gef.editor.internal.BMotionLabelProvider"
+            name="BMotion Studio Navigator Content"
+            priority="normal">
+         <triggerPoints>
+            <instanceof
+                  value="org.eclipse.core.resources.IProject">
+            </instanceof>
+         </triggerPoints>
+         <possibleChildren>
+            <instanceof
+                  value="de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile">
+            </instanceof>
+         </possibleChildren>
+         <actionProvider
+               class="de.bmotionstudio.gef.editor.action.BMotionStudioActionProvider"
+               id="de.bmotionstudio.ui.navigatorAction"
+               priority="normal">
+            <enablement>
+               <instanceof value="de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile">
+               </instanceof>
+            </enablement>
+         </actionProvider>
+      </navigatorContent>
+   </extension>
+   <extension
+         point="org.eclipse.ui.navigator.viewer">
+      <viewerContentBinding
+            viewerId="fr.systerel.explorer.navigator.view">
+         <includes>
+            <contentExtension
+                  pattern="de.bmotionstudio.ui.navigatorContent">
+            </contentExtension>
+         </includes>
+      </viewerContentBinding>
+      <viewerActionBinding
+            viewerId="fr.systerel.explorer.navigator.view">
+         <includes>
+            <actionExtension
+                  pattern="de.bmotionstudio.ui.navigatorAction">
+            </actionExtension>
+         </includes>
+      </viewerActionBinding>
+   </extension>
+   <extension
+         point="org.rodinp.core.fileAssociations">
+      <fileAssociation
+            content-type-id="de.bmotionstudio.gef.editor.BMotionStudioFile"
+            root-element-type="de.bmotionstudio.gef.editor.BMotionStudioFile">
+      </fileAssociation>
+   </extension>
    <extension
          point="de.prob.core.animation">
       <listener
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
index 1a43742694434462a941adf1bfa043f62cd8e57a..5f8d9725a4bb24cda49e060f8486d49a66424097 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioContributor.java
@@ -75,23 +75,19 @@ public class BMotionStudioContributor extends ActionBarContributor {
 
 		super.contributeToMenu(menuManager);
 
-		IContributionItem bMenu = menuManager
-				.find("de.bmotionstudio.gef.editor.menu");
-		if (bMenu != null) {
-
-			IMenuManager bmotionMenu = (IMenuManager) bMenu;
-			MenuManager viewMenu = new MenuManager("Editor");
+		IContributionItem editMenuContribution = menuManager.find("edit");
+		if (editMenuContribution != null) {
+			IMenuManager editMenu = (IMenuManager)editMenuContribution;
+			MenuManager viewMenu = new MenuManager("BMotion Studio", "de.bmotionstudio.gef.editor.menu");
 			viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
 			viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
 			viewMenu.add(new Separator());
 			viewMenu.add(getAction(GEFActionConstants.TOGGLE_RULER_VISIBILITY));
 			viewMenu.add(getAction(GEFActionConstants.TOGGLE_GRID_VISIBILITY));
 			viewMenu.add(getAction(GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY));
-			bmotionMenu
-					.insertAfter(
-							"de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite",
-							viewMenu);
 
+			editMenu.insertAfter("additions", new Separator("de.bmotionstudio.gef.editor.group"));
+			editMenu.insertAfter("de.bmotionstudio.gef.editor.group", viewMenu);
 		}
 
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java
index b3eaa999e181a45a3691bf94e1324dbf3d46834f..a0a918e8104d87048b68c611faacc3e53670a946 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java
@@ -22,13 +22,9 @@ public class BMotionStudioImage {
 	private static ImageRegistry imageReg = new ImageRegistry();
 	private static boolean isInit = false;
 
-	public static final String IMG_LOGO_B = "logo_b";
 	public static final String IMG_LOGO_BMOTION = "logo_bmotion";
 	public static final String IMG_LOGO_BMOTION64 = "logo_bmotion64";
 
-	public static final String IMG_ICON_MOTION = "icon_motion";
-	public static final String IMG_ICON_MOTION_WIZ = "icon_motion_wiz";
-
 	public static ImageDescriptor getImageDescriptor(final String path) {
 		return getImageDescriptor(BMotionEditorPlugin.PLUGIN_ID, path);
 	}
@@ -62,12 +58,8 @@ public class BMotionStudioImage {
 	}
 
 	private static void initializeImageRegistry() {
-
-		registerImage(IMG_LOGO_B, "icons/logo_b.gif");
 		registerImage(IMG_LOGO_BMOTION, "icons/logo_bmotion.png");
 		registerImage(IMG_LOGO_BMOTION64, "icons/logo_bmotion_64.png");
-		registerImage(IMG_ICON_MOTION, "icons/icon_motion.gif");
-		registerImage(IMG_ICON_MOTION_WIZ, "icons/icon_motion_wiz.gif");
 
 		registerBControlImages();
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java
index 967cf40bb7e56f43ce4db5b772e70b87c8c9d355..dd179eeded5d580c02492d53675828b10b884958 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorImageRegistry.java
@@ -12,15 +12,11 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 	public static final String IMG_ICON_CHOP = "icon_chop";
 	public static final String IMG_ICON_DELETE = "icon_delete";
 	public static final String IMG_ICON_DELETE21 = "icon_delete21";
-	public static final String IMG_ICON_EDIT = "icon_edit";
 	public static final String IMG_ICON_CHECKED = "icon_checked";
 	public static final String IMG_ICON_UNCHECKED = "icon_unchecked";
 	public static final String IMG_ICON_OBSERVER = "icon_observer";
 	public static final String IMG_ICON_LOADING = "icon_loading";
 	public static final String IMG_ICON_LIBRARY = "icon_library";
-	public static final String IMG_ICON_ASCRIPT = "icon_ascript";
-	public static final String IMG_ICON_UP = "icon_up";
-	public static final String IMG_ICON_DOWN = "icon_down";
 	public static final String IMG_ICON_CONNECTION16 = "icon_connection16";
 	public static final String IMG_ICON_CONNECTION24 = "icon_connection24";
 	public static final String IMG_ICON_NEW_WIZ = "icon_new_wiz";
@@ -48,18 +44,10 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_checked.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_UNCHECKED,
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_unchecked.gif");
-		BMotionStudioImage.registerImage(IMG_ICON_EDIT,
-				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_edit.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_LOADING,
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_loading.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_LIBRARY,
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_library.gif");
-		BMotionStudioImage.registerImage(IMG_ICON_ASCRIPT,
-				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_ascript.png");
-		BMotionStudioImage.registerImage(IMG_ICON_UP,
-				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_up.gif");
-		BMotionStudioImage.registerImage(IMG_ICON_DOWN,
-				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_down.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_CONNECTION16,
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_connection16.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_CONNECTION24,
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/ActionCollection.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ActionCollection.java
similarity index 97%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/ActionCollection.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ActionCollection.java
index b70999a3c7f292bd21ac025b275a98ff4c8a7678..6b5be76d9d94005aba4f53736770c1e4373c57ad 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/ActionCollection.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ActionCollection.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.action;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -30,6 +30,7 @@ import org.eclipse.ui.navigator.ICommonActionExtensionSite;
 import org.eclipse.ui.part.FileEditorInput;
 
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
+import de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile;
 
 public class ActionCollection {
 
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioActionProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionStudioActionProvider.java
similarity index 95%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioActionProvider.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionStudioActionProvider.java
index e6b1ca715fd09baa7f3fc3c6332cd0dbaf47411c..6d2f467a8ddeff516de67f20fe07f2a940383403 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioActionProvider.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionStudioActionProvider.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.action;
 
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.IMenuManager;
@@ -20,6 +20,7 @@ import org.eclipse.ui.navigator.ICommonActionExtensionSite;
 import org.eclipse.ui.navigator.ICommonMenuConstants;
 
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
+import de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile;
 
 public class BMotionStudioActionProvider extends CommonActionProvider {
 
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/YesToAllMessageDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/YesToAllMessageDialog.java
similarity index 96%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/YesToAllMessageDialog.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/YesToAllMessageDialog.java
index ed59926eed3da61f0afaa3d2fcec23d93557e0ca..643ab8b99aacd9adf9e45a21465cfa453642c79c 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/YesToAllMessageDialog.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/YesToAllMessageDialog.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.action;
 
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IntEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IntEditingSupport.java
index 26a29edce7e266323476ee97fd7d482c7a9906b0..ba70873ad51e4d6a363e8e76e92797aadf0c199f 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IntEditingSupport.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IntEditingSupport.java
@@ -7,9 +7,9 @@
 package de.bmotionstudio.gef.editor.edit;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.ObservableValueEditingSupport;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.TableViewer;
@@ -47,13 +47,13 @@ public class IntEditingSupport extends ObservableValueEditingSupport {
 	@Override
 	protected IObservableValue doCreateCellEditorObservable(
 			CellEditor cellEditor) {
-		return SWTObservables.observeText(cellEditor.getControl(), SWT.Modify);
+		return WidgetProperties.text(SWT.Modify).observe(cellEditor.getControl());
 	}
 
 	@Override
 	protected IObservableValue doCreateElementObservable(Object element,
 			ViewerCell cell) {
-		return BeansObservables.observeValue(element, atr);
+		return BeanProperties.value(atr).observe(element);
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java
index 3ad7a19c1f4759664cc307585af02d3c5c3197cd..08dff2daef17353d76ac48e2ae6df5b61611e171 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java
@@ -6,9 +6,9 @@
 package de.bmotionstudio.gef.editor.edit;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.ObservableValueEditingSupport;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.TableViewer;
@@ -41,13 +41,13 @@ public class PredicateEditingSupport extends ObservableValueEditingSupport {
 	@Override
 	protected IObservableValue doCreateCellEditorObservable(
 			CellEditor cellEditor) {
-		return SWTObservables.observeText(cellEditor.getControl(), SWT.Modify);
+		return WidgetProperties.text(SWT.Modify).observe(cellEditor.getControl());
 	}
 
 	@Override
 	protected IObservableValue doCreateElementObservable(Object element,
 			ViewerCell cell) {
-		return BeansObservables.observeValue(element, property);
+		return BeanProperties.value(property).observe(element);
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java
index 4181dbeb93d946b93e481a5b2efe58c6416aa356..4dc64fe1168cc508b95825a273eb238bf1de7f39 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java
@@ -7,9 +7,9 @@
 package de.bmotionstudio.gef.editor.edit;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.ObservableValueEditingSupport;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ColumnViewer;
@@ -34,13 +34,13 @@ public class TextEditingSupport extends ObservableValueEditingSupport {
 	@Override
 	protected IObservableValue doCreateCellEditorObservable(
 			CellEditor cellEditor) {
-		return SWTObservables.observeText(cellEditor.getControl(), SWT.Modify);
+		return WidgetProperties.text(SWT.Modify).observe(cellEditor.getControl());
 	}
 
 	@Override
 	protected IObservableValue doCreateElementObservable(Object element,
 			ViewerCell cell) {
-		return BeansObservables.observeValue(element, property);
+		return BeanProperties.value(property).observe(element);
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TypeEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TypeEditingSupport.java
index 8c009c4ba7fa50fe44db9d3d47366f3e770bea16..4316d51091c7a549827de9e371ec8eb2143710a2 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TypeEditingSupport.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TypeEditingSupport.java
@@ -7,9 +7,9 @@
 package de.bmotionstudio.gef.editor.edit;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.ObservableValueEditingSupport;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ColumnViewer;
@@ -33,13 +33,13 @@ public class TypeEditingSupport extends ObservableValueEditingSupport {
 	@Override
 	protected IObservableValue doCreateCellEditorObservable(
 			CellEditor cellEditor) {
-		return SWTObservables.observeSelection(cellEditor.getControl());
+		return WidgetProperties.widgetSelection().observe(cellEditor.getControl());
 	}
 
 	@Override
 	protected IObservableValue doCreateElementObservable(Object element,
 			ViewerCell cell) {
-		return BeansObservables.observeValue(element, propertyName);
+		return BeanProperties.value(propertyName).observe(element);
 	}
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.java
deleted file mode 100644
index 5a956e4483e387bb3cac5ba2cc6a3c379a50e6b0..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/** 
- * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
- * Heinrich Heine Universitaet Duesseldorf
- * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
- * */
-
-package de.bmotionstudio.gef.editor.handler;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-import de.prob.logging.Logger;
-
-public class OpenWebsiteHandler extends AbstractHandler {
-
-	private static final String URL = "https://prob.hhu.de/w/index.php/BMotion_Studio";
-
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		try {
-			PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser()
-					.openURL(new URL(URL));
-		} catch (PartInitException e) {
-			final String message = "Part init exception occurred\n"
-					+ e.getLocalizedMessage();
-			Logger.notifyUser(message, e);
-		} catch (MalformedURLException e) {
-			final String message = "This really should never happen unless the http protocol changes";
-			Logger.notifyUser(message, e);
-		}
-		return null;
-	}
-
-}
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartEventBVisualizationHandler.java
similarity index 91%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartEventBVisualizationHandler.java
index 73fdccadfa2dac75a95554de9becd38b45f02744..3f78d94425c5b4b4991243adbcf228ad3c34c230 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartEventBVisualizationHandler.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.handler;
 
 import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.resources.IFile;
@@ -15,7 +15,7 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import de.bmotionstudio.gef.editor.handler.StartVisualizationFileHandler;
+import de.bmotionstudio.gef.editor.internal.BMotionStudioRodinFile;
 
 /**
  * @author Lukas Ladenberger
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionLabelProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionLabelProvider.java
similarity index 96%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionLabelProvider.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionLabelProvider.java
index 06ae49b37bd6eaff0b4d36a737d3a0fc671be1e1..925bdc09b3ec6f8b265a66abe096f3981af6f701 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionLabelProvider.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionLabelProvider.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.internal;
 
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ILabelProviderListener;
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioContentProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioContentProvider.java
similarity index 97%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioContentProvider.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioContentProvider.java
index ed93b697f873ae0669827c3e7029206951467e5a..ce9ebd9591167d32f0cf8de73584f1ec6c8f7bc1 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioContentProvider.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioContentProvider.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.internal;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioRodinFile.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioRodinFile.java
similarity index 92%
rename from de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioRodinFile.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioRodinFile.java
index 6286b03e5ce1410a60546697cca103f803318e17..77ff770e0c956a263fafe98d2e8dc2a07f988d08 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/BMotionStudioRodinFile.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BMotionStudioRodinFile.java
@@ -4,7 +4,7 @@
  * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
  * */
 
-package de.bmotionstudio.rodin;
+package de.bmotionstudio.gef.editor.internal;
 
 import org.eclipse.core.resources.IResource;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java
deleted file mode 100644
index 8144c6734f46d6372a9d5bbd4903a65706899450..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/** 
- * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
- * Heinrich Heine Universitaet Duesseldorf
- * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
- * */
-
-package de.bmotionstudio.gef.editor.internal;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-import org.rodinp.core.IRodinProject;
-
-import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
-
-@Deprecated
-public class NewBMotionProjectAction implements IObjectActionDelegate {
-
-	// private IWorkbenchPart targetPart;
-	private IStructuredSelection currentSelection;
-	private IRodinProject rodinProject;
-
-	public NewBMotionProjectAction() {
-		super();
-	}
-
-	/**
-	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
-	 */
-	public void setActivePart(final IAction action,
-			final IWorkbenchPart targetPart) {
-		// this.targetPart = targetPart;
-	}
-
-	/**
-	 * @see IActionDelegate#run(IAction)
-	 */
-	public void run(IAction action) {
-
-		if (rodinProject == null) {
-			return;
-		}
-
-		NewBMotionProjectWizard wizard = new NewBMotionProjectWizard();
-		wizard.init(BMotionEditorPlugin.getDefault().getWorkbench(),
-				currentSelection);
-		WizardDialog dialog = new WizardDialog(BMotionEditorPlugin
-				.getActiveEditor().getSite().getShell(), wizard);
-		dialog.create();
-		dialog.open();
-
-	}
-
-	/**
-	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
-	 */
-	public void selectionChanged(IAction action, ISelection selection) {
-
-		if (selection instanceof IStructuredSelection) {
-			IStructuredSelection ssel = (IStructuredSelection) selection;
-			currentSelection = ssel;
-			if (ssel.size() == 1) {
-				Object firstElement = ssel.getFirstElement();
-				if (firstElement instanceof IRodinProject) {
-					rodinProject = (IRodinProject) firstElement;
-					return;
-				}
-			}
-		}
-		rodinProject = null;
-
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
index 5582fbbf7af11dcdb1884e62d081ac311f40cf29..7d3752e77101f20ec187a4b987fbda75293b4881 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryPage.java
@@ -251,18 +251,6 @@ public class LibraryPage extends Page {
 							img));
 				}
 			}
-
-			// TODO: Reimplement me!!!
-			// Visualization vis = this.editor.getVisualization();
-			// if (vis != null) {
-			// for (MachineContentObject obj : vis.getVariableList()
-			// .getCollection()) {
-			// tmpList.add(new LibraryVariableObject(obj.getLabel(),
-			// "variable", BMotionStudioImage
-			// .getImage(BMotionStudioImage.IMG_LOGO_B)));
-			// }
-			// }
-
 		}
 
 		return tmpList;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java
index 7929eef17522ee3452788fdb37f0b95de3b7c0a9..9312d519e623825f4b5e58683735a3902123084f 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java
@@ -7,8 +7,8 @@
 package de.bmotionstudio.gef.editor.observer.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
@@ -75,14 +75,15 @@ public class WizardColumnObserver extends ObserverWizard {
 
 		private void initBindings(DataBindingContext dbc) {
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(ColumnObserver) getObserver(), "predicate"));
+			dbc.bindValue(
+					WidgetProperties.text(SWT.Modify).observe(txtPredicate),
+					BeanProperties.value(ColumnObserver.class, "predicate")
+							.observe((ColumnObserver) getObserver()));
 
 			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(ColumnObserver) getObserver(), "expression"));
+					WidgetProperties.text(SWT.Modify).observe(txtExpression),
+					BeanProperties.value(ColumnObserver.class, "expression")
+							.observe((ColumnObserver) getObserver()));
 
 		}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java
index 9f89e701174dfe9f0cf329e55eb75f1376d99b00..0dc136aec801ec93ff30a0071703f58d4e0a9552 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java
@@ -7,7 +7,7 @@
 package de.bmotionstudio.gef.editor.observer.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
@@ -41,6 +41,7 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.edit.TextEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverEvalObject;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates;
 import de.bmotionstudio.gef.editor.observer.ToggleObjectCoordinates;
@@ -168,12 +169,13 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard {
 
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
-			tableViewer
-					.setLabelProvider(new ObserverLabelProvider(
-							BeansObservables.observeMaps(
-									contentProvider.getKnownElements(),
-									new String[] { "eval", "bcontrol", "x",
-											"y", "animate" })));
+			tableViewer.setLabelProvider(new ObserverLabelProvider(new IObservableMap[] {
+				BeanProperties.value(ObserverEvalObject.class, "eval").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectCoordinates.class, "bcontrol").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectCoordinates.class, "x").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectCoordinates.class, "y").observeDetail(contentProvider.getKnownElements()),
+				// BeanProperties.value(ToggleObjectCoordinates.class, "animate").observeDetail(contentProvider.getKnownElements()),
+			}));
 
 			final WritableList input = new WritableList(
 					((SwitchChildCoordinates) getObserver()).getToggleObjects(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java
index 6959c465082601da08adc322645988b04c9e6135..8595875b93209acd693827b1e748a01b0b16e9ba 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java
@@ -10,7 +10,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.ComputedList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
@@ -55,6 +55,7 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate;
 import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverEvalObject;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper;
 import de.bmotionstudio.gef.editor.scheduler.PredicateOperation;
@@ -169,11 +170,13 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard {
 
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"operationName", "predicate", "attribute",
-									"value", "isExpressionMode" })));
+			tableViewer.setLabelProvider(new ObserverLabelProvider(new IObservableMap[] {
+				BeanProperties.value(PredicateOperation.class, "operationName").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(PredicateOperation.class, "predicate").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "attribute").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "value").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "isExpressionMode").observeDetail(contentProvider.getKnownElements()),
+			}));
 			final WritableList input = new WritableList(
 					((ListenOperationByPredicate) getObserver()).getList(),
 					PredicateOperation.class);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java
index 40b7c19c652e48178b5ba59f50468c3967d285f3..6801af40b2e8b24598739e19014f08022364c4dd 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java
@@ -9,7 +9,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.ComputedList;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
@@ -54,6 +54,7 @@ import de.bmotionstudio.gef.editor.edit.IsExpressionModeEditingSupport;
 import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverEvalObject;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.bmotionstudio.gef.editor.observer.SetAttribute;
 import de.bmotionstudio.gef.editor.observer.SetAttributeObject;
@@ -161,11 +162,12 @@ public class WizardObserverSetAttribute extends ObserverWizard {
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
 
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "attribute", "value",
-									"isExpressionMode" })));
+			tableViewer.setLabelProvider(new ObserverLabelProvider(new IObservableMap[] {
+				BeanProperties.value(ObserverEvalObject.class, "eval").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "attribute").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "value").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "isExpressionMode").observeDetail(contentProvider.getKnownElements()),
+			}));
 			input = new WritableList(
 					((SetAttribute) getObserver()).getSetAttributeObjects(),
 					SetAttributeObject.class);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java
index 6a4ee8d984f6008fc41dbd7381abba7e57d24e02..e708b45bd8b70ad74394d97437ef3a3eefdb031e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java
@@ -7,8 +7,8 @@
 package de.bmotionstudio.gef.editor.observer.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Font;
@@ -93,18 +93,17 @@ public class WizardObserverSimpleValueDisplay extends ObserverWizard {
 
 		private void initBindings(DataBindingContext dbc) {
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(SimpleValueDisplay) getObserver(), "predicate"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtPredicate),
+					BeanProperties.value(SimpleValueDisplay.class, "predicate")
+							.observe((SimpleValueDisplay) getObserver()));
 
-			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(SimpleValueDisplay) getObserver(), "eval"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtExpression),
+					BeanProperties.value(SimpleValueDisplay.class, "eval")
+							.observe((SimpleValueDisplay) getObserver()));
 
-			dbc.bindValue(SWTObservables.observeText(txtReplacementString,
-					SWT.Modify), BeansObservables.observeValue(
-					(SimpleValueDisplay) getObserver(), "replacementString"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtReplacementString), 
+					BeanProperties.value(SimpleValueDisplay.class, "replacementString")
+							.observe((SimpleValueDisplay) getObserver()));
 
 		}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java
index 0b4bb1df49b9a6681dd1652c26cc7683163aaaae..334516db3ba777018d2ed6567f59d781879ba99f 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java
@@ -7,7 +7,7 @@
 package de.bmotionstudio.gef.editor.observer.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
@@ -42,6 +42,7 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.edit.TextEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverEvalObject;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.bmotionstudio.gef.editor.observer.SwitchCoordinates;
 import de.bmotionstudio.gef.editor.observer.ToggleObjectCoordinates;
@@ -154,10 +155,11 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard {
 
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "x", "y" })));
+			tableViewer.setLabelProvider(new ObserverLabelProvider(new IObservableMap[] {
+				BeanProperties.value(ObserverEvalObject.class, "eval").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectCoordinates.class, "x").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectCoordinates.class, "y").observeDetail(contentProvider.getKnownElements()),
+			}));
 
 			final WritableList input = new WritableList(
 					((SwitchCoordinates) getObserver()).getToggleObjects(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java
index c95305337e7995c2ec2570e8077ad7bfe4c14f9e..4f3f429e415a381b16c6b0dbf29a9daf0639eabf 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java
@@ -7,7 +7,7 @@
 package de.bmotionstudio.gef.editor.observer.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
@@ -44,6 +44,7 @@ import de.bmotionstudio.gef.editor.edit.IsExpressionModeEditingSupport;
 import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverEvalObject;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.bmotionstudio.gef.editor.observer.SwitchImage;
 import de.bmotionstudio.gef.editor.observer.ToggleObjectImage;
@@ -144,10 +145,11 @@ public class WizardObserverSwitchImage extends ObserverWizard {
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
 
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "image", "isExpressionMode" })));
+			tableViewer.setLabelProvider(new ObserverLabelProvider(new IObservableMap[] {
+				BeanProperties.value(ObserverEvalObject.class, "eval").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ToggleObjectImage.class, "image").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(ObserverEvalObject.class, "isExpressionMode").observeDetail(contentProvider.getKnownElements()),
+			}));
 			final WritableList input = new WritableList(
 					((SwitchImage) getObserver()).getToggleObjects(),
 					ToggleObjectImage.class);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java
index 3eeeef60f09a8440f58a1cba156eab6e71feb5e7..74f3765ba0b4979bf534ca7b29b6b308421d8ec3 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardTableObserver.java
@@ -9,8 +9,8 @@ package de.bmotionstudio.gef.editor.observer.wizard;
 import java.util.ArrayList;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
@@ -152,22 +152,21 @@ public class WizardTableObserver extends ObserverWizard {
 
 		private void initBindings(DataBindingContext dbc) {
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "predicate"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtPredicate),
+					BeanProperties.value(TableObserver.class, "predicate")
+							.observe((TableObserver) getObserver()));
 
-			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "expression"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtExpression),
+					BeanProperties.value(TableObserver.class, "expression")
+							.observe((TableObserver) getObserver()));
 
-			dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "overrideCells"));
+			dbc.bindValue(WidgetProperties.widgetSelection().observe(cbOverrideCells),
+					BeanProperties.value(TableObserver.class, "overrideCells")
+							.observe((TableObserver) getObserver()));
 
-			dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "keepHeader"));
+			dbc.bindValue(WidgetProperties.widgetSelection().observe(cbKeepHeader),
+					BeanProperties.value(TableObserver.class, "keepHeader")
+							.observe((TableObserver) getObserver()));
 
 		}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java
index 48f20af70143bf1d6a0eb62ab5609cd1d512930a..ea4fb929f4e608329029da4ce54e3b0d93b43f55 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java
@@ -7,8 +7,9 @@
 package de.bmotionstudio.gef.editor.scheduler.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
 import org.eclipse.jface.dialogs.Dialog;
@@ -100,10 +101,11 @@ public class SchedulerObjectDialog extends Dialog {
 
 		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 		tableViewer.setContentProvider(contentProvider);
-		tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-				BeansObservables.observeMaps(
-						contentProvider.getKnownElements(), new String[] {
-								"command", "parameter", "maxrandom" })) {
+		tableViewer.setLabelProvider(new ObservableMapLabelProvider(new IObservableMap[] {
+			BeanProperties.value(AnimationScriptStep.class, "command").observeDetail(contentProvider.getKnownElements()),
+			BeanProperties.value(AnimationScriptStep.class, "parameter").observeDetail(contentProvider.getKnownElements()),
+			BeanProperties.value(AnimationScriptStep.class, "maxrandom").observeDetail(contentProvider.getKnownElements()),
+		}) {
 
 			@Override
 			public Image getColumnImage(final Object element,
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java
index 8ee01a562c751054d1d0f1ac8bb470ee8d65d22b..2cc81c497dafe9c62763b779f911372fe427626d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java
@@ -7,17 +7,17 @@
 package de.bmotionstudio.gef.editor.scheduler.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.observable.value.IValueChangeListener;
 import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.swt.typed.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
-import org.eclipse.jface.databinding.viewers.ViewersObservables;
+import org.eclipse.jface.databinding.viewers.typed.ViewerProperties;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ComboViewer;
@@ -46,6 +46,7 @@ import de.bmotionstudio.gef.editor.eventb.MachineContentObject;
 import de.bmotionstudio.gef.editor.eventb.MachineOperation;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate;
+import de.bmotionstudio.gef.editor.scheduler.PredicateOperation;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard;
 
@@ -173,9 +174,9 @@ public class WizardExecuteOperationByPredicate extends SchedulerWizard {
 
 			ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider();
 			cbOperation.setContentProvider(cbOpContentProvider);
-			IObservableMap[] attributeMaps = BeansObservables.observeMaps(
-					cbOpContentProvider.getKnownElements(),
-					MachineContentObject.class, new String[] { "label" });
+			IObservableMap[] attributeMaps = {
+				BeanProperties.value(MachineContentObject.class, "label").observeDetail(cbOpContentProvider.getKnownElements()),
+			};
 			cbOperation.setLabelProvider(new ObservableMapLabelProvider(
 					attributeMaps));
 			cbOperation.setInput(new WritableList(EventBHelper
@@ -185,19 +186,16 @@ public class WizardExecuteOperationByPredicate extends SchedulerWizard {
 					new Font(Display.getDefault(), new FontData("Arial", 10,
 							SWT.NONE)));
 
-			final IObservableValue observeSelection = ViewersObservables
-					.observeSingleSelection(cbOperation);
+			IObservableValue observeSelection = ViewerProperties.singleSelection().observe(cbOperation);
 
-			dbc.bindValue(SWTObservables.observeSelection(cbOperation
-					.getCombo()), BeansObservables.observeValue(
-					((ExecuteOperationByPredicate) getScheduler())
-							.getPredicateOperation(), "operationName"), null,
-					null);
+			dbc.bindValue(WidgetProperties.widgetSelection().observe(cbOperation.getCombo()),
+					BeanProperties.value(PredicateOperation.class, "operationName")
+							.observe(((ExecuteOperationByPredicate) getScheduler()).getPredicateOperation()),
+					null, null);
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							((ExecuteOperationByPredicate) getScheduler())
-									.getPredicateOperation(), "predicate"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtPredicate),
+					BeanProperties.value(PredicateOperation.class, "predicate")
+							.observe(((ExecuteOperationByPredicate) getScheduler()).getPredicateOperation()));
 
 			observeSelection.addValueChangeListener(new IValueChangeListener() {
 				public void handleValueChange(ValueChangeEvent event) {
@@ -206,15 +204,13 @@ public class WizardExecuteOperationByPredicate extends SchedulerWizard {
 				}
 			});
 
-			dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode),
-					BeansObservables.observeValue(
-							((ExecuteOperationByPredicate) getScheduler())
-									.getPredicateOperation(), "random"));
+			dbc.bindValue(WidgetProperties.widgetSelection().observe(checkboxRandomMode),
+					BeanProperties.value(PredicateOperation.class, "random")
+							.observe(((ExecuteOperationByPredicate) getScheduler()).getPredicateOperation()));
 
-			dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations,
-					SWT.Modify), BeansObservables.observeValue(
-					((ExecuteOperationByPredicate) getScheduler())
-							.getPredicateOperation(), "maxrandom"));
+			dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(txtMaxRandomOperations),
+					BeanProperties.value(PredicateOperation.class, "maxrandom")
+							.observe(((ExecuteOperationByPredicate) getScheduler()).getPredicateOperation()));
 
 		}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java
index 332fd422f251b074f97c431f8209443298c6f96f..5afd578451d761bf371cd2cf8da73e51f3db321d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java
@@ -6,8 +6,9 @@
 package de.bmotionstudio.gef.editor.scheduler.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -98,11 +99,12 @@ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard {
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
 
-			tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"executePredicate", "operationName",
-									"predicate", "maxrandom" })));
+			tableViewer.setLabelProvider(new ObservableMapLabelProvider(new IObservableMap[] {
+				BeanProperties.value(PredicateOperation.class, "executePredicate").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(PredicateOperation.class, "operationName").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(PredicateOperation.class, "predicate").observeDetail(contentProvider.getKnownElements()),
+				BeanProperties.value(PredicateOperation.class, "maxrandom").observeDetail(contentProvider.getKnownElements()),
+			}));
 			final WritableList input = new WritableList(
 					((ExecuteOperationByPredicateMulti) getScheduler())
 							.getOperationList(),
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java
index 538631f480461367b36e103e653bffc70fa469e3..c0de0d6baab3c7cd6fd452d7ea1844b57b3b7367 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java
@@ -7,8 +7,9 @@
 package de.bmotionstudio.gef.editor.scheduler.wizard;
 
 import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.beans.typed.BeanProperties;
 import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.core.databinding.observable.map.IObservableMap;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
 import org.eclipse.jface.dialogs.Dialog;
@@ -40,6 +41,7 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject;
 import de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript;
+import de.bmotionstudio.gef.editor.scheduler.PredicateOperation;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard;
 import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
@@ -84,10 +86,9 @@ public class WizardExecuteScheduler extends SchedulerWizard {
 			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
 			tableViewer.setContentProvider(contentProvider);
 
-			tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(),
-							new String[] { "predicate" })) {
+			tableViewer.setLabelProvider(new ObservableMapLabelProvider(new IObservableMap[] {
+				BeanProperties.value(PredicateOperation.class, "predicate").observeDetail(contentProvider.getKnownElements()),
+			}) {
 
 				@Override
 				public String getColumnText(Object element, int columnIndex) {
diff --git a/de.bmotionstudio.rodin/.classpath b/de.bmotionstudio.rodin/.classpath
deleted file mode 100644
index b862a296d38fe04269faeee6c9d77d11ff77380d..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/.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/de.bmotionstudio.rodin/.project b/de.bmotionstudio.rodin/.project
deleted file mode 100644
index 8d9f97eff9f9c8ec6a6f9557facc69527e870a19..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>de.bmotionstudio.rodin</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/de.bmotionstudio.rodin/META-INF/MANIFEST.MF b/de.bmotionstudio.rodin/META-INF/MANIFEST.MF
deleted file mode 100644
index 864bb4c960f80b52f955345600ad7d2da3974f98..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: BMotion Studio Rodin Integration
-Bundle-SymbolicName: de.bmotionstudio.rodin;singleton:=true
-Bundle-Version: 1.3.1.qualifier
-Fragment-Host: de.bmotionstudio.gef.editor;bundle-version="[5.6.1,5.7.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Bundle-Vendor: HHU Düsseldorf STUPS Group
-Require-Bundle: org.eclipse.ui.navigator;bundle-version="3.5.0"
diff --git a/de.bmotionstudio.rodin/build.properties b/de.bmotionstudio.rodin/build.properties
deleted file mode 100644
index 187f664063183d827bac5059f2d214bee14c752d..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               fragment.xml,\
-               icons/
diff --git a/de.bmotionstudio.rodin/fragment.xml b/de.bmotionstudio.rodin/fragment.xml
deleted file mode 100644
index f9f29ddd233d9c904af5a31fbc782ecb5f47d933..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/fragment.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<fragment>
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            class="de.bmotionstudio.rodin.PerspectiveEditFactory"
-            icon="icons/logo_bmotion.png"
-            id="de.bmotionstudio.perspective.edit"
-            name="BMS Edit">
-      </perspective>
-      <perspective
-            class="de.bmotionstudio.rodin.PerspectiveRunFactory"
-            icon="icons/icon_run.png"
-            id="de.bmotionstudio.perspective.run"
-            name="BMS Run">
-      </perspective>
-   </extension>
-   <extension
-         point="org.eclipse.ui.menus">
-      <menuContribution
-            locationURI="popup:fr.systerel.explorer.navigator.view">
-         <command
-               commandId="de.bmotionstudio.rodin.command.startVisualization"
-               icon="icons/icon_run.png"
-               label="Start Visualization"
-               style="push">
-            <visibleWhen>
-               <with
-                     variable="selection">
-                  <iterate
-                        operator="or">
-                     <instanceof
-                           value="de.bmotionstudio.rodin.BMotionStudioRodinFile">
-                     </instanceof>
-                  </iterate>
-               </with>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commands">
-      <command
-            defaultHandler="de.bmotionstudio.rodin.StartEventBVisualizationHandler"
-            id="de.bmotionstudio.rodin.command.startVisualization"
-            name="Start Visualization">
-      </command>
-   </extension>
-   <extension
-         point="org.rodinp.core.fileAssociations">
-      <fileAssociation
-            content-type-id="de.bmotionstudio.gef.editor.BMotionStudioFile"
-            root-element-type="de.bmotionstudio.gef.editor.BMotionStudioFile">
-      </fileAssociation>
-   </extension>
-   <extension
-         point="org.eclipse.ui.navigator.navigatorContent">
-      <navigatorContent
-            contentProvider="de.bmotionstudio.rodin.BMotionStudioContentProvider"
-            id="de.bmotionstudio.ui.navigatorContent"
-            labelProvider="de.bmotionstudio.rodin.BMotionLabelProvider"
-            name="BMotion Studio Navigator Content"
-            priority="normal">
-         <triggerPoints>
-            <instanceof
-                  value="org.eclipse.core.resources.IProject">
-            </instanceof>
-         </triggerPoints>
-         <possibleChildren>
-            <instanceof
-                  value="de.bmotionstudio.rodin.BMotionStudioRodinFile">
-            </instanceof>
-         </possibleChildren>
-         <actionProvider
-               class="de.bmotionstudio.rodin.BMotionStudioActionProvider"
-               id="de.bmotionstudio.ui.navigatorAction"
-               priority="normal">
-            <enablement>
-               <instanceof value="de.bmotionstudio.rodin.BMotionStudioRodinFile">
-               </instanceof>
-            </enablement>
-         </actionProvider>
-      </navigatorContent>
-   </extension>
-   <extension
-         point="org.eclipse.ui.navigator.viewer">
-      <viewerContentBinding
-            viewerId="fr.systerel.explorer.navigator.view">
-         <includes>
-            <contentExtension
-                  pattern="de.bmotionstudio.ui.navigatorContent">
-            </contentExtension>
-         </includes>
-      </viewerContentBinding>
-      <viewerActionBinding
-            viewerId="fr.systerel.explorer.navigator.view">
-         <includes>
-            <actionExtension
-                  pattern="de.bmotionstudio.ui.navigatorAction">
-            </actionExtension>
-         </includes>
-      </viewerActionBinding>
-   </extension>
-   
-   
-
-</fragment>
diff --git a/de.bmotionstudio.rodin/icons/icon_run.png b/de.bmotionstudio.rodin/icons/icon_run.png
deleted file mode 100644
index f5808d2dfd5b042b5584ce1c81aa40835ebc8055..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.rodin/icons/icon_run.png and /dev/null differ
diff --git a/de.bmotionstudio.rodin/icons/logo_bmotion.png b/de.bmotionstudio.rodin/icons/logo_bmotion.png
deleted file mode 100644
index 2bcb148a75ce4d1f5d9257033306b5b12b5d295d..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.rodin/icons/logo_bmotion.png and /dev/null differ
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java
deleted file mode 100644
index 35a2c477e1ef878b5d40b7a4c796cc53687ebc5c..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/** 
- * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
- * Heinrich Heine Universitaet Duesseldorf
- * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
- * */
-
-package de.bmotionstudio.rodin;
-
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveFactory;
-
-import de.bmotionstudio.gef.editor.library.LibraryView;
-
-public class PerspectiveEditFactory implements IPerspectiveFactory {
-
-	public void createInitialLayout(final IPageLayout layout) {
-
-		final String editorArea = layout.getEditorArea();
-
-		// Place the project explorer to left of editor area.
-		final IFolderLayout left = layout.createFolder("left",
-				IPageLayout.LEFT, 0.15f, editorArea);
-		left.addView("fr.systerel.explorer.navigator.view");
-
-		// Place the outline to right of editor area.
-		final IFolderLayout righttop = layout.createFolder("right",
-				IPageLayout.RIGHT, 0.8f, editorArea);
-		righttop.addView(IPageLayout.ID_OUTLINE);
-
-		// Library view
-		final IFolderLayout rightbot = layout.createFolder("rightb",
-				IPageLayout.BOTTOM, 0.6f, "right");
-		rightbot.addView(LibraryView.ID);
-
-		final IFolderLayout bottom = layout.createFolder("bottom",
-				IPageLayout.BOTTOM, 0.75f, editorArea);
-		// Properties view
-		bottom.addView(IPageLayout.ID_PROP_SHEET);
-
-	}
-
-}
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveRunFactory.java b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveRunFactory.java
deleted file mode 100644
index f8c425f52aae636d0d7d086bde4a3868d87aa411..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveRunFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/** 
- * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, 
- * Heinrich Heine Universitaet Duesseldorf
- * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) 
- * */
-
-package de.bmotionstudio.rodin;
-
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveFactory;
-
-public class PerspectiveRunFactory implements IPerspectiveFactory {
-
-	public void createInitialLayout(IPageLayout layout) {
-
-		String editorArea = layout.getEditorArea();
-
-		// ProB Event View (Top-Left)
-		IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
-				0.15f, editorArea);
-		left.addView("de.prob.ui.OperationView");
-
-		// Navigator + Rodin Problem View (Bottom-Left)
-		IFolderLayout leftb = layout.createFolder("leftb", IPageLayout.BOTTOM,
-				0.6f, "left");
-		leftb.addView("fr.systerel.explorer.navigator.view");
-		// leftb.addView("org.eventb.ui.views.RodinProblemView");
-
-		// ProB State View (Right)
-		IFolderLayout right1 = layout.createFolder("right1", IPageLayout.RIGHT,
-				0.7f, editorArea);
-		right1.addView("de.prob.ui.StateView");
-
-		// ProB History + ProB Event Error View (Right)
-		IFolderLayout right2 = layout.createFolder("right2", IPageLayout.RIGHT,
-				0.6f, "right1");
-		right2.addView("de.prob.ui.HistoryView");
-		right2.addView("de.prob.ui.EventErrorView");
-
-	}
-
-}
diff --git a/de.prob.plugin/.settings/org.eclipse.core.resources.prefs b/de.prob.core.tests/.settings/org.eclipse.core.resources.prefs
similarity index 64%
rename from de.prob.plugin/.settings/org.eclipse.core.resources.prefs
rename to de.prob.core.tests/.settings/org.eclipse.core.resources.prefs
index ba4759a9b15a4161ff7e03fa1cced464efc243d4..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.prob.plugin/.settings/org.eclipse.core.resources.prefs
+++ b/de.prob.core.tests/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:29 CET 2011
 eclipse.preferences.version=1
 encoding/<project>=UTF-8
diff --git a/de.prob.plugin/.settings/org.eclipse.core.runtime.prefs b/de.prob.core.tests/.settings/org.eclipse.core.runtime.prefs
similarity index 61%
rename from de.prob.plugin/.settings/org.eclipse.core.runtime.prefs
rename to de.prob.core.tests/.settings/org.eclipse.core.runtime.prefs
index 2cbb06417bf025fd72d5808a37c78e34a95b5d0e..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.prob.plugin/.settings/org.eclipse.core.runtime.prefs
+++ b/de.prob.core.tests/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:16:29 CET 2011
 eclipse.preferences.version=1
 line.separator=\n
diff --git a/de.prob.core.tests/.settings/org.eclipse.jdt.core.prefs b/de.prob.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61dca867ceb49e79d2402935261ec3e3809..0000000000000000000000000000000000000000
--- a/de.prob.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +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.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/de.prob.core.tests/META-INF/MANIFEST.MF b/de.prob.core.tests/META-INF/MANIFEST.MF
index 9960f048edf67d5deb84f9b8d1e60c8fab6dc412..a59dca11b74a964c6849a1148e053ddc49f9dfa2 100644
--- a/de.prob.core.tests/META-INF/MANIFEST.MF
+++ b/de.prob.core.tests/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Tests
+Bundle-Name: ProB Animator Tests
 Bundle-SymbolicName: de.prob.core.tests
 Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: de.prob.core.tests.Activator
-Require-Bundle: de.prob.core;bundle-version="[9.5.1,9.6.0)",
+Require-Bundle: de.prob.core;bundle-version="[9.6.0,9.7.0)",
  org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
  org.eventb.core;bundle-version="[3.5.0,4.0.0)",
diff --git a/de.prob.core/.classpath b/de.prob.core/.classpath
index 060b00c947b5f33cee407fc8aef90a35cfff3541..47744048c15785b9ac6a9f24d583de49bd30dc34 100644
--- a/de.prob.core/.classpath
+++ b/de.prob.core/.classpath
@@ -4,12 +4,12 @@
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/answerparser-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/bparser-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/ltlparser-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/parserbase-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/prologlib-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/sablecc-runtime-3.7.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/theorymapping-2.13.0.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/dependencies/unicode-2.13.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/answerparser-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/bparser-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/ltlparser-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/parserbase-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/prologlib-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/sablecc-runtime-3.8.0.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/theorymapping-2.13.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/dependencies/unicode-2.13.3.jar"/>
 </classpath>
diff --git a/de.prob.core/.fbprefs b/de.prob.core/.fbprefs
deleted file mode 100644
index e77060d8fd54d5eb1e57dab9438ce9c092dc7228..0000000000000000000000000000000000000000
--- a/de.prob.core/.fbprefs
+++ /dev/null
@@ -1,155 +0,0 @@
-#FindBugs User Preferences
-#Thu Feb 11 11:45:44 CET 2010
-detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
-detectorBCPMethodReturnCheck=BCPMethodReturnCheck|false
-detectorBadAppletConstructor=BadAppletConstructor|false
-detectorBadResultSetAccess=BadResultSetAccess|true
-detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
-detectorBadUseOfReturnValue=BadUseOfReturnValue|true
-detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
-detectorBooleanReturnNull=BooleanReturnNull|true
-detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
-detectorCalledMethods=CalledMethods|true
-detectorCheckCalls=CheckCalls|false
-detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
-detectorCheckTypeQualifiers=CheckTypeQualifiers|true
-detectorCloneIdiom=CloneIdiom|true
-detectorComparatorIdiom=ComparatorIdiom|true
-detectorConfusedInheritance=ConfusedInheritance|true
-detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
-detectorCrossSiteScripting=CrossSiteScripting|true
-detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
-detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
-detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
-detectorDontUseEnum=DontUseEnum|true
-detectorDroppedException=DroppedException|true
-detectorDumbMethodInvocations=DumbMethodInvocations|true
-detectorDumbMethods=DumbMethods|true
-detectorDuplicateBranches=DuplicateBranches|true
-detectorEmptyZipFileEntry=EmptyZipFileEntry|true
-detectorEqStringTest=EqStringTest|false
-detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
-detectorFinalizerNullsFields=FinalizerNullsFields|true
-detectorFindBadCast=FindBadCast|false
-detectorFindBadCast2=FindBadCast2|true
-detectorFindBadEqualsImplementation=FindBadEqualsImplementation|false
-detectorFindBadForLoop=FindBadForLoop|true
-detectorFindBugsSummaryStats=FindBugsSummaryStats|true
-detectorFindCircularDependencies=FindCircularDependencies|false
-detectorFindDeadLocalStores=FindDeadLocalStores|true
-detectorFindDoubleCheck=FindDoubleCheck|true
-detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
-detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
-detectorFindFinalizeInvocations=FindFinalizeInvocations|true
-detectorFindFloatEquality=FindFloatEquality|true
-detectorFindFloatMath=FindFloatMath|false
-detectorFindHEmismatch=FindHEmismatch|true
-detectorFindInconsistentSync2=FindInconsistentSync2|true
-detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
-detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
-detectorFindMaskedFields=FindMaskedFields|true
-detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
-detectorFindNakedNotify=FindNakedNotify|true
-detectorFindNonSerializableStoreIntoSession=FindNonSerializableStoreIntoSession|true
-detectorFindNonSerializableValuePassedToWriteObject=FindNonSerializableValuePassedToWriteObject|true
-detectorFindNonShortCircuit=FindNonShortCircuit|true
-detectorFindNullDeref=FindNullDeref|true
-detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
-detectorFindOpenStream=FindOpenStream|true
-detectorFindPuzzlers=FindPuzzlers|false
-detectorFindRefComparison=FindRefComparison|true
-detectorFindReturnRef=FindReturnRef|false
-detectorFindRunInvocations=FindRunInvocations|true
-detectorFindSelfComparison=FindSelfComparison|true
-detectorFindSelfComparison2=FindSelfComparison2|true
-detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
-detectorFindSpinLoop=FindSpinLoop|true
-detectorFindSqlInjection=FindSqlInjection|true
-detectorFindTwoLockWait=FindTwoLockWait|true
-detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
-detectorFindUnconditionalWait=FindUnconditionalWait|true
-detectorFindUninitializedGet=FindUninitializedGet|true
-detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
-detectorFindUnreleasedLock=FindUnreleasedLock|true
-detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|false
-detectorFindUnsyncGet=FindUnsyncGet|true
-detectorFindUselessControlFlow=FindUselessControlFlow|true
-detectorFormatStringChecker=FormatStringChecker|true
-detectorHugeSharedStringConstants=HugeSharedStringConstants|true
-detectorIDivResultCastToDouble=IDivResultCastToDouble|true
-detectorIncompatMask=IncompatMask|true
-detectorInconsistentAnnotations=InconsistentAnnotations|true
-detectorInefficientMemberAccess=InefficientMemberAccess|false
-detectorInefficientToArray=InefficientToArray|true
-detectorInfiniteLoop=InfiniteLoop|true
-detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
-detectorInfiniteRecursiveLoop2=InfiniteRecursiveLoop2|false
-detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
-detectorInitializationChain=InitializationChain|true
-detectorInstantiateStaticClass=InstantiateStaticClass|true
-detectorInvalidJUnitTest=InvalidJUnitTest|true
-detectorIteratorIdioms=IteratorIdioms|true
-detectorLazyInit=LazyInit|true
-detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
-detectorLockedFields=LockedFields|false
-detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
-detectorMethodReturnCheck=MethodReturnCheck|true
-detectorMethods=Methods|true
-detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
-detectorMutableLock=MutableLock|true
-detectorMutableStaticFields=MutableStaticFields|false
-detectorNaming=Naming|false
-detectorNoteAnnotationRetention=NoteAnnotationRetention|true
-detectorNoteCheckReturnValue=NoteCheckReturnValue|true
-detectorNoteCheckReturnValueAnnotations=NoteCheckReturnValueAnnotations|true
-detectorNoteDirectlyRelevantTypeQualifiers=NoteDirectlyRelevantTypeQualifiers|true
-detectorNoteJCIPAnnotation=NoteJCIPAnnotation|true
-detectorNoteNonNullAnnotations=NoteNonNullAnnotations|true
-detectorNoteNonnullReturnValues=NoteNonnullReturnValues|true
-detectorNoteSuppressedWarnings=NoteSuppressedWarnings|true
-detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
-detectorNumberConstructor=NumberConstructor|true
-detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
-detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
-detectorPublicSemaphores=PublicSemaphores|false
-detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
-detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
-detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
-detectorRedundantInterfaces=RedundantInterfaces|true
-detectorReflectiveClasses=ReflectiveClasses|true
-detectorRepeatedConditionals=RepeatedConditionals|true
-detectorResolveAllReferences=ResolveAllReferences|false
-detectorRuntimeExceptionCapture=RuntimeExceptionCapture|false
-detectorSerializableIdiom=SerializableIdiom|true
-detectorStartInConstructor=StartInConstructor|true
-detectorStaticCalendarDetector=StaticCalendarDetector|true
-detectorStringConcatenation=StringConcatenation|true
-detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
-detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
-detectorSwitchFallthrough=SwitchFallthrough|true
-detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true
-detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
-detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
-detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
-detectorTestASM=TestASM|false
-detectorTestDataflowAnalysis=TestDataflowAnalysis|false
-detectorTestingGround=TestingGround|false
-detectorTrainFieldStoreTypes=TrainFieldStoreTypes|true
-detectorTrainNonNullAnnotations=TrainNonNullAnnotations|true
-detectorTrainUnconditionalDerefParams=TrainUnconditionalDerefParams|true
-detectorURLProblems=URLProblems|true
-detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
-detectorUnnecessaryMath=UnnecessaryMath|true
-detectorUnreadFields=UnreadFields|false
-detectorUseObjectEquals=UseObjectEquals|false
-detectorUselessSubclassMethod=UselessSubclassMethod|false
-detectorVarArgsProblems=VarArgsProblems|true
-detectorVolatileUsage=VolatileUsage|true
-detectorWaitInLoop=WaitInLoop|true
-detectorWrongMapIterator=WrongMapIterator|true
-detectorXMLFactoryBypass=XMLFactoryBypass|true
-detector_threshold=2
-effort=default
-filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false
-filter_settings_neg=NOISE|
-run_at_full_build=false
diff --git a/de.prob.core/.settings/org.eclipse.core.resources.prefs b/de.prob.core/.settings/org.eclipse.core.resources.prefs
index cce8254d8f270ccabe97e134a85368162629089d..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.prob.core/.settings/org.eclipse.core.resources.prefs
+++ b/de.prob.core/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:15:48 CET 2011
 eclipse.preferences.version=1
 encoding/<project>=UTF-8
diff --git a/de.prob.core/.settings/org.eclipse.core.runtime.prefs b/de.prob.core/.settings/org.eclipse.core.runtime.prefs
index f5fa27d76d2330b172e744b7bb18daeb1c223d73..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.prob.core/.settings/org.eclipse.core.runtime.prefs
+++ b/de.prob.core/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:15:48 CET 2011
 eclipse.preferences.version=1
 line.separator=\n
diff --git a/de.prob.core/META-INF/MANIFEST.MF b/de.prob.core/META-INF/MANIFEST.MF
index 46e38f533ace74782bc90d214d762709f30c26a2..2f3d359c07ad719443a4bbc159ac0e642feb3076 100644
--- a/de.prob.core/META-INF/MANIFEST.MF
+++ b/de.prob.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: ProB Animator Core
 Bundle-SymbolicName: de.prob.core;singleton:=true
-Bundle-Version: 9.5.1.qualifier
+Bundle-Version: 9.6.0.qualifier
 Require-Bundle: org.eclipse.core.filesystem;bundle-version="[1.7.0,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
@@ -13,7 +13,7 @@ Require-Bundle: org.eclipse.core.filesystem;bundle-version="[1.7.0,2.0.0)",
  org.rodinp.core;bundle-version="[1.9.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Eclipse-BundleShape: dir
-Bundle-Vendor: HHU Dusseldorf STUPS Group
+Bundle-Vendor: HHU Düsseldorf STUPS Group
 Export-Package: de.be4.classicalb.core.parser,
  de.be4.classicalb.core.parser.analysis,
  de.be4.classicalb.core.parser.analysis.checking,
@@ -39,7 +39,6 @@ Export-Package: de.be4.classicalb.core.parser,
  de.be4.ltl.core.parser.parser,
  de.hhu.stups.sablecc.patch,
  de.prob.cli,
- de.prob.cli.clipatterns,
  de.prob.core,
  de.prob.core.command,
  de.prob.core.command.internal,
@@ -76,11 +75,11 @@ Bundle-Activator: de.prob.core.internal.Activator
 Eclipse-BuddyPolicy: registered
 Bundle-RequiredExecutionEnvironment: JavaSE-11
 Bundle-ClassPath: .,
- lib/dependencies/answerparser-2.13.0.jar,
- lib/dependencies/bparser-2.13.0.jar,
- lib/dependencies/ltlparser-2.13.0.jar,
- lib/dependencies/parserbase-2.13.0.jar,
- lib/dependencies/prologlib-2.13.0.jar,
- lib/dependencies/sablecc-runtime-3.7.0.jar,
- lib/dependencies/theorymapping-2.13.0.jar,
- lib/dependencies/unicode-2.13.0.jar
+ lib/dependencies/answerparser-2.13.3.jar,
+ lib/dependencies/bparser-2.13.3.jar,
+ lib/dependencies/ltlparser-2.13.3.jar,
+ lib/dependencies/parserbase-2.13.3.jar,
+ lib/dependencies/prologlib-2.13.3.jar,
+ lib/dependencies/sablecc-runtime-3.8.0.jar,
+ lib/dependencies/theorymapping-2.13.3.jar,
+ lib/dependencies/unicode-2.13.3.jar
diff --git a/de.prob.core/src/de/prob/cli/CliStarter.java b/de.prob.core/src/de/prob/cli/CliStarter.java
index e11c7c9bbe94c1e4dd775957f282eda58c901eb9..5861c40a5222e72d751957ea21f5c74f62901d5d 100644
--- a/de.prob.core/src/de/prob/cli/CliStarter.java
+++ b/de.prob.core/src/de/prob/cli/CliStarter.java
@@ -9,6 +9,8 @@ package de.prob.cli;
 import java.io.*;
 import java.net.*;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileInfo;
@@ -16,15 +18,17 @@ import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.runtime.*;
 import org.osgi.framework.Bundle;
 
-import de.prob.cli.clipatterns.*;
 import de.prob.core.internal.Activator;
 import de.prob.logging.Logger;
 
 public final class CliStarter {
+	private static final Pattern CLI_PORT_PATTERN = Pattern.compile("^.*Port: (\\d+)$");
+	private static final Pattern CLI_USER_INTERRUPT_REFERENCE_PATTERN = Pattern.compile("^.*user interrupt reference id: *(\\d+|off) *$");
+
 	private Process prologProcess;
 
 	private int port = -1;
-	private Long userInterruptReference = null;
+	private long userInterruptReference = -1L;
 
 	private OutputLoggerThread stdLogger;
 	private OutputLoggerThread errLogger;
@@ -106,8 +110,12 @@ public final class CliStarter {
 			// which is bad in our case,
 			// because x86_64 probcli under Rosetta 2 is much slower than native arm64 probcli.)
 			command.add("arch");
-			command.add("-arm64");
-			command.add("-x86_64");
+			// Use the generic -64 option instead of -arm64,
+			// because -arm64 causes an "Unknown architecture" error on x86_64 systems
+			// (contrary to what the arch(1) man page suggests).
+			// -64 corresponds to -arm64 on arm64 systems and -x86_64 on x86_64 systems,
+			// so it's always safe to use.
+			command.add("-64");
 		}
 		command.add(executable);
 		// command.add("-ll");
@@ -189,11 +197,43 @@ public final class CliStarter {
 
 	private void extractCliInformation(final BufferedReader input)
 			throws CliException {
-		final PortPattern portPattern = new PortPattern();
-		final InterruptRefPattern intPattern = new InterruptRefPattern();
-		analyseStdout(input, Arrays.asList(portPattern, intPattern));
-		port = portPattern.getValue();
-		userInterruptReference = intPattern.getValue();
+		Integer portTemp = null;
+		Long userInterruptReferenceTemp = null;
+		try {
+			for (String line; (line = input.readLine()) != null;) {
+				Logger.info("probcli startup output: " + line);
+
+				Matcher portMatcher = CLI_PORT_PATTERN.matcher(line);
+				if (portMatcher.matches()) {
+					portTemp = Integer.parseInt(portMatcher.group(1));
+				}
+
+				Matcher userInterruptReferenceMatcher = CLI_USER_INTERRUPT_REFERENCE_PATTERN.matcher(line);
+				if (userInterruptReferenceMatcher.matches()) {
+					String userInterruptReferenceString = userInterruptReferenceMatcher.group(1);
+					if ("off".equals(userInterruptReferenceString)) {
+						userInterruptReferenceTemp = -1L;
+						Logger.info("This ProB build has user interrupt support disabled. Interrupting ProB may not work as expected.");
+					} else {
+						userInterruptReferenceTemp = Long.parseLong(userInterruptReferenceString);
+					}
+				}
+
+				if ((portTemp != null && userInterruptReferenceTemp != null) || line.contains("starting command loop")) {
+					break;
+				}
+			}
+		} catch (IOException | NumberFormatException e) {
+			throw new CliException("Error while reading information from CLI", e, false);
+		}
+
+		if (portTemp == null) {
+			throw new CliException("Did not receive port number from CLI");
+		} else if (userInterruptReferenceTemp == null) {
+			throw new CliException("Did not receive user interrupt reference from CLI");
+		}
+		port = portTemp;
+		userInterruptReference = userInterruptReferenceTemp;
 	}
 
 	private void startOutputLogger(final BufferedReader input) {
@@ -206,38 +246,6 @@ public final class CliStarter {
 		errLogger.start();
 	}
 
-	private void analyseStdout(final BufferedReader input,
-			Collection<? extends CliPattern<?>> patterns) throws CliException {
-		patterns = new ArrayList<CliPattern<?>>(patterns);
-		try {
-			String line;
-			boolean endReached = false;
-			while (!endReached && (line = input.readLine()) != null) {
-				Logger.info("probcli startup output: " + line);
-				applyPatterns(patterns, line);
-				endReached = patterns.isEmpty()
-						|| line.contains("starting command loop"); // printed in prob_socketserver.pl
-			}
-		} catch (IOException e) {
-			throw new CliException("Problem while starting ProB. Cannot read from input stream.", e, true);
-		}
-		for (CliPattern<?> p : patterns) {
-			p.notFound();
-		}
-	}
-
-	private void applyPatterns(
-			final Collection<? extends CliPattern<?>> patterns,
-			final String line) {
-		for (Iterator<? extends CliPattern<?>> it = patterns.iterator(); it
-				.hasNext();) {
-			final CliPattern<?> p = it.next();
-			if (p.matchesLine(line)) {
-				it.remove();
-			}
-		}
-	}
-
 	private File getCliPath() throws CliException {
 		final Bundle bundle = Activator.getDefault().getBundle();
 		final URL entry = bundle.getEntry("prob");
@@ -322,7 +330,7 @@ public final class CliStarter {
 	}
 
 	public void sendUserInterruptReference() {
-		if (userInterruptReference != null) {
+		if (userInterruptReference != -1) {
 			try {
 				final OsSpecificInfo osInfo = getOsInfo(Platform.getOS());
 				final String command = getCliPath() + File.separator
@@ -335,7 +343,7 @@ public final class CliStarter {
 
 				Runtime.getRuntime().exec(
 						new String[] { command,
-								userInterruptReference.toString() });
+								String.valueOf(userInterruptReference) });
 			} catch (CliException e) {
 				Logger.info("getting the os specific info failed with exception: "
 						+ e.getLocalizedMessage());
diff --git a/de.prob.core/src/de/prob/cli/clipatterns/CliPattern.java b/de.prob.core/src/de/prob/cli/clipatterns/CliPattern.java
deleted file mode 100644
index 5d59454c40c9d2e9323fb6992d4213bdf8bb26c1..0000000000000000000000000000000000000000
--- a/de.prob.core/src/de/prob/cli/clipatterns/CliPattern.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * 
- */
-package de.prob.cli.clipatterns;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import de.prob.cli.CliException;
-
-/**
- * Base class for doing pattern matching on the standard output on startup of
- * the ProB command line executable.
- * 
- * @author plagge
- */
-public abstract class CliPattern<T> {
-	private final Pattern pattern;
-	private Matcher matcher;
-
-	protected CliPattern(String regex) {
-		this.pattern = Pattern.compile(regex);
-	}
-
-	/**
-	 * Is called for each line of the standard output until this object matches
-	 * a line or until the command loop starts.
-	 * 
-	 * @param line
-	 *            the standard output line as string
-	 * @return if the line matches
-	 */
-	public boolean matchesLine(String line) {
-		matcher = pattern.matcher(line);
-		final boolean hit = matcher.find();
-		if (hit) {
-			setValue(matcher);
-		}
-		return hit;
-	}
-
-	/**
-	 * If the current line matches the pattern, this method is called with the
-	 * resulting {@link Matcher} object. An implementation of this method should
-	 * find a value that can be accessed via {@link #getValue()}.
-	 * 
-	 * @param matcher
-	 */
-	protected abstract void setValue(Matcher matcher);
-
-	/**
-	 * Returns the resulting value determined by the input line.
-	 * 
-	 * @return
-	 */
-	public abstract T getValue();
-
-	/**
-	 * This method is called if no line matched on this pattern and the start of
-	 * the command loop is reached.
-	 * 
-	 * @throws CliException
-	 */
-	public abstract void notFound() throws CliException;
-}
diff --git a/de.prob.core/src/de/prob/cli/clipatterns/InterruptRefPattern.java b/de.prob.core/src/de/prob/cli/clipatterns/InterruptRefPattern.java
deleted file mode 100644
index 65ab44dd2d3c4b0582a24ca851549d273f1dee3b..0000000000000000000000000000000000000000
--- a/de.prob.core/src/de/prob/cli/clipatterns/InterruptRefPattern.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * 
- */
-package de.prob.cli.clipatterns;
-
-import java.util.regex.Matcher;
-
-import de.prob.cli.CliException;
-import de.prob.logging.Logger;
-
-/**
- * Extracts the reference for user interrupt calls from the process' startup
- * information. The reference must be later passed to the send_interrupt command
- * when an user interrupt should be signalled.
- * 
- * @author plagge
- */
-public class InterruptRefPattern extends CliPattern<Long> {
-
-	private Long reference;
-
-	public InterruptRefPattern() {
-		super("user interrupt reference id: *(\\d+) *$");
-	}
-
-	@Override
-	protected void setValue(final Matcher matcher) {
-		reference = Long.parseLong(matcher.group(1));
-		Logger.info("Server can receive user interrupts via reference "
-				+ reference);
-	}
-
-	@Override
-	public Long getValue() {
-		return reference;
-	}
-
-	@Override
-	public void notFound() throws CliException {
-		Logger.notifyUser("Could not determine user interrupt reference of ProB server. "
-				+ "You might not be able to interrupt a running calculation.");
-	}
-
-}
diff --git a/de.prob.core/src/de/prob/cli/clipatterns/PortPattern.java b/de.prob.core/src/de/prob/cli/clipatterns/PortPattern.java
deleted file mode 100644
index 19724b1a772a4da213176fafb3ec610ed545e30f..0000000000000000000000000000000000000000
--- a/de.prob.core/src/de/prob/cli/clipatterns/PortPattern.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * 
- */
-package de.prob.cli.clipatterns;
-
-import java.util.regex.Matcher;
-
-import de.prob.cli.CliException;
-import de.prob.logging.Logger;
-
-/**
- * This {@link CliPattern} looks for a network port number where the executable
- * listens for commands.
- * 
- * If no port number is found, {@link #notFound()} throws a {@link CliException}
- * 
- * @author plagge
- */
-public class PortPattern extends CliPattern<Integer> {
-	int port;
-
-	public PortPattern() {
-		super("Port: (\\d+)$");
-	}
-
-	@Override
-	protected void setValue(Matcher matcher) throws IllegalArgumentException {
-		port = Integer.parseInt(matcher.group(1));
-		Logger.info("Server has startet and listens on port " + port);
-	}
-
-	/**
-	 * Returns the port number.
-	 */
-	@Override
-	public Integer getValue() {
-		return port;
-	}
-
-	@Override
-	public void notFound() throws CliException {
-		throw new CliException("Could not determine port of ProB server");
-	}
-
-}
diff --git a/de.prob.core/src/de/prob/core/command/AnalyseInvariantCommand.java b/de.prob.core/src/de/prob/core/command/AnalyseInvariantCommand.java
deleted file mode 100644
index b5791a4c4efb21dbc3575f313fc9c082c78e3cf4..0000000000000000000000000000000000000000
--- a/de.prob.core/src/de/prob/core/command/AnalyseInvariantCommand.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package de.prob.core.command;
-
-import de.prob.parser.ISimplifiedROMap;
-import de.prob.prolog.output.IPrologTermOutput;
-import de.prob.prolog.term.ListPrologTerm;
-import de.prob.prolog.term.PrologTerm;
-
-public class AnalyseInvariantCommand implements ISimpleTextCommand {
-
-	private static final String UNKNOWN = "Unknown";
-	private static final String FALSE = "False";
-	private static final String TOTAL = "Total";
-	private static final String RESULT = "Result";
-	private static final String DESCRIPTION = "Desc";
-	private StringBuffer text;
-
-	@Override
-	public void writeCommand(IPrologTermOutput pto) {
-		// analyse_predicate(Type,Desc,Result,Total,False,Unknown)
-		pto.openTerm("analyse_predicate").printAtom("invariant")
-				.printVariable(DESCRIPTION).printVariable(RESULT)
-				.printVariable(TOTAL).printVariable(FALSE)
-				.printVariable(UNKNOWN).closeTerm();
-	}
-
-	@Override
-	public void processResult(ISimplifiedROMap<String, PrologTerm> bindings)
-			throws CommandException {
-		text = new StringBuffer();
-		text.append("Analysed: " + bindings.get(DESCRIPTION) + "\n");
-		text.append("-------------------------------------\n");
-		ListPrologTerm r = (ListPrologTerm) bindings.get(RESULT);
-		for (PrologTerm term : r) {
-			text.append(term);
-			text.append('\n');
-		}
-		text.append("-------------------------------------\n");
-		text.append("Total: " + bindings.get(TOTAL)+ "\n");
-		text.append("False: " + bindings.get(FALSE)+ "\n");
-		text.append("Unknown: " + bindings.get(UNKNOWN));
-	}
-
-	@Override
-	public String getResultingText() {
-		return text.toString();
-	}
-
-}
diff --git a/de.prob.core/src/de/prob/core/command/ISimpleTextCommand.java b/de.prob.core/src/de/prob/core/command/ISimpleTextCommand.java
deleted file mode 100644
index 4abbfc3687137118c7ce4b23c7bb8bba54ea035e..0000000000000000000000000000000000000000
--- a/de.prob.core/src/de/prob/core/command/ISimpleTextCommand.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package de.prob.core.command;
-
-public interface ISimpleTextCommand extends IComposableCommand{
-	String getResultingText();
-}
diff --git a/de.prob.eventb.disprover.core/.settings/org.eclipse.core.resources.prefs b/de.prob.eventb.disprover.core/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/de.prob.eventb.disprover.core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob.eventb.disprover.core/.settings/org.eclipse.core.runtime.prefs b/de.prob.eventb.disprover.core/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..5a0ad22d2a76684139fad95f6b8d209c7cd0d078
--- /dev/null
+++ b/de.prob.eventb.disprover.core/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob.eventb.disprover.core/.settings/org.eclipse.jdt.core.prefs b/de.prob.eventb.disprover.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61dca867ceb49e79d2402935261ec3e3809..0000000000000000000000000000000000000000
--- a/de.prob.eventb.disprover.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +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.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/de.prob.eventb.disprover.core/META-INF/MANIFEST.MF b/de.prob.eventb.disprover.core/META-INF/MANIFEST.MF
index 5c576f965f2a02bbf5e545be8f726771ab48f6e1..132f3d32ebc7e8d9183f16eefb2f336be1133916 100644
--- a/de.prob.eventb.disprover.core/META-INF/MANIFEST.MF
+++ b/de.prob.eventb.disprover.core/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ProB Disprover Core for EventB
+Bundle-Name: ProB Disprover Core for Event-B
 Bundle-SymbolicName: de.prob.eventb.disprover.core;singleton:=true
-Bundle-Version: 2.1.1.qualifier
-Bundle-Vendor: Heinrich-Heine University Dusseldorf
-Require-Bundle: de.prob.core;bundle-version="[9.5.1,9.6.0)",
+Bundle-Version: 2.2.0.qualifier
+Bundle-Vendor: HHU Düsseldorf STUPS Group
+Require-Bundle: de.prob.core;bundle-version="[9.6.0,9.7.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
  org.eventb.core;bundle-version="[3.5.0,4.0.0)",
  org.eventb.core.ast;bundle-version="[3.5.0,4.0.0)",
diff --git a/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.resources.prefs b/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.runtime.prefs b/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..5a0ad22d2a76684139fad95f6b8d209c7cd0d078
--- /dev/null
+++ b/de.prob.eventb.disprover.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob.eventb.disprover.ui/.settings/org.eclipse.jdt.core.prefs b/de.prob.eventb.disprover.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61dca867ceb49e79d2402935261ec3e3809..0000000000000000000000000000000000000000
--- a/de.prob.eventb.disprover.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +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.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/de.prob.eventb.disprover.ui/META-INF/MANIFEST.MF b/de.prob.eventb.disprover.ui/META-INF/MANIFEST.MF
index 0a1957bc7ef479c7b3b00a6cbd52eebf4ec38f96..0fbd232cd57c37ec4b31e46737f68ca23f529432 100644
--- a/de.prob.eventb.disprover.ui/META-INF/MANIFEST.MF
+++ b/de.prob.eventb.disprover.ui/META-INF/MANIFEST.MF
@@ -1,12 +1,12 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ProB Disprover UI for EventB
+Bundle-Name: ProB Disprover UI for Event-B
 Bundle-SymbolicName: de.prob.eventb.disprover.ui;singleton:=true
-Bundle-Version: 2.1.1.qualifier
-Bundle-Vendor: Heinrich-Heine University Dusseldorf
-Require-Bundle: de.prob.core;bundle-version="[9.5.1,9.6.0)",
- de.prob.eventb.disprover.core;bundle-version="[2.1.1,2.2.0)",
- de.prob.ui;bundle-version="[7.5.1,7.6.0)",
+Bundle-Version: 2.2.0.qualifier
+Bundle-Vendor: HHU Düsseldorf STUPS Group
+Require-Bundle: de.prob.core;bundle-version="[9.6.0,9.7.0)",
+ de.prob.eventb.disprover.core;bundle-version="[2.2.0,2.3.0)",
+ de.prob.ui;bundle-version="[7.6.0,7.7.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
  org.eclipse.osgi;bundle-version="[3.16.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
diff --git a/de.prob.eventb.disprover.ui/about.ini b/de.prob.eventb.disprover.ui/about.ini
index f04f5e337154c697cc2c45fb586dd1d42d1887ff..db4b4b6f8dd2e4b63afc62c2b53f3766a0f725e3 100644
--- a/de.prob.eventb.disprover.ui/about.ini
+++ b/de.prob.eventb.disprover.ui/about.ini
@@ -1,3 +1,2 @@
-aboutText=ProB Disprover (c) 2009 http://www.stups.uni-duesseldorf.de/ProB
-featureImage=icons/feature.png
-
+aboutText=ProB Disprover (c) 2009-2024 https://prob.hhu.de/w/
+featureImage=icons/prob32.png
diff --git a/de.prob.eventb.disprover.ui/icons/feature.png b/de.prob.eventb.disprover.ui/icons/feature.png
deleted file mode 100644
index 6e7f53357533b567f2d1d1b9e0bb3ebe072aa2d9..0000000000000000000000000000000000000000
Binary files a/de.prob.eventb.disprover.ui/icons/feature.png and /dev/null differ
diff --git a/de.prob.plugin/icons/prob.png b/de.prob.eventb.disprover.ui/icons/prob.png
similarity index 100%
rename from de.prob.plugin/icons/prob.png
rename to de.prob.eventb.disprover.ui/icons/prob.png
diff --git a/de.prob.eventb.disprover.ui/icons/prob32.png b/de.prob.eventb.disprover.ui/icons/prob32.png
new file mode 100644
index 0000000000000000000000000000000000000000..25e1873180117fc35e3ac43adde791fd14cb8fd7
Binary files /dev/null and b/de.prob.eventb.disprover.ui/icons/prob32.png differ
diff --git a/de.prob.eventb.disprover.ui/icons/prob_mini_logo.gif b/de.prob.eventb.disprover.ui/icons/prob_mini_logo.gif
deleted file mode 100644
index c6867d469651f80e12a2021e619563e3f2a39b64..0000000000000000000000000000000000000000
Binary files a/de.prob.eventb.disprover.ui/icons/prob_mini_logo.gif and /dev/null differ
diff --git a/de.prob.eventb.disprover.ui/plugin.xml b/de.prob.eventb.disprover.ui/plugin.xml
index 8b0ec03affbb9f82d4f4ba94ace0f6c264559fb6..87efaea1ff155f3f85d9d0c0f96beab75af8cdbc 100644
--- a/de.prob.eventb.disprover.ui/plugin.xml
+++ b/de.prob.eventb.disprover.ui/plugin.xml
@@ -93,7 +93,7 @@
             locationURI="popup:more_commands">
          <command
                commandId="de.prob.eventb.disprover.ui.exportpos"
-               icon="icons/prob_mini_logo.gif"
+               icon="icons/prob.png"
                label="Export POs for ProB (probcli)"
                style="push">
          </command>
diff --git a/de.prob.plugin/.classpath b/de.prob.plugin/.classpath
deleted file mode 100644
index eca7bdba8f03f22510b7980a94dbfe10c16c0901..0000000000000000000000000000000000000000
--- a/de.prob.plugin/.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/de.prob.plugin/.project b/de.prob.plugin/.project
deleted file mode 100644
index a00f814cf6f9966a13b8f02e7e113d88f0085dcd..0000000000000000000000000000000000000000
--- a/de.prob.plugin/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>de.prob.plugin</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/de.prob.plugin/META-INF/MANIFEST.MF b/de.prob.plugin/META-INF/MANIFEST.MF
deleted file mode 100644
index 1f14ba3395a4099bb25ad45877545300c9fce4f9..0000000000000000000000000000000000000000
--- a/de.prob.plugin/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: ProB Rodin2 UI Bindings
-Bundle-SymbolicName: de.prob.plugin;singleton:=true
-Bundle-Version: 2.4.1.qualifier
-Fragment-Host: de.prob.ui;bundle-version="[7.5.1,7.6.0)"
-Bundle-RequiredExecutionEnvironment: JavaSE-11
-Bundle-Vendor: HHU Düsseldorf STUPS Group
diff --git a/de.prob.plugin/build.properties b/de.prob.plugin/build.properties
deleted file mode 100644
index e3023e14e9992e9d7e6a1a62b122da44d179c756..0000000000000000000000000000000000000000
--- a/de.prob.plugin/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               fragment.xml
diff --git a/de.prob.plugin/fragment.xml b/de.prob.plugin/fragment.xml
deleted file mode 100644
index 9b58895d54d1fe0a9e7e6b205020e7b7df57dd87..0000000000000000000000000000000000000000
--- a/de.prob.plugin/fragment.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<fragment>
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            class="de.prob.ui.PerspectiveFactory"
-            icon="icons/prob.png"
-            id="de.prob.ui.perspective"
-            name="ProB"> 
-      </perspective>
-   </extension>
- <!--  <extension
-         point="org.eclipse.ui.splashHandlers">
-      <splashHandler
-            class="de.prob.plugin.Splash"
-            id="de.prob.plugin.splash">
-      </splashHandler>
-      <splashHandlerProductBinding
-            productId="org.rodinp.platform.product"
-            splashId="de.prob.plugin.splash">
-      </splashHandlerProductBinding>
-   </extension> -->
-   
-     <extension
-         point="org.eclipse.ui.menus">
-      <menuContribution
-            locationURI="menu:org.eclipse.ui.main.menu">
-         <menu
-               id="prob"
-               label="ProB"
-               mnemonic="P">
-            <menu
-                  id="contact"
-                  label="Contact"
-                  mnemonic="C">
-               <separator
-                     name="bugs">
-               </separator>
-               <separator
-                     name="contact">
-               </separator>
-            </menu>
-            <menu
-                  id="analyze"
-                  label="Analyze">
-               <separator
-                     name="analyze">
-               </separator>
-            </menu>
-         </menu>
-      </menuContribution>
-      <menuContribution
-            locationURI="toolbar:org.eclipse.ui.main.toolbar">
-         <toolbar
-               id="probtoolbar">
-         </toolbar>
-      </menuContribution>
-   </extension>
-   
-   
-
-</fragment>
diff --git a/de.prob.plugin/src/de/prob/plugin/Splash.java b/de.prob.plugin/src/de/prob/plugin/Splash.java
deleted file mode 100644
index 623339aa3a8329414fda46e755ca40191b71cdff..0000000000000000000000000000000000000000
--- a/de.prob.plugin/src/de/prob/plugin/Splash.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package de.prob.plugin;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.splash.AbstractSplashHandler;
-
-import de.prob.ui.ProbUiPlugin;
-
-public class Splash extends AbstractSplashHandler {
-
-	@Override
-	public void init(final Shell splash) {
-		super.init(splash);
-
-		final Image overlay = ProbUiPlugin.getDefault().getImageRegistry().get(
-				ProbUiPlugin.OVERLAY);
-
-		// FillLayout layout = new FillLayout();
-		//
-		// getSplash().setLayout(layout);
-
-		// Force shell to inherit the splash background
-		getSplash().setBackgroundMode(SWT.INHERIT_DEFAULT);
-
-		Label transparentIdeaLabel = new Label(getSplash(), SWT.NONE);
-		transparentIdeaLabel.setImage(overlay);
-
-		transparentIdeaLabel.setBounds(10, 220, 90, 35);
-
-		splash.layout(true);
-
-	}
-}
diff --git a/de.prob.repository/category.xml b/de.prob.repository/category.xml
index c4aa4d78350a3dc5be190fbf32415b8847478e74..cdede493083006b695834f6dbda6a14d27cb3c97 100644
--- a/de.prob.repository/category.xml
+++ b/de.prob.repository/category.xml
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <site>
 
+	<feature id="de.bmotionstudio.feature" version="0.0.0">
+		<category name="de.prob2.feature.category"/>
+	</feature>
+
 	<feature id="de.prob2.disprover.feature" version="0.0.0">
 		<category name="de.prob2.feature.category"/>
 	</feature>
diff --git a/de.prob.symbolic/.settings/org.eclipse.core.resources.prefs b/de.prob.symbolic/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/de.prob.symbolic/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob.symbolic/.settings/org.eclipse.core.runtime.prefs b/de.prob.symbolic/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..5a0ad22d2a76684139fad95f6b8d209c7cd0d078
--- /dev/null
+++ b/de.prob.symbolic/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob.symbolic/.settings/org.eclipse.jdt.core.prefs b/de.prob.symbolic/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0c68a61dca867ceb49e79d2402935261ec3e3809..0000000000000000000000000000000000000000
--- a/de.prob.symbolic/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +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.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/de.prob.symbolic/META-INF/MANIFEST.MF b/de.prob.symbolic/META-INF/MANIFEST.MF
index 64d027615331925583b685cee674cbc7fd03a8a6..bf92786c3bbdcf2cecb52deba73a4ad8f1cd8a2f 100644
--- a/de.prob.symbolic/META-INF/MANIFEST.MF
+++ b/de.prob.symbolic/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: ProB Symbolic Evaluation Support
 Bundle-SymbolicName: de.prob.symbolic;singleton:=true
-Bundle-Version: 7.5.1.qualifier
+Bundle-Version: 7.6.0.qualifier
 Bundle-Activator: de.prob.symbolic.Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
diff --git a/de.prob.symbolic/about.ini b/de.prob.symbolic/about.ini
new file mode 100644
index 0000000000000000000000000000000000000000..c63bd3114090e1361f308b6d1f06d5698114ad4f
--- /dev/null
+++ b/de.prob.symbolic/about.ini
@@ -0,0 +1,2 @@
+aboutText=ProB Symbolic Evaluation Support (c) 2013-2024 https://prob.hhu.de/w/
+featureImage=icons/prob32.png
diff --git a/de.prob.symbolic/build.properties b/de.prob.symbolic/build.properties
index e9863e281eaccc5123e82ed75713bab3e8b87bbe..94340bd457d49d874f04e79f5f20c930891368de 100644
--- a/de.prob.symbolic/build.properties
+++ b/de.prob.symbolic/build.properties
@@ -2,4 +2,6 @@ source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
+               icons/,\
+               about.ini,\
                plugin.xml
diff --git a/de.prob.symbolic/icons/prob32.png b/de.prob.symbolic/icons/prob32.png
new file mode 100644
index 0000000000000000000000000000000000000000..25e1873180117fc35e3ac43adde791fd14cb8fd7
Binary files /dev/null and b/de.prob.symbolic/icons/prob32.png differ
diff --git a/de.prob.ui/.fbprefs b/de.prob.ui/.fbprefs
deleted file mode 100755
index 82704f5a9c08cac93bebdb001e66ca615d4a8efa..0000000000000000000000000000000000000000
--- a/de.prob.ui/.fbprefs
+++ /dev/null
@@ -1,143 +0,0 @@
-#FindBugs User Preferences
-#Thu Sep 04 18:24:06 CEST 2008
-detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
-detectorBCPMethodReturnCheck=BCPMethodReturnCheck|false
-detectorBadAppletConstructor=BadAppletConstructor|false
-detectorBadResultSetAccess=BadResultSetAccess|true
-detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
-detectorBadUseOfReturnValue=BadUseOfReturnValue|true
-detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
-detectorBooleanReturnNull=BooleanReturnNull|true
-detectorCalledMethods=CalledMethods|true
-detectorCheckCalls=CheckCalls|false
-detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
-detectorCheckTypeQualifiers=CheckTypeQualifiers|true
-detectorCloneIdiom=CloneIdiom|true
-detectorComparatorIdiom=ComparatorIdiom|true
-detectorConfusedInheritance=ConfusedInheritance|true
-detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
-detectorCrossSiteScripting=CrossSiteScripting|true
-detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
-detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
-detectorDontUseEnum=DontUseEnum|true
-detectorDroppedException=DroppedException|true
-detectorDumbMethodInvocations=DumbMethodInvocations|true
-detectorDumbMethods=DumbMethods|true
-detectorDuplicateBranches=DuplicateBranches|true
-detectorEmptyZipFileEntry=EmptyZipFileEntry|true
-detectorEqStringTest=EqStringTest|false
-detectorFinalizerNullsFields=FinalizerNullsFields|true
-detectorFindBadCast=FindBadCast|false
-detectorFindBadCast2=FindBadCast2|true
-detectorFindBadEqualsImplementation=FindBadEqualsImplementation|false
-detectorFindBadForLoop=FindBadForLoop|true
-detectorFindBugsSummaryStats=FindBugsSummaryStats|true
-detectorFindCircularDependencies=FindCircularDependencies|false
-detectorFindDeadLocalStores=FindDeadLocalStores|true
-detectorFindDoubleCheck=FindDoubleCheck|true
-detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
-detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
-detectorFindFinalizeInvocations=FindFinalizeInvocations|true
-detectorFindFloatEquality=FindFloatEquality|true
-detectorFindFloatMath=FindFloatMath|false
-detectorFindHEmismatch=FindHEmismatch|true
-detectorFindInconsistentSync2=FindInconsistentSync2|false
-detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
-detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
-detectorFindMaskedFields=FindMaskedFields|true
-detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
-detectorFindNakedNotify=FindNakedNotify|true
-detectorFindNonSerializableStoreIntoSession=FindNonSerializableStoreIntoSession|true
-detectorFindNonSerializableValuePassedToWriteObject=FindNonSerializableValuePassedToWriteObject|true
-detectorFindNonShortCircuit=FindNonShortCircuit|true
-detectorFindNullDeref=FindNullDeref|true
-detectorFindOpenStream=FindOpenStream|true
-detectorFindPuzzlers=FindPuzzlers|true
-detectorFindRefComparison=FindRefComparison|true
-detectorFindReturnRef=FindReturnRef|true
-detectorFindRunInvocations=FindRunInvocations|true
-detectorFindSelfComparison=FindSelfComparison|true
-detectorFindSelfComparison2=FindSelfComparison2|true
-detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
-detectorFindSpinLoop=FindSpinLoop|true
-detectorFindSqlInjection=FindSqlInjection|true
-detectorFindTwoLockWait=FindTwoLockWait|true
-detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
-detectorFindUnconditionalWait=FindUnconditionalWait|true
-detectorFindUninitializedGet=FindUninitializedGet|true
-detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
-detectorFindUnreleasedLock=FindUnreleasedLock|true
-detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|false
-detectorFindUnsyncGet=FindUnsyncGet|true
-detectorFindUselessControlFlow=FindUselessControlFlow|true
-detectorHugeSharedStringConstants=HugeSharedStringConstants|true
-detectorIDivResultCastToDouble=IDivResultCastToDouble|true
-detectorIncompatMask=IncompatMask|true
-detectorInefficientMemberAccess=InefficientMemberAccess|false
-detectorInefficientToArray=InefficientToArray|true
-detectorInfiniteLoop=InfiniteLoop|true
-detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
-detectorInfiniteRecursiveLoop2=InfiniteRecursiveLoop2|false
-detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
-detectorInitializationChain=InitializationChain|true
-detectorInstantiateStaticClass=InstantiateStaticClass|true
-detectorInvalidJUnitTest=InvalidJUnitTest|true
-detectorIteratorIdioms=IteratorIdioms|true
-detectorLazyInit=LazyInit|false
-detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
-detectorLockedFields=LockedFields|false
-detectorMethodReturnCheck=MethodReturnCheck|true
-detectorMethods=Methods|true
-detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
-detectorMutableLock=MutableLock|true
-detectorMutableStaticFields=MutableStaticFields|false
-detectorNaming=Naming|true
-detectorNoteAnnotationRetention=NoteAnnotationRetention|true
-detectorNoteCheckReturnValue=NoteCheckReturnValue|true
-detectorNoteCheckReturnValueAnnotations=NoteCheckReturnValueAnnotations|true
-detectorNoteDirectlyRelevantTypeQualifiers=NoteDirectlyRelevantTypeQualifiers|true
-detectorNoteJCIPAnnotation=NoteJCIPAnnotation|true
-detectorNoteNonNullAnnotations=NoteNonNullAnnotations|true
-detectorNoteNonnullReturnValues=NoteNonnullReturnValues|true
-detectorNoteSuppressedWarnings=NoteSuppressedWarnings|true
-detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
-detectorNumberConstructor=NumberConstructor|true
-detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
-detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
-detectorPublicSemaphores=PublicSemaphores|false
-detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
-detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
-detectorRedundantInterfaces=RedundantInterfaces|true
-detectorReflectiveClasses=ReflectiveClasses|true
-detectorResolveAllReferences=ResolveAllReferences|false
-detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
-detectorSerializableIdiom=SerializableIdiom|true
-detectorStartInConstructor=StartInConstructor|true
-detectorStaticCalendarDetector=StaticCalendarDetector|true
-detectorStringConcatenation=StringConcatenation|true
-detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
-detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
-detectorSwitchFallthrough=SwitchFallthrough|true
-detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true
-detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
-detectorTestASM=TestASM|false
-detectorTestDataflowAnalysis=TestDataflowAnalysis|false
-detectorTestingGround=TestingGround|false
-detectorTrainFieldStoreTypes=TrainFieldStoreTypes|true
-detectorTrainNonNullAnnotations=TrainNonNullAnnotations|true
-detectorTrainUnconditionalDerefParams=TrainUnconditionalDerefParams|true
-detectorURLProblems=URLProblems|true
-detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
-detectorUnnecessaryMath=UnnecessaryMath|true
-detectorUnreadFields=UnreadFields|true
-detectorUseObjectEquals=UseObjectEquals|false
-detectorUselessSubclassMethod=UselessSubclassMethod|false
-detectorVarArgsProblems=VarArgsProblems|true
-detectorVolatileUsage=VolatileUsage|true
-detectorWaitInLoop=WaitInLoop|true
-detectorWrongMapIterator=WrongMapIterator|true
-detectorXMLFactoryBypass=XMLFactoryBypass|true
-detector_threshold=2
-effort=default
-filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false
-filter_settings_neg=|
diff --git a/de.prob.ui/.settings/org.eclipse.core.resources.prefs b/de.prob.ui/.settings/org.eclipse.core.resources.prefs
index fb2694f7a2383cf6390ad3d060ec220a7ebf8e10..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.prob.ui/.settings/org.eclipse.core.resources.prefs
+++ b/de.prob.ui/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:17:05 CET 2011
 eclipse.preferences.version=1
 encoding/<project>=UTF-8
diff --git a/de.prob.ui/.settings/org.eclipse.core.runtime.prefs b/de.prob.ui/.settings/org.eclipse.core.runtime.prefs
index 3b117ad19feee79a0afa233182efb7e81e28bcb1..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.prob.ui/.settings/org.eclipse.core.runtime.prefs
+++ b/de.prob.ui/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:17:05 CET 2011
 eclipse.preferences.version=1
 line.separator=\n
diff --git a/de.prob.ui/META-INF/MANIFEST.MF b/de.prob.ui/META-INF/MANIFEST.MF
index 5b62231a74b2ccec7e3311233ca296dc1b1929b8..f3a00b7894762cd23740847fd7b37e7b3164547a 100644
--- a/de.prob.ui/META-INF/MANIFEST.MF
+++ b/de.prob.ui/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ProB Ui Plug-in
+Bundle-Name: ProB Animator UI
 Bundle-SymbolicName: de.prob.ui;singleton:=true
-Bundle-Version: 7.5.1.qualifier
-Require-Bundle: de.prob.core;bundle-version="[9.5.1,9.6.0)",
+Bundle-Version: 7.6.0.qualifier
+Require-Bundle: de.prob.core;bundle-version="[9.6.0,9.7.0)",
  org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
diff --git a/de.prob.ui/about.ini b/de.prob.ui/about.ini
index 2bd589b72ecab060e4fa1924080ba910f58a0014..4ded1895a5ad115ec6026a29f262dc2751323d55 100644
--- a/de.prob.ui/about.ini
+++ b/de.prob.ui/about.ini
@@ -1,3 +1,2 @@
-# Feature Branding for ProB
-aboutText=ProB Model Checker (c) 2009 http://www.stups.uni-duesseldorf.de/ProB
-featureImage=icons/prob.png
+aboutText=ProB Animator (c) 2005-2024 https://prob.hhu.de/w/
+featureImage=icons/prob32.png
diff --git a/de.prob.ui/about.properties b/de.prob.ui/about.properties
deleted file mode 100644
index 632c9e487fe97a77ae273a5b8d7917c4583722d3..0000000000000000000000000000000000000000
--- a/de.prob.ui/about.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2006-2008 Heinrich-Heine University Dusseldorf.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-###############################################################################
-
-aboutText=ProB Plug-In for Rodin\n\
-\n\
-Version: {featureVersion}\n\
-\n\
-Copyright (c) 2005-2008 Heinrich-Heine University Dusseldorf.  All rights reserved.\n\
-Visit http://www.stups.uni-duesseldorf.de\n\
-\n\
-This offering is powered by Eclipse technology and includes\n\
-Eclipse plug-ins that can be installed and used with other\n\
-Eclipse (3.3)-based offerings.
diff --git a/de.prob.ui/build.properties b/de.prob.ui/build.properties
index 6c480f39f1bf02b9d3cd69ecf5d747da230d11bf..b357e324bc2aa429e6aa3e75033f63177ecd10ea 100644
--- a/de.prob.ui/build.properties
+++ b/de.prob.ui/build.properties
@@ -2,5 +2,6 @@ source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
+               about.ini,\
                plugin.xml,\
                icons/
diff --git a/de.prob.ui/icons/anim.gif b/de.prob.ui/icons/anim.gif
deleted file mode 100644
index c2a7d7ea55a6a730bbc4797d03fb74a394be2472..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/anim.gif and /dev/null differ
diff --git a/de.prob.ui/icons/new_prob_mini.png b/de.prob.ui/icons/new_prob_mini.png
deleted file mode 100644
index 36d5d6278be2e2226de7b9d4d0fc9da720e47f1b..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/new_prob_mini.png and /dev/null differ
diff --git a/de.prob.ui/icons/overlay1.png b/de.prob.ui/icons/overlay1.png
deleted file mode 100644
index 28c7e3fb85018ffeb706ea05d01fc1eead0e8e49..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/overlay1.png and /dev/null differ
diff --git a/de.prob.ui/icons/overlay2.png b/de.prob.ui/icons/overlay2.png
deleted file mode 100644
index 3158ff78de35e50d5298eccb89cf5a1e27eedc89..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/overlay2.png and /dev/null differ
diff --git a/de.prob.ui/icons/prob32.png b/de.prob.ui/icons/prob32.png
new file mode 100644
index 0000000000000000000000000000000000000000..25e1873180117fc35e3ac43adde791fd14cb8fd7
Binary files /dev/null and b/de.prob.ui/icons/prob32.png differ
diff --git a/de.prob.ui/icons/prob_mini_logo.gif b/de.prob.ui/icons/prob_mini_logo.gif
deleted file mode 100644
index c6867d469651f80e12a2021e619563e3f2a39b64..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/prob_mini_logo.gif and /dev/null differ
diff --git a/de.prob.ui/icons/splash_overlay.png b/de.prob.ui/icons/splash_overlay.png
deleted file mode 100644
index 39638f0bf2bc9a95ae5944509ee8fb841f5915de..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/splash_overlay.png and /dev/null differ
diff --git a/de.prob.ui/icons/splash_overlay_x.png b/de.prob.ui/icons/splash_overlay_x.png
deleted file mode 100644
index e5c9d55b3a4a502bbf9fe781dc4f3a1298f694a0..0000000000000000000000000000000000000000
Binary files a/de.prob.ui/icons/splash_overlay_x.png and /dev/null differ
diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml
index 19428acddec4b510d4274d03eba54bd8d0bbfda6..6a73d35678834cafd405e496d88e91d7d03b9494 100644
--- a/de.prob.ui/plugin.xml
+++ b/de.prob.ui/plugin.xml
@@ -1,8 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <plugin>
- 
-
+   <extension
+         point="org.eclipse.ui.perspectives">
+      <perspective
+            class="de.prob.ui.PerspectiveFactory"
+            icon="icons/prob.png"
+            id="de.prob.ui.perspective"
+            name="ProB"> 
+      </perspective>
+   </extension>
    <extension
          point="org.eclipse.ui.preferencePages">
       <page
@@ -21,7 +28,7 @@
             visible="true">
          <action
                class="de.prob.ui.eventb.ShowProBConfigurations"
-               icon="icons/new_prob_mini.png"
+               icon="icons/prob.png"
                id="showProBConfigurations"
                label="Show ProB Configurations"
                style="pulldown"
@@ -101,37 +108,6 @@
             name="ProB">
       </page>
    </extension>
-    <!--  
-    <extension
-         point="org.eclipse.ui.actionSets">
-      <actionSet
-            description="Web Action Set"
-            id="de.prob.core.ticket.actionSet"
-            label="Web Action Set"
-            visible="true">
-      <menu
-               id="probMenu"
-               label="ProB">
-            <separator
-                  name="bugReport">
-            </separator>
-         </menu>
-         
-         <action
-               class="de.prob.ui.ticket.OpenBugReportWebsite"
-               id="OpenBugReportWebsite"
-               label="Open Bugreport Website"
-               menubarPath="probMenu/bugReport">
-         </action>
-         <action
-               class="de.prob.ui.ticket.NewBugReportAction"
-               id="NewBugReportAction"
-               label="Submit Bugreport"
-               menubarPath="probMenu/bugReport">
-         </action>
-      </actionSet>
-   </extension>
-   -->
    
    <extension
          point="org.eclipse.ui.commands">
@@ -140,21 +116,6 @@
             id="de.prob.ui.commands.category"
             name="ProB">
       </category>
-      <command
-            categoryId="de.prob.ui.commands.category"
-            id="de.prob.ui.openWebsite"
-            name="Open Website">
-         <commandParameter
-               id="de.prob.ui.openwebsite.url"
-               name="URL"
-               optional="false">
-         </commandParameter>
-      </command>
-      <command
-            categoryId="de.prob.ui.commands.category"
-            id="de.prob.ui.bugreport"
-            name="Submit Bugreport">
-      </command>
       <command
             categoryId="de.prob.ui.commands.category"
             id="de.prob.ui.probconfiguration"
@@ -320,16 +281,6 @@
             id="de.prob.ui.opview.checks"
             name="Checks">
       </command>
-      <command
-            categoryId="de.prob.ui.commands.category"
-            id="de.prob.ui.exampleanalyzecommand"
-            name="Example for Analyze Commands">
-      </command>
- <!--     <command
-            id="de.prob.ui.startdmc"
-            name="Start Distributed Modelcheck">
-      </command>
- -->     
       <command
           id="de.prob.ui.ltl.counterexampleviewmenuhandler"
           name="CounterExampleView Menu Command">
@@ -370,18 +321,6 @@
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
-      <handler
-            commandId="de.prob.ui.openWebsite">
-         <class
-               class="de.prob.ui.internal.OpenWebsiteCommand">
-         </class>
-      </handler>
-      <handler
-            commandId="de.prob.ui.bugreport">
-         <class
-               class="de.prob.ui.ticket.SubmitBugreportCommand">
-         </class>
-      </handler>
       <handler
             commandId="de.prob.ui.probconfiguration">
          <class
@@ -678,12 +617,6 @@
          </enabledWhen>
             
       </handler>
-      <handler
-            commandId="de.prob.ui.exampleanalyzecommand">
-         <class
-               class="de.prob.ui.internal.InvariantAnalyzeHandler">
-         </class>
-      </handler>
       <handler commandId="de.prob.ui.ltl.counterexampleviewmenuhandler">
             <class class="de.prob.ui.ltl.handler.CounterExampleViewMenuHandler"/>
             <enabledWhen>
@@ -831,46 +764,9 @@
             </with>
          </enabledWhen>
       </handler>
-<!--      <handler
-            commandId="de.prob.ui.startdmc">
-         <class
-               class="de.prob.ui.eventb.StartDistributedModelcheckHandler">
-         </class>
-         <enabledWhen>
-            <with
-                  variable="selection">
-               <iterate
-                     operator="or">
-                  <instanceof
-                        value="org.eventb.core.IEventBRoot">
-                  </instanceof>
-               </iterate>
-            </with>
-         </enabledWhen>
-      </handler> -->
    </extension>
    <extension
          point="org.eclipse.ui.menus">
-      <menuContribution
-            locationURI="menu:contact">
-         <command
-               commandId="de.prob.ui.openWebsite"
-               label="Open ProB Website"
-               mnemonic="W"
-               style="push">  
-            <parameter
-                  name="de.prob.ui.openwebsite.url"
-                  value="http://www.stups.uni-duesseldorf.de/ProB">
-            </parameter>
-         </command>
-         <command
-               commandId="de.prob.ui.bugreport"
-               label="Open Bugtracker Website"
-               mnemonic="W"
-               style="push">
-         </command>
-      </menuContribution>
-
       <menuContribution
             locationURI="toolbar:de.prob.ui.StateView">
          <command
@@ -1067,38 +963,20 @@
       </with>
             </visibleWhen>
          </command>
-  <!--       <command
-               commandId="de.prob.ui.startdmc"
-               icon="icons/prob.png"
-               label="Start Distributed Modelcheck"
-               style="push">
-            <visibleWhen>
-      <with
-            variable="selection">
-         <iterate
-               operator="or">
-            <instanceof
-                  value="org.eventb.core.IEventBRoot">
-            </instanceof>
-         </iterate>
-      </with>
-            </visibleWhen>
-         </command>
-  -->
          <menu
                commandId="de.prob.ui.navigator.context"
-               icon="icons/new_prob_mini.png"
+               icon="icons/prob.png"
                id="more_commands"
                label="ProB Standalone ...">
             <command
                   commandId="de.prob.ui.newcore.export"
-                  icon="icons/prob_mini_logo.gif"
+                  icon="icons/prob.png"
                   label="Export for use in ProB Standalone"
                   style="push">
             </command>
             <command
                   commandId="de.prob.ui.classic.open"
-                  icon="icons/prob_mini_logo.gif"
+                  icon="icons/prob.png"
                   label="Open in ProB Standalone"
                   style="push">
             </command>
@@ -1194,18 +1072,6 @@
             </command>
          </menu>
       </menuContribution>
-      <!--
-      <menuContribution
-            allPopups="false"
-            locationURI="menu:analyze">
-         <command
-               commandId="de.prob.ui.exampleanalyzecommand"
-               label="Analyze Invariant"
-               mnemonic="I"
-               style="toggle">
-         </command>
-      </menuContribution>
-      -->
       <menuContribution locationURI="menu:de.prob.ui.ltl.CounterExampleView">
          <menu
                label="Show as">
diff --git a/de.prob.ui/src/de/prob/ui/ProbUiPlugin.java b/de.prob.ui/src/de/prob/ui/ProbUiPlugin.java
index 05e469e957678b8cb35713a793a913cb01961103..adbc68fa214a1f57c4a521b34c5b10ee4e0af26a 100644
--- a/de.prob.ui/src/de/prob/ui/ProbUiPlugin.java
+++ b/de.prob.ui/src/de/prob/ui/ProbUiPlugin.java
@@ -27,7 +27,6 @@ public class ProbUiPlugin extends AbstractUIPlugin {
 	public static final String IMG_TIMEOUT = "IMG_TIMEOUT";
 	public static final String IMG_ENABLED = "IMG_ENABLED";
 	public static final String IMG_DOUBLECLICK = "IMG_DOUBLECLICK";
-	public static final String OVERLAY = "OVERLAY";
 	public static final String CHANGE_STAR = "change_star";
 	public static final String IMG_RELOAD = "IMG_RELOAD";
 
@@ -84,9 +83,6 @@ public class ProbUiPlugin extends AbstractUIPlugin {
 				imageDescriptorFromPlugin(PLUGIN_ID, "icons/enabled.png"));
 		reg.put(IMG_DOUBLECLICK,
 				imageDescriptorFromPlugin(PLUGIN_ID, "icons/doubleclick.png"));
-		reg.put(OVERLAY,
-				imageDescriptorFromPlugin(PLUGIN_ID,
-						"icons/splash_overlay_x.png"));
 		reg.put(CHANGE_STAR,
 				imageDescriptorFromPlugin(PLUGIN_ID, "icons/star.png"));
 		reg.put(IMG_RELOAD,
diff --git a/de.prob.ui/src/de/prob/ui/eventb/AnimationPreferencesDialog.java b/de.prob.ui/src/de/prob/ui/eventb/AnimationPreferencesDialog.java
index 0466131ae4d10556bc386f3fd73127074b2f8ed3..e494ef161870165479aa4097cb8016f94fbcb3be 100644
--- a/de.prob.ui/src/de/prob/ui/eventb/AnimationPreferencesDialog.java
+++ b/de.prob.ui/src/de/prob/ui/eventb/AnimationPreferencesDialog.java
@@ -504,7 +504,7 @@ public class AnimationPreferencesDialog extends PreferenceDialog {
 		@Override
 		public Image getImage(final Object element) {
 			return AbstractUIPlugin.imageDescriptorFromPlugin(pluginId,
-					"icons/new_prob_mini.png").createImage();
+					"icons/prob.png").createImage();
 		}
 	}
 
diff --git a/de.prob.ui/src/de/prob/ui/eventb/ClassicPreferences.java b/de.prob.ui/src/de/prob/ui/eventb/ClassicPreferences.java
index 1b3d65db9e473cbdac6b92baee99dd770046bb3b..f7166b138e8eb16e95a984ad0889aff23f08ea31 100644
--- a/de.prob.ui/src/de/prob/ui/eventb/ClassicPreferences.java
+++ b/de.prob.ui/src/de/prob/ui/eventb/ClassicPreferences.java
@@ -89,8 +89,7 @@ public class ClassicPreferences extends PreferencePage implements
 		browseButton.addSelectionListener(new PushButton(pageComponent.getShell(), text));
 		Label versionRemark = new Label(pageComponent, SWT.WRAP);
 		versionRemark.setText(
-				"Note: This needs a version of ProB2-UI (jar file) that is at least 1.0.1 or a version of ProB Tcl/Tk that is at least 1.3.1.\nYou can obtain both from http://www.stups.uni-duesseldorf.de/ProB\n"); // precisely
-																																																								// 1.3.0-beta6
+				"Note: This needs a version of ProB2-UI (jar file) that is at least 1.0.1 or a version of ProB Tcl/Tk that is at least 1.3.1.\nYou can obtain both from https://prob.hhu.de/w/index.php/Download\n"); // precisely 1.3.0-beta6
 
 		GridData gridData2 = new GridData();
 		gridData2.horizontalSpan = 3;
diff --git a/de.prob.ui/src/de/prob/ui/eventb/StartDistributedModelcheckHandler.java b/de.prob.ui/src/de/prob/ui/eventb/StartDistributedModelcheckHandler.java
deleted file mode 100644
index 2fc868c1599a8642dad1f9c994d2ea5026680c17..0000000000000000000000000000000000000000
--- a/de.prob.ui/src/de/prob/ui/eventb/StartDistributedModelcheckHandler.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package de.prob.ui.eventb;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.net.Socket;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eventb.core.IContextRoot;
-import org.eventb.core.IEventBRoot;
-import org.eventb.core.IMachineRoot;
-
-import de.prob.core.Animator;
-import de.prob.core.LimitedLogger;
-import de.prob.core.command.CommandException;
-import de.prob.core.command.LoadEventBModelCommand;
-import de.prob.logging.Logger;
-import de.prob.prolog.term.PrologTerm;
-
-public class StartDistributedModelcheckHandler extends AbstractHandler implements IHandler {
-
-	public static class ModificationListener implements IResourceChangeListener {
-
-		private final IPath path;
-
-		public ModificationListener(final IFile resource) {
-			if (resource == null) {
-				path = null;
-			} else {
-				this.path = resource.getProject().getFullPath();
-			}
-		}
-
-		public void resourceChanged(final IResourceChangeEvent event) {
-			if (path != null) {
-				final IResourceDelta delta = event.getDelta();
-				IResourceDelta member = delta.findMember(path);
-				if (member != null) {
-					Animator.getAnimator().setDirty();
-				}
-			}
-		}
-	}
-
-	private ISelection fSelection;
-
-	public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-		fSelection = HandlerUtil.getCurrentSelection(event);
-
-		// Get the Selection
-		final IEventBRoot rootElement = getRootElement();
-		final IFile resource = extractResource(rootElement);
-
-		if (!checkErrorMarkers(resource)) {
-			Logger.notifyUser("A model/context in your project contains Errors or Warnings. This can lead to unexpected behavior (e.g. missing variables) when animating.");
-		}
-		;
-
-		if (resource != null) {
-			LimitedLogger.getLogger().log("user started distributed modelcheck",
-					rootElement.getElementName(), null);
-			try {
-                PrologTerm output = LoadEventBModelCommand.toPrologTerm(rootElement);
-                Socket s = null;
-                try {
-                    s = new Socket("localhost", 4444);
-                    new ObjectOutputStream(s.getOutputStream()).writeObject(output);
-                } catch (IOException e) {
-                    Logger.notifyUser("unable to connect to master", e);
-                } finally {
-                    if (s != null) {
-                        try {
-                            s.close();
-                        } catch (IOException e) {
-                            // ignore
-                        }
-                    }
-                }
-            } catch (CommandException e) {
-                throw new ExecutionException("unable to translate model", e);
-            }
-		}
-		return null;
-	}
-
-	private boolean checkErrorMarkers(final IFile resource) {
-		IProject project = resource.getProject();
-		try {
-			IMarker[] markers = project.findMarkers(
-					"org.eclipse.core.resources.problemmarker", true,
-					IResource.DEPTH_INFINITE);
-			return markers.length == 0;
-		} catch (CoreException e1) {
-
-		}
-		return false;
-	}
-
-	private IEventBRoot getRootElement() {
-		IEventBRoot root = null;
-		if (fSelection instanceof IStructuredSelection) {
-			final IStructuredSelection ssel = (IStructuredSelection) fSelection;
-			if (ssel.size() == 1) {
-				final Object element = ssel.getFirstElement();
-				if (element instanceof IEventBRoot) {
-					root = (IEventBRoot) element;
-				}
-			}
-		}
-		return root;
-	}
-
-	private IFile extractResource(final IEventBRoot rootElement) {
-		IFile resource = null;
-		if (rootElement == null) {
-			resource = null;
-		} else if (rootElement instanceof IMachineRoot) {
-			resource = ((IMachineRoot) rootElement).getSCMachineRoot()
-					.getResource();
-		} else if (rootElement instanceof IContextRoot) {
-			resource = ((IContextRoot) rootElement).getSCContextRoot()
-					.getResource();
-		}
-		return resource;
-	}
-
-	public void selectionChanged(final IAction action,
-			final ISelection selection) {
-		fSelection = selection;
-	}
-
-}
diff --git a/de.prob.ui/src/de/prob/ui/internal/GenericAnalyzeHandler.java b/de.prob.ui/src/de/prob/ui/internal/GenericAnalyzeHandler.java
deleted file mode 100644
index 41168305cac6fff9a91c9aee50451abcbfe66f7c..0000000000000000000000000000000000000000
--- a/de.prob.ui/src/de/prob/ui/internal/GenericAnalyzeHandler.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package de.prob.ui.internal;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-import de.prob.core.Animator;
-import de.prob.core.ProBCommandJob;
-import de.prob.core.ProBJobFinishedListener;
-import de.prob.core.command.CommandException;
-import de.prob.core.command.IComposableCommand;
-import de.prob.core.command.ISimpleTextCommand;
-import de.prob.logging.Logger;
-
-public abstract class GenericAnalyzeHandler extends AbstractHandler {
-
-	public class GenericAnalyzeFinishedHandler extends ProBJobFinishedListener {
-
-		private final Shell shell;
-
-		public GenericAnalyzeFinishedHandler(Shell shell) {
-			this.shell = shell;
-		}
-
-		@Override
-		protected void showResult(IComposableCommand command, Animator animator) {
-			if (command instanceof ISimpleTextCommand) {
-				ISimpleTextCommand textcommand = (ISimpleTextCommand) command;
-				String text = textcommand.getResultingText();
-				display(text);
-			} else {
-				Logger.notifyUser(
-						"The invoked command did not implement the correct interface. Please report this bug.",
-						new CommandException(
-								"Error in "
-										+ command.getClass()
-										+ ". Class should implement ISimpleTextCommand."));
-			}
-		}
-
-		private void display(final String text) {
-
-			final TitleAreaDialog titleAreaDialog = new TitleAreaDialog(shell) {
-
-				@Override
-				protected Control createDialogArea(Composite parent) {
-
-					setTitle(name);
-
-					Composite composite = (Composite) super
-							.createDialogArea(parent);
-					Text t = new Text(composite, SWT.WRAP | SWT.MULTI | SWT.BORDER
-							| SWT.H_SCROLL | SWT.V_SCROLL);
-					GridData gridData =
-					      new GridData(
-					        GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
-					    gridData.grabExcessVerticalSpace = true;
-
-					    t.setLayoutData(gridData);
-
-
-					t.append(text);
-					return composite;
-				}
-
-			};
-
-			final Runnable runnable = new Runnable() {
-				@Override
-				public void run() {
-					titleAreaDialog.open();
-				}
-			};
-			shell.getDisplay().asyncExec(runnable);
-		}
-	}
-
-	private final ISimpleTextCommand command;
-	private final String name;
-
-	public GenericAnalyzeHandler(ISimpleTextCommand command, String name) {
-		this.command = command;
-		this.name = name;
-	}
-
-	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
-		final Shell shell = HandlerUtil.getActiveShell(event);
-		Animator animator = Animator.getAnimator();
-		if (animator.isMachineLoaded()) {
-			final ProBCommandJob job = new ProBCommandJob(name, animator,
-					command);
-			GenericAnalyzeFinishedHandler finishedHandler = new GenericAnalyzeFinishedHandler(
-					shell);
-			job.setUser(true);
-			job.addJobChangeListener(finishedHandler);
-			job.schedule();
-
-		} else {
-			Logger.notifyUser("No ProB animation running. This is a bug. Please submit a report. Error in declaraion of class "+this.getClass());
-		}
-		return null;
-	}
-
-}
diff --git a/de.prob.ui/src/de/prob/ui/internal/InvariantAnalyzeHandler.java b/de.prob.ui/src/de/prob/ui/internal/InvariantAnalyzeHandler.java
deleted file mode 100644
index e7001d44c1b35e59b25664f1891b03a410659a75..0000000000000000000000000000000000000000
--- a/de.prob.ui/src/de/prob/ui/internal/InvariantAnalyzeHandler.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.prob.ui.internal;
-
-import de.prob.core.command.AnalyseInvariantCommand;
-
-public class InvariantAnalyzeHandler extends GenericAnalyzeHandler {
-
-	public InvariantAnalyzeHandler() {
-		super(new AnalyseInvariantCommand(), "Analyze Invariant");
-	}
-
-}
diff --git a/de.prob.ui/src/de/prob/ui/internal/OpenWebsiteCommand.java b/de.prob.ui/src/de/prob/ui/internal/OpenWebsiteCommand.java
deleted file mode 100644
index 8eb13950254a4eb912255c3abc8881c0d9c23978..0000000000000000000000000000000000000000
--- a/de.prob.ui/src/de/prob/ui/internal/OpenWebsiteCommand.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.prob.ui.internal;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-
-import de.prob.logging.Logger;
-
-public class OpenWebsiteCommand extends AbstractHandler {
-
-	public Object execute(final ExecutionEvent event) throws ExecutionException {
-
-		String url = event.getParameter("de.prob.ui.openwebsite.url");
-
-		URL websiteurl = null;
-		try {
-			websiteurl = new URL(url);
-		} catch (MalformedURLException e1) {
-			// File a bug report!
-			String message = "Internal error. Malformed website URL (" + url
-					+ "). Please file a bug report.";
-			Logger.notifyUser(message, e1);
-			return null;
-		}
-
-		IWorkbenchBrowserSupport browserSupport = PlatformUI.getWorkbench()
-				.getBrowserSupport();
-
-		try {
-			browserSupport.getExternalBrowser().openURL(websiteurl);
-		} catch (PartInitException e1) {
-			String message = "Internal error. Cannt open external browser.";
-			Logger.notifyUser(message, e1);
-			return null;
-		}
-
-		return null;
-	}
-
-}
diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java
index 495428194cefa91a136bb6644aa49a1a5f7270a5..b5fbdd2ea8dba64636fc03ba9a3813965e7df46a 100644
--- a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java
+++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java
@@ -95,12 +95,7 @@ public abstract class CounterExamplePropositionFigure extends Figure implements
 			final IFigure parent = getParent();
 
 			if (parent != null) {
-				// We know that each element is of type
-				// IFigure, but IFigure.getParent() returns just a list
-				@SuppressWarnings("unchecked")
-				final List<IFigure> figures = parent.getChildren();
-
-				for (IFigure figure : figures) {
+				for (IFigure figure : parent.getChildren()) {
 					if (figure instanceof CounterExamplePropositionFigure) {
 						if (((CounterExamplePropositionFigure) figure)
 								.getModel().equals(proposition)) {
diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java
index 038ed22b66e301b266b548f92473c374914099e8..b1ccd579a86b27a4c258a3d65fead156b7beb64d 100644
--- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java
+++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java
@@ -310,12 +310,7 @@ public class CounterExampleTab {
 
 			treeViewer.refresh();
 			tableViewer.refresh();
-			// We know that each element is of type
-			// EditPart, but AbstractEditPart.getChildren() returns just
-			// a list
-			@SuppressWarnings("unchecked")
-			List<EditPart> children = rootEditPart.getChildren();
-			for (EditPart child : children) {
+			for (EditPart child : rootEditPart.getChildren()) {
 				child.refresh();
 			}
 
diff --git a/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java b/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java
deleted file mode 100644
index 45c1bcf0d446f403c3f80daefe4402852f2c4f19..0000000000000000000000000000000000000000
--- a/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package de.prob.ui.ticket;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.IWebBrowser;
-
-public class SubmitBugreportCommand extends AbstractHandler {
-
-	public Object execute(final ExecutionEvent event) throws ExecutionException {
-		try {
-			IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser();
-			browser.openURL(new URL("https://github.com/hhu-stups/prob-issues/issues/new/choose"));
-		} catch (MalformedURLException | PartInitException e) {
-			throw new ExecutionException(e.getMessage(), e);
-		}
-		return null;
-	}
-
-}
diff --git a/de.prob2.disprover.feature/.settings/org.eclipse.core.resources.prefs b/de.prob2.disprover.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/de.prob2.disprover.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob2.disprover.feature/.settings/org.eclipse.core.runtime.prefs b/de.prob2.disprover.feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..5a0ad22d2a76684139fad95f6b8d209c7cd0d078
--- /dev/null
+++ b/de.prob2.disprover.feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob2.disprover.feature/feature.xml b/de.prob2.disprover.feature/feature.xml
index 8a0cd587dde486b7e0de63cd17c218df9add17b6..b3379b38eadf225395506d082006d1aa775804a7 100644
--- a/de.prob2.disprover.feature/feature.xml
+++ b/de.prob2.disprover.feature/feature.xml
@@ -1,12 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="de.prob2.disprover.feature"
-      label="ProB for Rodin3 - (Dis)Prover"
-      version="3.1.1.qualifier"
-      provider-name="HHU Düsseldorf STUPS Group">
+      label="ProB for Rodin - (Dis)Prover"
+      version="3.2.0.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group"
+      plugin="de.prob.eventb.disprover.ui">
 
-   <description url="http://www.stups.uni-duesseldorf.de/ProB">
-      ProB is an animator and model checker for the B-Method. It allows
+   <description url="https://prob.hhu.de/w/">
+Allows using ProB as a (dis)prover while proving POs.
+
+ProB is an animator and model checker for the B-Method. It allows
 fully automatic animation of many B specifications, and can be
 used to systematically check a specification for errors.
 Part of the research and development was conducted within the
@@ -228,9 +231,8 @@ litigation.
    </license>
 
    <requires>
-      <import plugin="de.prob.core" version="9.5.1" match="equivalent"/>
-      <import plugin="de.prob.eventb.disprover.core" version="2.1.1" match="equivalent"/>
-      <import plugin="de.prob.ui" version="7.5.1" match="equivalent"/>
+      <import plugin="de.prob.core" version="9.6.0" match="equivalent"/>
+      <import plugin="de.prob.ui" version="7.6.0" match="equivalent"/>
       <import plugin="org.eclipse.core.runtime" version="3.2.0" match="compatible"/>
       <import plugin="org.eclipse.osgi" version="3.16.0" match="compatible"/>
       <import plugin="org.eclipse.ui" version="3.118.0" match="compatible"/>
diff --git a/de.prob2.feature/.settings/org.eclipse.core.resources.prefs b/de.prob2.feature/.settings/org.eclipse.core.resources.prefs
index ae8dfb5865c1107f8366e1e8c2af6ad2d1a7a9f1..99f26c0203a7844de00dbfc56e6a35d8ed3c022c 100644
--- a/de.prob2.feature/.settings/org.eclipse.core.resources.prefs
+++ b/de.prob2.feature/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:17:25 CET 2011
 eclipse.preferences.version=1
 encoding/<project>=UTF-8
diff --git a/de.prob2.feature/.settings/org.eclipse.core.runtime.prefs b/de.prob2.feature/.settings/org.eclipse.core.runtime.prefs
index 57a8ae0b2a629cab658cebb8c79bd02f33f25fb0..5a0ad22d2a76684139fad95f6b8d209c7cd0d078 100644
--- a/de.prob2.feature/.settings/org.eclipse.core.runtime.prefs
+++ b/de.prob2.feature/.settings/org.eclipse.core.runtime.prefs
@@ -1,3 +1,2 @@
-#Tue Nov 29 16:17:25 CET 2011
 eclipse.preferences.version=1
 line.separator=\n
diff --git a/de.prob2.feature/feature.xml b/de.prob2.feature/feature.xml
index fa3195af51a69016099fa03750043d52064a751b..90a50e28168c25402d158d064acd4b67a2f4b0ca 100644
--- a/de.prob2.feature/feature.xml
+++ b/de.prob2.feature/feature.xml
@@ -1,12 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="de.prob2.feature"
-      label="ProB for Rodin3"
-      version="3.1.1.qualifier"
-      provider-name="HHU Düsseldorf STUPS Group">
+      label="ProB for Rodin"
+      version="3.2.0.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group"
+      plugin="de.prob.ui">
 
-   <description url="http://www.stups.uni-duesseldorf.de/ProB">
-      ProB is an animator and model checker for the B-Method. It allows
+   <description url="https://prob.hhu.de/w/">
+ProB animator plug-in for Rodin.
+Note: BMotion Studio, previously included with the ProB animator, is now a separate plug-in.
+
+ProB is an animator and model checker for the B-Method. It allows
 fully automatic animation of many B specifications, and can be
 used to systematically check a specification for errors.
 Part of the research and development was conducted within the
@@ -228,56 +232,25 @@ litigation.
    </license>
 
    <requires>
-      <import plugin="de.bmotionstudio.gef.editor" version="5.6.1" match="equivalent"/>
-      <import plugin="de.prob.core" version="9.5.1" match="equivalent"/>
-      <import plugin="de.prob.ui" version="7.5.1" match="equivalent"/>
-      <import plugin="org.eclipse.core.databinding" version="1.10.0" match="compatible"/>
-      <import plugin="org.eclipse.core.databinding.beans" version="1.7.0" match="compatible"/>
       <import plugin="org.eclipse.core.expressions" version="3.7.0" match="compatible"/>
       <import plugin="org.eclipse.core.filesystem" version="1.7.0" match="compatible"/>
       <import plugin="org.eclipse.core.resources" version="3.13.0" match="compatible"/>
       <import plugin="org.eclipse.core.runtime" version="3.20.0" match="compatible"/>
       <import plugin="org.eclipse.gef" version="3.11.0" match="compatible"/>
-      <import plugin="org.eclipse.jface.databinding" version="1.12.0" match="compatible"/>
       <import plugin="org.eclipse.ui" version="3.118.0" match="compatible"/>
       <import plugin="org.eclipse.ui.ide" version="3.18.0" match="compatible"/>
-      <import plugin="org.eclipse.ui.navigator" version="3.9.0" match="compatible"/>
-      <import plugin="org.eclipse.ui.views" version="3.10.0" match="compatible"/>
       <import plugin="org.eventb.core" version="3.5.0" match="compatible"/>
       <import plugin="org.eventb.core.ast" version="3.5.0" match="compatible"/>
       <import plugin="org.eventb.core.seqprover" version="3.4.0" match="compatible"/>
       <import plugin="org.rodinp.core" version="1.9.0" match="compatible"/>
    </requires>
 
-   <plugin
-         id="de.bmotionstudio.gef.editor"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="de.bmotionstudio.rodin"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
    <plugin
          id="de.prob.core"
          download-size="0"
          install-size="0"
          version="0.0.0"/>
 
-   <plugin
-         id="de.prob.plugin"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
    <plugin
          id="de.prob.ui"
          download-size="0"
diff --git a/de.prob2.symbolic.feature/.settings/org.eclipse.core.resources.prefs b/de.prob2.symbolic.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c
--- /dev/null
+++ b/de.prob2.symbolic.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/de.prob2.symbolic.feature/.settings/org.eclipse.core.runtime.prefs b/de.prob2.symbolic.feature/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..5a0ad22d2a76684139fad95f6b8d209c7cd0d078
--- /dev/null
+++ b/de.prob2.symbolic.feature/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/de.prob2.symbolic.feature/feature.xml b/de.prob2.symbolic.feature/feature.xml
index 3554d9302de9ccbc1a486428fef698ea495ca1e8..633d34bf18c7368540784dabc32aa5f6b3a13bc1 100644
--- a/de.prob2.symbolic.feature/feature.xml
+++ b/de.prob2.symbolic.feature/feature.xml
@@ -1,12 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="de.prob2.symbolic.feature"
-      label="ProB for Rodin3 - Symbolic Constants Support"
-      version="3.1.1.qualifier"
-      provider-name="HHU Düsseldorf STUPS Group">
+      label="ProB for Rodin - Symbolic Constants Support"
+      version="3.2.0.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group"
+      plugin="de.prob.symbolic">
 
-   <description url="http://www.stups.uni-duesseldorf.de/ProB">
-      ProB is an animator and model checker for the B-Method. It allows
+   <description url="https://prob.hhu.de/w/">
+Allows marking constants as symbolic so that the ProB animator will not
+evaluate them eagerly.
+
+ProB is an animator and model checker for the B-Method. It allows
 fully automatic animation of many B specifications, and can be
 used to systematically check a specification for errors.
 Part of the research and development was conducted within the
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index d64cd4917707c1f8861d8cb53dd15194d4248596..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a80b22ce5cffec8b48ee79b11c67945e91f99d5f..a4413138c96c6ed29b6e2f5e147cd77426ae4409 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 1aa94a4269074199e6ed2c37e8db3e0826030965..b740cf13397ab16efc23cba3d6234ff8433403b1 100755
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
diff --git a/settings.gradle b/settings.gradle
index 8093362103c41d6b6a0507854fc9a09cafb71a83..9361a1857bdcf800ed1cfbf9bbefbe961573ed41 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include 'de.prob.core', 'de.prob.core.tests', 'de.bmotionstudio.gef.editor' ,'de.bmotionstudio.rodin' , 'de.prob.plugin', 'de.prob.ui', 'de.prob2.feature', 'de.prob.symbolic', 'de.prob2.symbolic.feature', 'de.prob.eventb.disprover.core', 'de.prob.eventb.disprover.ui', 'de.prob2.disprover.feature'
+include 'de.prob.core', 'de.prob.core.tests', 'de.prob.ui', 'de.prob2.feature', 'de.bmotionstudio.gef.editor', 'de.bmotionstudio.feature', 'de.prob.symbolic', 'de.prob2.symbolic.feature', 'de.prob.eventb.disprover.core', 'de.prob.eventb.disprover.ui', 'de.prob2.disprover.feature'
diff --git a/tycho_build.gradle b/tycho_build.gradle
index 7fabe74f09d017faa8cb5a0d22e0e382f208f3c2..9f0f0bcfcd2684cb3cde2366d83a5538470949af 100644
--- a/tycho_build.gradle
+++ b/tycho_build.gradle
@@ -12,7 +12,7 @@
 apply plugin: 'base'
 
 import groovy.io.FileType
-project.ext.tychoVersion = "2.7.5"
+project.ext.tychoVersion = "4.0.8"
 
 try {
 	workspacePath = workspacePath
@@ -377,7 +377,8 @@ task createRepository() {
 }
 
 task deleteRepository(type: Delete) {
-	delete(workspacePath + "${repositoryName}")
+	delete(workspacePath + repositoryName + "/pom.xml")
+	delete(workspacePath + repositoryName + "/target")
 }
 clean.dependsOn(deleteRepository)
 
@@ -414,7 +415,7 @@ def artifact(artifactId,versionNumber) {"""
 				<configuration>
 					<release>11</release>
 				</configuration>
-				</plugin>
+			</plugin>
 		</plugins>
 	</build>
 """}
@@ -473,6 +474,7 @@ def parentPom(artifactId) {"""\
 
 	<!-- this is the parent POM from which all modules inherit common settings -->
 	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<tycho-version>${tychoVersion}</tycho-version>
 	</properties>