diff --git a/build.gradle b/build.gradle
index b3b707af1a07cd484b0a4c0c003099f7a460eb65..205642b5ddc596bef7f8ca1338034bc4c8114a79 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,12 @@
+// to trigger a full tycho build please use 'gradle deleteFromClassPath completeInstall'
 
-targetRepositories = ["http://www.stups.uni-duesseldorf.de/prob_dev_target/","http://download.eclipse.org/releases/indigo/","http://rodin-b-sharp.sourceforge.net/updates"]	
 
-groupID = "de.prob"
+project.ext{
+	
+	targetRepositories = ["http://www.stups.uni-duesseldorf.de/prob_dev_target/","http://download.eclipse.org/releases/indigo/","http://rodin-b-sharp.sourceforge.net/updates"]	
+
+	groupID = "de.prob"
+}
 
 apply from: 'tycho_build.gradle'
 
@@ -64,16 +69,16 @@ def download(address,target) {
 }
 
 task downloadCli << {
-		dir = workspacePath+'de.prob.core/prob/'
+		def dir = workspacePath+'de.prob.core/prob/'
 		delete file(dir)
 	    new File(dir).mkdirs() 
 	
 		['leopard64':'macos','linux':'linux','linux64':'linux64','win32':'windows'].each {
-		n = it.getKey()
+		def n = it.getKey()
 	
-		targetdir = dir+it.getValue()
-		targetzip = dir+"probcli_${n}.zip"
-		url = "http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip"
+		def targetdir = dir+it.getValue()
+		def targetzip = dir+"probcli_${n}.zip"
+		def url = "http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip"
 		download(url,targetzip)
 	    FileTree zip = zipTree(targetzip)
 	    copy {
@@ -83,8 +88,8 @@ task downloadCli << {
 		delete file(targetzip)
 	}
 
-	targetdir = dir+"windows/"
-	targetzip = targetdir+"windowslib.zip"
+	def targetdir = dir+"windows/"
+	def targetzip = targetdir+"windowslib.zip"
 	download("http://nightly.cobra.cs.uni-duesseldorf.de/cli/windowslib.zip",targetzip)
 	FileTree zip = zipTree(targetzip)
 	    copy {
diff --git a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
index d51f7c6fbfc3643ab3835dfea27032834f06a5f2..b9f7194b6c271a84dc5615ce6df02a6a88eef5f8 100644
--- a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
+++ b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: BMotion Studio Editor Plug-in
 Bundle-SymbolicName: de.bmotionstudio.gef.editor;singleton:=true
-Bundle-Version: 5.4.0.qualifier
+Bundle-Version: 5.4.2.qualifier
 Bundle-Activator: de.bmotionstudio.gef.editor.BMotionEditorPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
@@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.databinding.beans;bundle-version="[1.1.1,2.0.0)",
  org.eclipse.gef;bundle-version="[3.7.0,4.0.0)";visibility:=reexport,
  de.prob.core;bundle-version="[9.3.0,9.4.0)";visibility:=reexport,
- org.eventb.core;bundle-version="[2.1.0,2.6.0)"
+ org.eventb.core;bundle-version="[2.1.0,2.6.0)",
+ org.eclipse.help;bundle-version="3.5.100"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Eclipse-RegisterBuddy: de.prob.core
diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif
new file mode 100644
index 0000000000000000000000000000000000000000..86550fe9f4505c88287a70add9bb89bd24d0e8b2
Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/linkto_help.gif differ
diff --git a/de.bmotionstudio.gef.editor/icons/icon_add.gif b/de.bmotionstudio.gef.editor/icons/icon_add.gif
deleted file mode 100644
index 1b0630841412d754fd6546e33923ad1ac08a2a9b..0000000000000000000000000000000000000000
Binary files a/de.bmotionstudio.gef.editor/icons/icon_add.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_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/lib/ext/._antlr-2.7.7.jar1851805142189607825.tmp b/de.bmotionstudio.gef.editor/lib/ext/._antlr-2.7.7.jar1851805142189607825.tmp
new file mode 100644
index 0000000000000000000000000000000000000000..5e5f14b35584eac2a9f0f888769f0ab93ca6d849
Binary files /dev/null and b/de.bmotionstudio.gef.editor/lib/ext/._antlr-2.7.7.jar1851805142189607825.tmp differ
diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml
index f1d465afcd7efc7c5ebae8ca9f8eeb8541137848..f7e7118ba7f96773030a3b4f474eceb4995ecdc6 100644
--- a/de.bmotionstudio.gef.editor/plugin.xml
+++ b/de.bmotionstudio.gef.editor/plugin.xml
@@ -49,7 +49,17 @@
             class="de.bmotionstudio.gef.editor.library.LibraryView"
             icon="icons/icon_library.gif"
             id="de.bmotionstudio.gef.editor.LibraryView"
-            name="BMS Library">
+            name="Library"
+            restorable="true">
+      </view>
+      <view
+            allowMultiple="false"
+            category="de.bmotionstudio.views"
+            class="de.bmotionstudio.gef.editor.observer.view.ObserverView"
+            icon="icons/icon_observer.gif"
+            id="de.bmotionstudio.gef.editor.ObserverView"
+            name="Observer"
+            restorable="true">
       </view>
    </extension>
    <extension
@@ -110,7 +120,7 @@
    <extension
          point="org.eclipse.ui.commands">
       <command
-            defaultHandler="de.bmotionstudio.gef.editor.internal.OpenWebsiteHandler"
+            defaultHandler="de.bmotionstudio.gef.editor.handler.OpenWebsiteHandler"
             id="de.bmotionstudio.gef.editor.command.openBMotionStudioWebsite"
             name="Open website">
       </command>
@@ -119,7 +129,7 @@
             name="Start Visualization from Editor">
       </command>
       <command
-            defaultHandler="de.bmotionstudio.gef.editor.internal.StartVisualizationFileHandler"
+            defaultHandler="de.bmotionstudio.gef.editor.handler.StartVisualizationFileHandler"
             id="de.bmotionstudio.command.startVisualizationFromFile"
             name="Start Visualization from File">
       </command>
@@ -127,7 +137,7 @@
    <extension
          point="org.eclipse.ui.handlers">
       <handler
-            class="de.bmotionstudio.gef.editor.internal.StartVisualizationEditorHandler"
+            class="de.bmotionstudio.gef.editor.handler.StartVisualizationEditorHandler"
             commandId="de.bmotionstudio.command.startVisualizationFromEditor">
          <enabledWhen>
             <with
@@ -156,6 +166,9 @@
       <registerImages
             class="de.bmotionstudio.gef.editor.EditorImageRegistry">
       </registerImages>
+      <registerImages
+            class="de.bmotionstudio.gef.editor.ImageRegistry">
+      </registerImages>
    </extension>
    
  <extension
@@ -169,142 +182,142 @@
             icon="icons/eclipse16/image_obj.gif"
             id="de.bmotionstudio.gef.editor.image"
             name="Image"
-            service="de.bmotionstudio.gef.editor.service.BImageService">
+            service="de.bmotionstudio.gef.editor.model.service.BImageService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_button.gif"
             id="de.bmotionstudio.gef.editor.button"
             name="Button"
-            service="de.bmotionstudio.gef.editor.service.BButtonService">
+            service="de.bmotionstudio.gef.editor.model.service.BButtonService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_radiobutton_c.gif"
             id="de.bmotionstudio.gef.editor.radiobutton"
             name="Radiobutton"
-            service="de.bmotionstudio.gef.editor.service.BRadioButtonService">
+            service="de.bmotionstudio.gef.editor.model.service.BRadioButtonService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_checked.gif"
             id="de.bmotionstudio.gef.editor.checkbox"
             name="Checkbox"
-            service="de.bmotionstudio.gef.editor.service.BCheckboxService">
+            service="de.bmotionstudio.gef.editor.model.service.BCheckboxService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/eclipse16/overview_obj.gif"
             id="de.bmotionstudio.gef.editor.composite"
             name="Composite"
-            service="de.bmotionstudio.gef.editor.service.BCompositeService">
+            service="de.bmotionstudio.gef.editor.model.service.BCompositeService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_text.gif"
             id="de.bmotionstudio.gef.editor.text"
             name="Text"
-            service="de.bmotionstudio.gef.editor.service.BTextService">
+            service="de.bmotionstudio.gef.editor.model.service.BTextService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_textfield.gif"
             id="de.bmotionstudio.gef.editor.textfield"
             name="Textfield"
-            service="de.bmotionstudio.gef.editor.service.BTextfieldService">
+            service="de.bmotionstudio.gef.editor.model.service.BTextfieldService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_rectangle.gif"
             id="de.bmotionstudio.gef.editor.rectangle"
             name="Rectanlge"
-            service="de.bmotionstudio.gef.editor.service.BRectangleService">
+            service="de.bmotionstudio.gef.editor.model.service.BRectangleService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_ellipse.gif"
             id="de.bmotionstudio.gef.editor.ellipse"
             name="Ellipse"
-            service="de.bmotionstudio.gef.editor.service.BEllipseService">
+            service="de.bmotionstudio.gef.editor.model.service.BEllipseService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/icon_connection16.gif"
             id="de.bmotionstudio.gef.editor.connection"
             name="Connection"
-            service="de.bmotionstudio.gef.editor.service.BConnectionService">
+            service="de.bmotionstudio.gef.editor.model.service.BConnectionService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/eclipse16/prop_ps.gif"
             id="de.bmotionstudio.gef.editor.table"
             name="Table"
-            service="de.bmotionstudio.gef.editor.service.BTableService">
+            service="de.bmotionstudio.gef.editor.model.service.BTableService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/eclipse16/prop_ps2.gif"
             id="de.bmotionstudio.gef.editor.tablecolumn"
             name="Column"
-            service="de.bmotionstudio.gef.editor.service.BTableColumnService">
+            service="de.bmotionstudio.gef.editor.model.service.BTableColumnService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.group.main"
             icon="icons/eclipse16/prop_ps3.gif"
             id="de.bmotionstudio.gef.editor.tablecell"
             name="Cell"
-            service="de.bmotionstudio.gef.editor.service.BTableCellService">
+            service="de.bmotionstudio.gef.editor.model.service.BTableCellService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.railway.group"
             icon="icons/icon_signal.gif"
             id="de.bmotionstudio.gef.editor.signal"
             name="Signal"
-            service="de.bmotionstudio.gef.editor.service.SignalService">
+            service="de.bmotionstudio.gef.editor.model.service.SignalService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.railway.group"
             icon="icons/eclipse16/smartmode_co.gif"
             id="de.bmotionstudio.gef.editor.light"
             name="Light"
-            service="de.bmotionstudio.gef.editor.service.LightService">
+            service="de.bmotionstudio.gef.editor.model.service.LightService">
       </control>
+      <group
+            id="de.bmotionstudio.gef.editor.industry.group"
+            name="Industry">
+      </group>
       <control
             groupid="de.bmotionstudio.gef.editor.industry.group"
             icon="icons/icon_tank.gif"
             id="de.bmotionstudio.gef.editor.tank"
             name="Tank"
-            service="de.bmotionstudio.gef.editor.service.TankService">
+            service="de.bmotionstudio.gef.editor.model.service.TankService">
       </control>
+      <group
+            id="de.bmotionstudio.gef.editor.railway.group"
+            name="Railway">
+      </group>
       <control
             groupid="de.bmotionstudio.gef.editor.railway.group"
             icon="icons/icon_tracknode.gif"
             id="de.bmotionstudio.gef.editor.tracknode"
             name="Node"
-            service="de.bmotionstudio.gef.editor.service.TrackNodeService">
+            service="de.bmotionstudio.gef.editor.model.service.TrackNodeService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.railway.group"
             icon="icons/icon_track.gif"
             id="de.bmotionstudio.gef.editor.track"
             name="Trac"
-            service="de.bmotionstudio.gef.editor.service.TrackService">
+            service="de.bmotionstudio.gef.editor.model.service.TrackService">
       </control>
       <control
             groupid="de.bmotionstudio.gef.editor.railway.group"
             icon="icons/icon_switch.gif"
             id="de.bmotionstudio.gef.editor.switch"
             name="Switch"
-            service="de.bmotionstudio.gef.editor.service.SwitchService">
+            service="de.bmotionstudio.gef.editor.model.service.SwitchService">
       </control>
-      <group
-            id="de.bmotionstudio.gef.editor.railway.group"
-            name="Railway">
-      </group>
-      <group
-            id="de.bmotionstudio.gef.editor.industry.group"
-            name="Industry">
-      </group>
    </extension>
    <extension
          point="de.bmotionstudio.gef.editor.observer">
@@ -336,10 +349,6 @@
             description="Observer for switching the coordinates of the control"
             name="Switch Coordinates">
       </observer>
-      <observer
-            class="de.bmotionstudio.gef.editor.observer.ExternalObserverScript"
-            name="External Observer Script">
-      </observer>
       <observer
             class="de.bmotionstudio.gef.editor.observer.TableObserver"
             name="Table Observer">
@@ -382,12 +391,6 @@
             class="de.bmotionstudio.gef.editor.InstallMenu">
       </menu>
    </extension>
-   <extension
-         point="de.bmotionstudio.gef.editor.registerImages">
-      <registerImages
-            class="de.bmotionstudio.gef.editor.ImageRegistry">
-      </registerImages>
-   </extension>
    <extension
          point="de.bmotionstudio.gef.editor.language">
       <language
@@ -399,270 +402,255 @@
          point="de.bmotionstudio.gef.editor.includeObserver">
       <include
             language="EventB">
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
-            <control
-                  id="de.bmotionstudio.gef.editor.image">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.button">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.text">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.ellipse">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.rectangle">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.radiobutton">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.checkbox">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.connection">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecell">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.table">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecolumn">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.signal">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tank">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.switch">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.track">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.light">
-            </control>            
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
-            <control
-                  id="de.bmotionstudio.gef.editor.image">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.button">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.text">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.rectangle">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.radiobutton">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.textfield">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.checkbox">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.ellipse">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.table">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.signal">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tank">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.switch">
-            </control>            
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
-            <control
-                  id="de.bmotionstudio.gef.editor.text">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.radiobutton">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.textfield">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.button">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecell">
-            </control>
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.SetAttribute">
-            <control
-                  id="de.bmotionstudio.gef.editor.image">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.button">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.text">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.rectangle">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.radiobutton">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.checkbox">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.connection">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.ellipse">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.textfield">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecell">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.table">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecolumn">
-            </control>
-          <control
-                  id="de.bmotionstudio.gef.editor.signal">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tank">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.switch">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.track">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.light">
-            </control>                
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates">
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.visualization">
-            </control>
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.ExternalObserverScript">
-            <control
-                  id="de.bmotionstudio.gef.editor.image">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.button">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.text">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.rectangle">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.radiobutton">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.checkbox">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.connection">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.ellipse">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.textfield">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecell">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.table">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecolumn">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.light">
-            </control>    
-            <control
-                  id="de.bmotionstudio.gef.editor.signal">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.switch">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.track">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.tracknode">
-            </control>                            
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.SwitchImage">
-            <control
-                  id="de.bmotionstudio.gef.editor.image">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.composite">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.rectangle">
-            </control>
-            <control
-                  id="de.bmotionstudio.gef.editor.ellipse">
-            </control>
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.ColumnObserver">
-            <control
-                  id="de.bmotionstudio.gef.editor.tablecolumn">
-            </control>
-         </observer>
-         <observer
-               id="de.bmotionstudio.gef.editor.observer.TableObserver">
-            <control
-                  id="de.bmotionstudio.gef.editor.table">
-            </control>
-         </observer>
+         <control
+               id="de.bmotionstudio.gef.editor.image">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchImage">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.button">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.checkbox">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.radiobutton">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.textfield">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.composite">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchImage">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.text">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.rectangle">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchImage">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.connection">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.ellipse">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchImage">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.table">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.TableObserver">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.tablecolumn">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ColumnObserver">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.tablecell">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.signal">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.light">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.tank">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.tracknode">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.track">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+         </control>
+         <control
+               id="de.bmotionstudio.gef.editor.switch">
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SetAttribute">
+            </observer>
+            <observer
+                  id="de.bmotionstudio.gef.editor.observer.SwitchCoordinates">
+            </observer>
+         </control>
       </include>   
    </extension>   
 </plugin>
diff --git a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd
index ce1f1677784cea86330b89864ecc79fc0eab3f6a..e35e7098e4b05024689df59e940cd48a108b2e91 100644
--- a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd
+++ b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd
@@ -18,7 +18,6 @@
       </annotation>
       <complexType>
          <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="control" minOccurs="0" maxOccurs="1"/>
             <element ref="group" minOccurs="0" maxOccurs="1"/>
             <element ref="control" minOccurs="0" maxOccurs="1"/>
          </sequence>
@@ -75,9 +74,6 @@
          </appInfo>
       </annotation>
       <complexType>
-         <sequence>
-            <element ref="attributes" minOccurs="0" maxOccurs="1"/>
-         </sequence>
          <attribute name="id" type="string" use="required">
             <annotation>
                <documentation>
@@ -122,94 +118,30 @@
       </complexType>
    </element>
 
-   <element name="attribute-string">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The id of the referenced attribute. Since the same attribute could be assigned to different controls the corresponding attibute is defined in a seperate exention point (de.bmotionstudio.gef.editor.attribute).
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="default-value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The default value of this attribute for this control
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="editable" type="boolean" use="default" value="true">
-            <annotation>
-               <documentation>
-                  Boolean value - Option to decide whenever this attribute should be editable or not.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="show" type="boolean" use="default" value="true">
-            <annotation>
-               <documentation>
-                  Boolean value - Option to decide whenever this attribute should be displayed in the properties view.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="attribute-java">
-      <complexType>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="default-value" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn=":de.bmotionstudio.core.IGetDefaultValue"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="attributes">
-      <complexType>
-         <sequence>
-            <element ref="attribute-java" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="attribute-string" minOccurs="0" maxOccurs="unbounded"/>
-         </sequence>
-      </complexType>
-   </element>
-
    <annotation>
       <appInfo>
-         <meta.section type="since"/>
+         <meta.section type="apiInfo"/>
       </appInfo>
       <documentation>
-         [Enter the first release in which this extension point appears.]
+         [Enter API information here.]
       </documentation>
    </annotation>
 
    <annotation>
       <appInfo>
-         <meta.section type="examples"/>
+         <meta.section type="since"/>
       </appInfo>
       <documentation>
-         [Enter extension point usage example here.]
+         [Enter the first release in which this extension point appears.]
       </documentation>
    </annotation>
 
    <annotation>
       <appInfo>
-         <meta.section type="apiInfo"/>
+         <meta.section type="examples"/>
       </appInfo>
       <documentation>
-         [Enter API information here.]
+         [Enter extension point usage example here.]
       </documentation>
    </annotation>
 
diff --git a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd
index 42a20dc11a1b04d951c27b1e7aff883084d90fa0..9a9fd6bff375350ae30cbaff7e8a92f020265733 100644
--- a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd
+++ b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.includeObserver.exsd
@@ -54,6 +54,9 @@
          </appInfo>
       </annotation>
       <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="observer"/>
+         </sequence>
          <attribute name="id" type="string" use="required">
             <annotation>
                <documentation>
@@ -71,9 +74,6 @@
          </appInfo>
       </annotation>
       <complexType>
-         <sequence minOccurs="1" maxOccurs="unbounded">
-            <element ref="control"/>
-         </sequence>
          <attribute name="id" type="string" use="required">
             <annotation>
                <documentation>
@@ -87,7 +87,7 @@
    <element name="include">
       <complexType>
          <sequence minOccurs="1" maxOccurs="unbounded">
-            <element ref="observer"/>
+            <element ref="control"/>
          </sequence>
          <attribute name="language" type="string" use="required">
             <annotation>
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java
index 9822355aa3049caf66bd4c8c764786da49fd4053..58faadced59bf14c5fed56a3bbbaf24c71af7097 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMSContextMenuProvider.java
@@ -25,7 +25,6 @@ import org.eclipse.ui.actions.ActionFactory;
 
 import de.bmotionstudio.gef.editor.action.OpenSchedulerEventAction;
 import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode;
 import de.bmotionstudio.gef.editor.model.Visualization;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
 
@@ -120,8 +119,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider {
 
 		if (model instanceof BControl)
 			bcontrol = (BControl) model;
-		else if (model instanceof ObserverRootVirtualTreeNode)
-			bcontrol = ((ObserverRootVirtualTreeNode) model).getControl();
 		else
 			return;
 
@@ -131,51 +128,9 @@ public class BMSContextMenuProvider extends ContextMenuProvider {
 						"icons/icon_observer.gif"), "observerMenu");
 		menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu);
 
-		IExtensionPoint extensionPoint = registry
-				.getExtensionPoint("de.bmotionstudio.gef.editor.observer");
-		for (IExtension extension : extensionPoint.getExtensions()) {
-			for (IConfigurationElement configurationElement : extension
-					.getConfigurationElements()) {
-
-				if ("observer".equals(configurationElement.getName())) {
-
-					final String observerClassName = configurationElement
-							.getAttribute("class");
-					final String observerName = configurationElement
-							.getAttribute("name");
-
-					if (checkIncludeObserver(observerClassName, bcontrol)) {
-
-						IAction action = getActionRegistry().getAction(
-								"de.bmotionstudio.gef.editor.observerAction."
-										+ observerClassName);
-						action.setText(observerName);
-						action.setToolTipText(observerName);
-
-						if (bcontrol.hasObserver(observerClassName)) {
-							action.setImageDescriptor(BMotionStudioImage
-									.getImageDescriptor(
-											BMotionEditorPlugin.PLUGIN_ID,
-											"icons/icon_chop.gif"));
-						} else {
-							action.setImageDescriptor(null);
-						}
-						handleObserverMenu.add(action);
-
-					}
-
-				}
-
-			}
-
-		}
-
-	}
-
-	private boolean checkIncludeObserver(String observerID, BControl control) {
-
-		IExtensionPoint extensionPoint = registry
-				.getExtensionPoint("de.bmotionstudio.gef.editor.includeObserver");
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint(
+						"de.bmotionstudio.gef.editor.includeObserver");
 
 		for (IExtension extension : extensionPoint.getExtensions()) {
 			for (IConfigurationElement configurationElement : extension
@@ -187,25 +142,35 @@ public class BMSContextMenuProvider extends ContextMenuProvider {
 							.getAttribute("language");
 
 					if (langID != null
-							&& langID.equals(control.getVisualization()
-									.getLanguage())) {
+							&& langID.equals(bcontrol.getVisualization().getLanguage())) {
+
+						for (IConfigurationElement configC : configurationElement
+								.getChildren("control")) {
+
+							String cID = configC.getAttribute("id");
 
-						for (IConfigurationElement cObserver : configurationElement
-								.getChildren("observer")) {
+							if (bcontrol.getType().equals(cID)) {
 
-							String oID = cObserver.getAttribute("id");
+								for (IConfigurationElement configO : configC
+										.getChildren("observer")) {
 
-							if (observerID.equals(oID)) {
+									String oID = configO.getAttribute("id");
+									IAction action = getActionRegistry()
+											.getAction(
+													"de.bmotionstudio.gef.editor.observerAction."
+															+ oID);
 
-								for (IConfigurationElement configBControl : cObserver
-										.getChildren("control")) {
+									String name = oID;
 
-									String bID = configBControl
-											.getAttribute("id");
+									IConfigurationElement observerExtension = BMotionEditorPlugin
+											.getObserverExtension(oID);
+									if (observerExtension != null)
+										name = observerExtension
+												.getAttribute("name");
 
-									if (control.getType().equals(bID)) {
-										return true;
-									}
+									action.setText(name);
+
+									handleObserverMenu.add(action);
 
 								}
 
@@ -220,8 +185,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider {
 			}
 		}
 
-		return false;
-
 	}
 
 	private void buildEventMenu(IMenuManager menu, AbstractEditPart editPart) {
@@ -282,14 +245,6 @@ public class BMSContextMenuProvider extends ContextMenuProvider {
 								action.setText(configSchedulerElement
 										.getAttribute("name"));
 
-								// if (bcontrol.hasEvent(eventIDs[0])) {
-								// action
-								// .setImageDescriptor(BMotionStudioImage
-								// .getImageDescriptor(
-								// BMotionEditorPlugin.PLUGIN_ID,
-								// "icons/icon_chop.gif"));
-								// } else {
-
 								action.setImageDescriptor(null);
 
 								// }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java
index b4524f4a38388e7cd806f2b95971b189fe425b33..fa865249822953de0bf204e13b52f9a04c4bbad4 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java
@@ -6,29 +6,79 @@
 
 package de.bmotionstudio.gef.editor;
 
-import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TrayDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.model.BControl;
 
-public abstract class BMotionAbstractWizard extends Wizard {
+public abstract class BMotionAbstractWizard extends TrayDialog {
 
 	private BControl control;
 	
-	public BMotionAbstractWizard(BControl control) {
+	public static final int CLOSE = 2;
+
+	public BMotionAbstractWizard(Shell shell, BControl control) {
+		super(shell);
 		this.control = control;
 	}
 
-	@Override
-	public boolean performFinish() {
-		return prepareToFinish();
-	}
-	
 	public BControl getBControl() {
 		return this.control;
 	}
 
-	public abstract String getName();
+	@Override
+	protected void configureShell(Shell newShell) {
+		super.configureShell(newShell);
+	}
 
-	protected abstract Boolean prepareToFinish();
+	public abstract String getName();
 	
+	@Override
+	protected int getShellStyle() {
+		return SWT.SHELL_TRIM;
+	}
+
+	@Override
+	protected Control createDialogArea(Composite parent) {
+
+		GridLayout layout = new GridLayout();
+		layout.marginHeight = 0;
+		layout.marginWidth = 0;
+		layout.verticalSpacing = 0;
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(layout);
+		container.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+		createWizardContent(container);
+
+		return container;
+
+	}
+
+	@Override
+	protected void createButtonsForButtonBar(Composite parent) {
+		createButton(parent, IDialogConstants.CLOSE_ID,
+				IDialogConstants.CLOSE_LABEL, true);
+	}
+
+	@Override
+	protected void buttonPressed(int buttonId) {
+		if (IDialogConstants.CLOSE_ID == buttonId)
+			closePressed();
+	}
+
+	protected void closePressed() {
+		setReturnCode(CLOSE);
+		close();
+	}
+
+	public abstract Control createWizardContent(Composite parent);
+
 }
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 56b16757ec2c66df568c7fcd22408130837cacc3..72511e5fce357a1fe710fcdf24d90952337f87ce 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
@@ -8,7 +8,7 @@ package de.bmotionstudio.gef.editor;
 
 public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 
-	public static final String IMG_ICON_ADD = "icon_add";
+	// public static final String IMG_ICON_ADD = "icon_add";
 	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";
@@ -18,7 +18,6 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 	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";
@@ -28,6 +27,7 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 	public static final String IMG_ICON_TR_UP = "icon_tr_up";
 	public static final String IMG_ICON_TR_LEFT = "icon_tr_left";
 	public static final String IMG_ICON_CONTROL_HIDDEN = "icon_control_hidden";
+	public static final String IMG_ICON_HELP = "icon_help";
 
 	public static final String IMG_ICON_JPG = "icon_jpg";
 	public static final String IMG_ICON_GIF = "icon_gif";
@@ -36,8 +36,8 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 
 	public void registerImages() {
 
-		BMotionStudioImage.registerImage(IMG_ICON_ADD,
-				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_add.gif");
+		// BMotionStudioImage.registerImage(IMG_ICON_ADD,
+		// BMotionEditorPlugin.PLUGIN_ID, "icons/icon_add.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_CHOP,
 				BMotionEditorPlugin.PLUGIN_ID, "icons/icon_chop.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_DELETE,
@@ -54,8 +54,6 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 				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,
@@ -72,6 +70,9 @@ public class EditorImageRegistry implements IBMotionStudioImageRegistry {
 				"org.eclipse.ui", "$nl$/icons/full/etool16/delete_edit.gif");
 		BMotionStudioImage.registerImage(IMG_ICON_DELETE_EDIT,
 				"org.eclipse.ui", "$nl$/icons/full/etool16/delete_edit.gif");
+		BMotionStudioImage.registerImage(IMG_ICON_HELP,
+				BMotionEditorPlugin.PLUGIN_ID,
+				"icons/eclipse16/linkto_help.gif");
 		BMotionStudioImage
 				.registerImage(IMG_ICON_TR_UP, BMotionEditorPlugin.PLUGIN_ID,
 						"icons/eclipse16/updated_co.gif");
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java
deleted file mode 100644
index d9a3d5c380584994b742f7faf36ad8d7b89d886a..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java
+++ /dev/null
@@ -1,107 +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.action;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IWorkbenchPart;
-
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.EditorImageRegistry;
-
-public abstract class BMotionAbstractWizardDialog extends WizardDialog {
-
-	public static final int DELETE = 3;
-
-	private IWorkbenchPart workbenchPart;
-
-	private String deleteToolTip;
-
-	public BMotionAbstractWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) {
-		super(workbenchPart.getSite().getShell(), newWizard);
-		this.workbenchPart = workbenchPart;
-	}
-
-	@Override
-	protected Control createButtonBar(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		layout.horizontalSpacing = 0;
-		composite.setLayout(layout);
-		composite
-				.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
-		composite.setFont(parent.getFont());
-
-		// create help control if needed
-		if (isHelpAvailable()) {
-			Control helpControl = createHelpControl(composite);
-			((GridData) helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		}
-
-		Control deleteControl = createDeleteControl(composite);
-		((GridData) deleteControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
-		setHelpAvailable(false);
-		Control buttonSection = super.createButtonBar(composite);
-		((GridData) buttonSection.getLayoutData()).grabExcessHorizontalSpace = true;
-		return composite;
-	}
-
-	private Control createDeleteControl(Composite parent) {
-		return createDeleteImageButton(parent,
-				BMotionStudioImage
-						.getImage(EditorImageRegistry.IMG_ICON_DELETE21));
-	}
-
-	private ToolBar createDeleteImageButton(Composite parent, Image image) {
-		ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.NO_FOCUS);
-		((GridLayout) parent.getLayout()).numColumns++;
-		toolBar.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
-		final Cursor cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-		toolBar.setCursor(cursor);
-		toolBar.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				cursor.dispose();
-			}
-		});
-		ToolItem deleteToolItem = new ToolItem(toolBar, SWT.NONE);
-		deleteToolItem.setImage(image);
-		deleteToolItem.setToolTipText(deleteToolTip);
-		deleteToolItem.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				deletePressed();
-			}
-		});
-		return toolBar;
-	}
-
-	protected abstract void deletePressed();
-
-	public IWorkbenchPart getWorkbenchPart() {
-		return workbenchPart;
-	}
-
-	protected void setDeleteToolTip(String msg) {
-		this.deleteToolTip = msg;
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java
deleted file mode 100644
index b5ccee629af599d22f068f274a63be7b2e341788..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java
+++ /dev/null
@@ -1,35 +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.action;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPart;
-
-public class BMotionObserverWizardDialog extends BMotionAbstractWizardDialog {
-
-	public BMotionObserverWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) {
-		super(workbenchPart, newWizard);
-		setShellStyle(SWT.CLOSE | SWT.RESIZE);
-		setDeleteToolTip("Delete Observer");
-	}
-
-	@Override
-	protected void deletePressed() {
-
-		if (MessageDialog.openConfirm(Display.getDefault().getActiveShell(),
-				"Do you really want to delete this Observer?",
-				"Do you really want to delete this Observer?")) {
-			setReturnCode(DELETE);
-			close();
-		}
-
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java
deleted file mode 100644
index f14aa16a5b28e12a8e7b0601ef55e65850ec328c..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.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.gef.editor.action;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPart;
-
-import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard;
-
-public class BMotionSchedulerEventWizardDialog extends BMotionAbstractWizardDialog {
-
-	public BMotionSchedulerEventWizardDialog(IWorkbenchPart workbenchPart,
-			IWizard newWizard) {
-		super(workbenchPart, newWizard);
-		setShellStyle(SWT.CLOSE);
-		setDeleteToolTip("Delete Event");
-	}
-
-	@Override
-	protected void deletePressed() {
-
-		if (MessageDialog.openConfirm(Display.getDefault().getActiveShell(),
-				"Do you really want to delete this Event?",
-				"Do you really want to delete this Event?")) {
-			RemoveSchedulerEventAction action = new RemoveSchedulerEventAction(
-					getWorkbenchPart());
-			action.setControl(((SchedulerWizard) getWizard()).getBControl());
-			action.setSchedulerEvent(((SchedulerWizard) getWizard())
-					.getScheduler());
-			action.run();
-			setReturnCode(DELETE);
-			close();
-		}
-
-	}
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java
index 4ed52392ac795a04f75fad7fcda720ef926d3210..d8ff6ba358c8f89b59514e70d5e93e27fae75933 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java
@@ -8,18 +8,12 @@ package de.bmotionstudio.gef.editor.action;
 
 import java.util.List;
 
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.ui.actions.SelectionAction;
-import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPart;
 
-import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.command.RemoveObserverCommand;
-import de.bmotionstudio.gef.editor.command.SetObserverCommand;
 import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode;
 import de.bmotionstudio.gef.editor.observer.Observer;
 import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 import de.prob.logging.Logger;
@@ -50,79 +44,23 @@ public class OpenObserverAction extends SelectionAction {
 
 		if (actionControl != null) {
 
-			Observer oldObserver = null;
 			Observer observer = getControl().getObserver(getClassName());
 
-			// If an observer does not exist, add one
-			if (observer == null) {
-
-				try {
-					observer = (Observer) BMotionEditorPlugin
-							.getObserverExtension(getClassName())
-							.createExecutableExtension("class");
-				} catch (CoreException e) {
-				}
-
-			} else { // else edit the current observer
-
-				// therefore, clone the current observer, if the user aborts
-				// editing the current observer
-				try {
-					oldObserver = observer.clone();
-				} catch (CloneNotSupportedException e) {
-				}
-
-			}
-
-			ObserverWizard wizard = observer.getWizard(actionControl);
+			ObserverWizard wizard = observer.getWizard(Display.getDefault()
+					.getActiveShell(), actionControl);
 
 			if (wizard != null) {
-
-				BMotionObserverWizardDialog dialog = new BMotionObserverWizardDialog(
-						getWorkbenchPart(), wizard);
-				dialog.create();
-				dialog.getShell().setSize(wizard.getSize());
-				String title = "Observer: " + observer.getName()
-						+ " Control: " + getControl().getID();
-				wizard.setWindowTitle("BMotion Studio Observer Wizard");
-				dialog.setTitle(title);
-				dialog.setMessage(observer.getDescription());
-				dialog.setTitleImage(BMotionStudioImage
-						.getImage(BMotionStudioImage.IMG_LOGO_BMOTION64));
-				int status = dialog.open();
-
-				// The user clicked on the "OK" button in order to confirm his
-				// changes on the observer
-				if (status == WizardDialog.OK) {
-
-					// If the observer delete flag is set to true, delete the
-					// observer anyway
-					if (wizard.isObserverDelete()) {
-						RemoveObserverCommand cmd = createRemoveObserverCommand(
-								observer, actionControl);
-						execute(cmd);
-					} else {
-						SetObserverCommand cmd = createObserverSetCommand(
-								actionControl, observer, oldObserver);
-						execute(cmd);
-					}
-
-					// else the user canceled his changes on the observer
-				} else if (status == WizardDialog.CANCEL) {
-
-					// Reset observer without using a command!
-					if (oldObserver != null)
-						actionControl.getObservers().put(oldObserver.getID(),
-								oldObserver);
-
-					// else the user clicked on the delete button in order to
-					// delete the observer
-				} else if (status == BMotionObserverWizardDialog.DELETE) {
-					RemoveObserverCommand cmd = createRemoveObserverCommand(
-							observer, actionControl);
-					execute(cmd);
-				}
-
+				wizard.create();
+				wizard.getShell().setSize(wizard.getSize());
+				String title = "Observer: " + observer.getName() + " Control: "
+						+ getControl().getID();
+				wizard.getShell().setText(title);
+				// wizard.setWindowTitle("BMotion Studio Observer Wizard");
+				// wizard.setTitle(title);
+				// wizard.setMessage(observer.getDescription());
+				// wizard.setTitleImage(BMotionStudioImage
+				// .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64));
+				wizard.open();
 			} else {
 				Logger.notifyUserWithoutBugreport("The Observer \""
 						+ observer.getName()
@@ -132,28 +70,6 @@ public class OpenObserverAction extends SelectionAction {
 
 	}
 
-	private RemoveObserverCommand createRemoveObserverCommand(
-			Observer observer, BControl control) {
-		RemoveObserverCommand cmd = new RemoveObserverCommand();
-		cmd.setControl(control);
-		cmd.setObserver(observer);
-		return cmd;
-	}
-
-	public SetObserverCommand createObserverSetCommand(BControl control,
-			Observer newObserver, Observer oldObserver) {
-		SetObserverCommand cmd = new SetObserverCommand();
-		cmd.setNewObserver(newObserver);
-		cmd.setOldObserver(oldObserver);
-		cmd.setControl(control);
-		return cmd;
-	}
-
-	public SetObserverCommand createObserverSetCommand(BControl control,
-			Observer newObserver) {
-		return createObserverSetCommand(control, newObserver, null);
-	}
-
 	public void setClassName(String className) {
 		this.className = className;
 	}
@@ -172,10 +88,7 @@ public class OpenObserverAction extends SelectionAction {
 		if ((objects.get(0) instanceof EditPart)) {
 			EditPart part = (EditPart) objects.get(0);
 			BControl control = null;
-			if (part.getModel() instanceof ObserverRootVirtualTreeNode)
-				control = ((ObserverRootVirtualTreeNode) part.getModel())
-						.getControl();
-			else if (part.getModel() instanceof BControl)
+			if (part.getModel() instanceof BControl)
 				control = (BControl) part.getModel();
 			return control;
 		}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java
index dff15928f5b8e190611a5eaba4c8f43eff2ef959..f35094ca1f7a9d2b1905b3a01114f4c1b7e44e12 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java
@@ -8,16 +8,12 @@ package de.bmotionstudio.gef.editor.action;
 
 import java.util.List;
 
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.ui.actions.SelectionAction;
-import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPart;
 
 import de.bmotionstudio.gef.editor.AttributeConstants;
-import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.command.SchedulerEventCommand;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard;
@@ -27,7 +23,6 @@ public class OpenSchedulerEventAction extends SelectionAction {
 
 	private String className;
 	private String eventID;
-	private SchedulerEvent clonedSchedulerEvent;
 
 	public OpenSchedulerEventAction(IWorkbenchPart part) {
 		super(part);
@@ -46,82 +41,33 @@ public class OpenSchedulerEventAction extends SelectionAction {
 	public void run() {
 
 		BControl bcontrol = getControl();
-		clonedSchedulerEvent = null;
 
 		if (bcontrol != null) {
 
 			SchedulerEvent newSchedulerEvent = bcontrol.getEvent(getEventID());
 
-			// Add Scheduler Event
-			if (newSchedulerEvent == null) {
-
-				try {
-					newSchedulerEvent = (SchedulerEvent) BMotionEditorPlugin
-							.getSchedulerExtension(getClassName())
-							.createExecutableExtension("class");
-				} catch (CoreException e) {
-				}
-
-			} else { // Edit Scheduler Event
-
-				// Clone Scheduler Event
-				try {
-					clonedSchedulerEvent = newSchedulerEvent.clone();
-				} catch (CloneNotSupportedException e) {
-				}
-
-			}
-
 			if (newSchedulerEvent != null) {
 
 				newSchedulerEvent.setEventID(getEventID());
-				SchedulerWizard wizard = newSchedulerEvent.getWizard(bcontrol);
+				SchedulerWizard wizard = newSchedulerEvent.getWizard(Display
+						.getDefault().getActiveShell(), bcontrol);
 
 				if (wizard != null) {
 
-					BMotionSchedulerEventWizardDialog dialog = new BMotionSchedulerEventWizardDialog(
-							getWorkbenchPart(), wizard);
-					dialog.create();
-					dialog.getShell().setSize(wizard.getSize());
+					wizard.create();
+					wizard.getShell().setSize(wizard.getSize());
 					String title = "Scheduler Event: "
 							+ newSchedulerEvent.getName()
 							+ " Control: "
 							+ bcontrol
 									.getAttributeValue(AttributeConstants.ATTRIBUTE_ID);
-					wizard.setWindowTitle("BMotion Studio Scheduler Event Wizard");
-					dialog.setTitle(title);
-					dialog.setMessage(newSchedulerEvent.getDescription());
-					dialog.setTitleImage(BMotionStudioImage
-							.getImage(BMotionStudioImage.IMG_LOGO_BMOTION64));
-					int status = dialog.open();
-
-					if (status == WizardDialog.OK) {
-
-						SchedulerEventCommand schedulerEventCommand = createSchedulerEventCommand();
-						schedulerEventCommand
-								.setNewSchedulerEvent(newSchedulerEvent);
-
-						if (wizard.isEventDelete()) {
-
-							RemoveSchedulerEventAction action = new RemoveSchedulerEventAction(
-									getWorkbenchPart());
-							action.setControl(getControl());
-							action.setSchedulerEvent(clonedSchedulerEvent);
-							action.run();
-
-						} else {
-							if (clonedSchedulerEvent != null) {
-								schedulerEventCommand
-										.setClonedSchedulerEvent(clonedSchedulerEvent);
-							}
-							execute(schedulerEventCommand);
-						}
-
-					} else if (status == WizardDialog.CANCEL) {
-						if (clonedSchedulerEvent != null)
-							bcontrol.addEvent(getEventID(),
-									clonedSchedulerEvent);
-					}
+					wizard.getShell().setText(title);
+					// wizard.setWindowTitle("BMotion Studio Scheduler Event Wizard");
+					// wizard.setTitle(title);
+					// wizard.setMessage(newSchedulerEvent.getDescription());
+					// wizard.setTitleImage(BMotionStudioImage
+					// .getImage(BMotionStudioImage.IMG_LOGO_BMOTION64));
+					wizard.open();
 
 				} else {
 					Logger.notifyUserWithoutBugreport("The Scheduler Event \""
@@ -137,14 +83,6 @@ public class OpenSchedulerEventAction extends SelectionAction {
 
 	}
 
-	public SchedulerEventCommand createSchedulerEventCommand() {
-		SchedulerEventCommand command = new SchedulerEventCommand();
-		command.setClassName(getClassName());
-		command.setEventID(getEventID());
-		command.setControl(getControl());
-		return command;
-	}
-
 	public void setClassName(String className) {
 		this.className = className;
 	}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java
index 601e6bb35cf0c5c8e4a043a8544c2552dc27509b..16a668b4a38479700afe1151baac872be8af1c56 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.command;
 
 import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 
 public class BringToBottomCommand extends AbstractBringToCommand {
 
@@ -17,8 +18,8 @@ public class BringToBottomCommand extends AbstractBringToCommand {
 			getOldIndexMap().put(control, oldIndex);
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(0, control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
@@ -28,8 +29,8 @@ public class BringToBottomCommand extends AbstractBringToCommand {
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(getOldIndexMap().get(control),
 					control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java
index 7e5dff77861ab06ba45e5d306d4155c6bd0b54cf..f5bbb964961743c6278780f6722418212334f86d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.command;
 
 import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 
 public class BringToBottomStepCommand extends AbstractBringToCommand {
 
@@ -18,8 +19,9 @@ public class BringToBottomStepCommand extends AbstractBringToCommand {
 			if (oldIndex > 0) {
 				parent.getChildrenArray().remove(control);
 				parent.getChildrenArray().add(oldIndex - 1, control);
-				parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-						null, null);
+				parent.getListeners().firePropertyChange(
+						BControlPropertyConstants.PROPERTY_ADD_CHILD, null,
+						null);
 			}
 		}
 	}
@@ -30,8 +32,8 @@ public class BringToBottomStepCommand extends AbstractBringToCommand {
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(getOldIndexMap().get(control),
 					control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java
index 716c1454a766ebf1e24f7d4ede5fa3dd79acccd9..c290043b3e2eb8df9d0c9354948cdc8681250e52 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.command;
 
 import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 
 public class BringToTopCommand extends AbstractBringToCommand {
 
@@ -18,8 +19,8 @@ public class BringToTopCommand extends AbstractBringToCommand {
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(parent.getChildrenArray().size(),
 					control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
@@ -29,8 +30,8 @@ public class BringToTopCommand extends AbstractBringToCommand {
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(getOldIndexMap().get(control),
 					control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java
index 3560448e1c245684e4a599ef4f14f421f55a8069..805599aaac6c0ee0ac237a4e713e6ea191114729 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.command;
 
 import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 
 public class BringToTopStepCommand extends AbstractBringToCommand {
 
@@ -18,8 +19,9 @@ public class BringToTopStepCommand extends AbstractBringToCommand {
 			if (oldIndex < parent.getChildrenArray().size() - 1) {
 				parent.getChildrenArray().remove(control);
 				parent.getChildrenArray().add(oldIndex + 1, control);
-				parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-						null, null);
+				parent.getListeners().firePropertyChange(
+						BControlPropertyConstants.PROPERTY_ADD_CHILD, null,
+						null);
 			}
 		}
 	}
@@ -30,8 +32,8 @@ public class BringToTopStepCommand extends AbstractBringToCommand {
 			parent.getChildrenArray().remove(control);
 			parent.getChildrenArray().add(getOldIndexMap().get(control),
 					control);
-			parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD,
-					null, null);
+			parent.getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_ADD_CHILD, null, null);
 		}
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/SignalFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/SignalFigure.java
index 7e5752eb3dd61ce8e05543f1e93385539eccfd2c..052554a54b80675119080156d503d09a3fbb9d86 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/SignalFigure.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/SignalFigure.java
@@ -84,7 +84,6 @@ public class SignalFigure extends AbstractBMotionFigure {
 
 				p1.y = p1.y + 4;
 				p2.y = p2.y + 8;
-				p3.y = p3.y;
 
 				arrow.addPoint(p1);
 				arrow.addPoint(p2);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/OpenWebsiteHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.java
similarity index 93%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/OpenWebsiteHandler.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.java
index 500bb85d61ccf97fc90b8f6c132b8544f481fe34..9122b15e222de30d845fada8f4a41b35e265b4c1 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/OpenWebsiteHandler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/OpenWebsiteHandler.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.gef.editor.internal;
+package de.bmotionstudio.gef.editor.handler;
 
 import java.net.MalformedURLException;
 import java.net.URL;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.java
index bda5ba1df2ffa63f35d858a5a86fc205ea6372ba..ebd89b02a01f24f608dc4c9c07d78650519e767e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationEditorHandler.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.gef.editor.internal;
+package de.bmotionstudio.gef.editor.handler;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -19,6 +19,7 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.WorkbenchException;
 
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
+import de.bmotionstudio.gef.editor.internal.VisualizationProgressBar;
 import de.prob.core.Animator;
 import de.prob.logging.Logger;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationFileHandler.java
similarity index 94%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationFileHandler.java
index 2c9964a279dd5b4c08b830489ae060de8d64c7bf..945993e514a2dfa94a453379a0aa7c8fb502b4e9 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/handler/StartVisualizationFileHandler.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.gef.editor.internal;
+package de.bmotionstudio.gef.editor.handler;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -30,6 +30,7 @@ import org.eclipse.ui.part.FileEditorInput;
 
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
 import de.bmotionstudio.gef.editor.BMotionStudioEditor;
+import de.bmotionstudio.gef.editor.internal.VisualizationProgressBar;
 import de.prob.core.Animator;
 import de.prob.logging.Logger;
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
index 4054bf990409224fb3e80c7652aaf57ec4abbeb5..70ee9ce5129299210a7d579009c6f02ab2dba118 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java
@@ -113,9 +113,6 @@ public class VisualizationProgressBar extends ProgressBarDialog {
 				openErrorDialog(e.getMessage());
 				setClose(true);
 			}
-			return "Starting Operation Scheduler";
-		case 6:
-			startOperationScheduler();
 			return "Starting Visualization";
 		}
 
@@ -123,9 +120,9 @@ public class VisualizationProgressBar extends ProgressBarDialog {
 
 	}
 
-	private void startOperationScheduler() {
-		visualization.startOperationScheduler();
-	}
+	// private void startOperationScheduler() {
+	// visualization.startOperationScheduler();
+	// }
 
 	private void createVisualizationRoot() throws CoreException, IOException,
 			ParserConfigurationException, SAXException {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
index 8013e19f754309e18837ec7c09f438c3eddba668..8d153efff02722e88a8414eb283afa1ca8f4abd6 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java
@@ -16,8 +16,12 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.UUID;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
@@ -42,7 +46,6 @@ import de.bmotionstudio.gef.editor.attribute.BAttributeX;
 import de.bmotionstudio.gef.editor.attribute.BAttributeY;
 import de.bmotionstudio.gef.editor.command.CopyPasteHelper;
 import de.bmotionstudio.gef.editor.internal.BControlPropertySource;
-import de.bmotionstudio.gef.editor.observer.IObserverListener;
 import de.bmotionstudio.gef.editor.observer.Observer;
 import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
 
@@ -61,13 +64,8 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent;
  */
 public abstract class BControl implements IAdaptable, Cloneable {
 
-	/** The type of the control (e.g. label, button ...) */
 	protected String type;
 
-	private transient Rectangle layout = null;
-
-	private transient Point location = null;
-
 	private BControlList children;
 
 	private Map<String, Observer> observers;
@@ -76,45 +74,25 @@ public abstract class BControl implements IAdaptable, Cloneable {
 
 	private Map<String, AbstractAttribute> attributes;
 
-	/**
-	 * Since the parent is set via the method readResolve(), we mark the
-	 * variable as transient
-	 */
+	private BMotionGuide verticalGuide, horizontalGuide;
+
+	// List of outgoing Connections
+	private List<BConnection> sourceConnections;
+	// List of incoming Connections
+	private List<BConnection> targetConnections;
+
+	private transient Rectangle layout = null;
+
+	private transient Point location = null;
+
 	private transient BControl parent;
 
 	private transient Visualization visualization;
 
 	private transient PropertyChangeSupport listeners;
-
-	private transient ArrayList<IObserverListener> observerListener;
 	
 	private transient boolean newControl;
 
-	private BMotionGuide verticalGuide, horizontalGuide;
-
-	/** List of outgoing Connections. */
-	private List<BConnection> sourceConnections;
-	/** List of incoming Connections. */
-	private List<BConnection> targetConnections;
-
-	public static final transient String PROPERTY_LAYOUT = "NodeLayout";
-	public static final transient String PROPERTY_LOCATION = "NodeLocation";
-	public static final transient String PROPERTY_ADD = "NodeAddChild";
-	public static final transient String PROPERTY_REMOVE = "NodeRemoveChild";
-	public static final transient String PROPERTY_RENAME = "NodeRename";
-	/** Property ID to use when the list of outgoing connections is modified. */
-	public static final String SOURCE_CONNECTIONS_PROP = "BMS.SourceConn";
-	/** Property ID to use when the list of incoming connections is modified. */
-	public static final String TARGET_CONNECTIONS_PROP = "BMS.TargetConn";
-
-	public static final String[] standardAttributes = {
-			AttributeConstants.ATTRIBUTE_X,
-			AttributeConstants.ATTRIBUTE_Y, AttributeConstants.ATTRIBUTE_WIDTH,
-			AttributeConstants.ATTRIBUTE_HEIGHT,
-			AttributeConstants.ATTRIBUTE_ID,
-			AttributeConstants.ATTRIBUTE_CUSTOM,
-			AttributeConstants.ATTRIBUTE_VISIBLE };
-
 	public BControl(Visualization visualization) {
 		this.visualization = visualization;
 		this.children = new BControlList();
@@ -122,7 +100,6 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		this.events = new HashMap<String, SchedulerEvent>();
 		this.attributes = new HashMap<String, AbstractAttribute>();
 		this.listeners = new PropertyChangeSupport(this);
-		this.observerListener = new ArrayList<IObserverListener>();
 		this.sourceConnections = new ArrayList<BConnection>();
 		this.targetConnections = new ArrayList<BConnection>();
 		this.newControl = true;
@@ -134,7 +111,6 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		for (BControl child : getChildrenArray())
 			child.setParent(this);
 		this.newControl = false;
-		init();
 		return this;
 	}
 
@@ -152,12 +128,12 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		}
 		if (conn.getSource() == this) {
 			getSourceConnections().remove(conn);
-			getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null,
-					conn);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.SOURCE_CONNECTIONS, null, conn);
 		} else if (conn.getTarget() == this) {
 			getTargetConnections().remove(conn);
-			getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null,
-					conn);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.TARGET_CONNECTIONS, null, conn);
 		}
 	}
 
@@ -173,25 +149,105 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		if (conn == null || conn.getSource() == conn.getTarget()) {
 			throw new IllegalArgumentException();
 		}
-		conn.setVisualization(getVisualization());
 		if (conn.getSource() == this) {
 			getSourceConnections().add(conn);
-			getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null,
-					conn);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.SOURCE_CONNECTIONS, null, conn);
 		} else if (conn.getTarget() == this) {
 			getTargetConnections().add(conn);
-			getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null,
-					conn);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.TARGET_CONNECTIONS, null, conn);
 		}
 	}
 
-	private void init() {
-
+	protected void init() {
 		// Init standard control attributes
 		initStandardAttributes();
-
 		// Init custom control attributes
 		initAttributes();
+		// Init observer
+		initObserver();
+	}
+
+	private List<String> getSupportedObserverList() {
+
+		List<String> supportedObserver = new ArrayList<String>();
+
+		IExtensionPoint extensionPoint = Platform.getExtensionRegistry()
+				.getExtensionPoint(
+						"de.bmotionstudio.gef.editor.includeObserver");
+
+		for (IExtension extension : extensionPoint.getExtensions()) {
+			for (IConfigurationElement configurationElement : extension
+					.getConfigurationElements()) {
+
+				if ("include".equals(configurationElement.getName())) {
+
+					String langID = configurationElement
+							.getAttribute("language");
+
+					if (langID != null
+							&& langID.equals(getVisualization()
+									.getLanguage())) {
+
+						for (IConfigurationElement configC : configurationElement
+								.getChildren("control")) {
+
+							String cID = configC.getAttribute("id");
+
+							if (getType().equals(cID)) {
+
+								for (IConfigurationElement configO : configC
+										.getChildren("observer")) {
+
+									supportedObserver.add(configO
+											.getAttribute("id"));
+
+								}
+
+							}
+
+						}
+
+					}
+
+				}
+
+			}
+		}
+
+		return supportedObserver;
+
+	}
+
+	private void initObserver() {
+
+		List<String> supportedObserverList = getSupportedObserverList();
+		for (String oID : supportedObserverList) {
+
+			// Check if control has already the observer
+			if (!hasObserver(oID)) {
+
+				// If no, create a new instance and add the observer to the
+				// control
+				IConfigurationElement observerExtension = BMotionEditorPlugin
+						.getObserverExtension(oID);
+				
+				if (observerExtension != null) {
+					try {
+
+
+						Observer newObserver = (Observer) observerExtension
+								.createExecutableExtension("class");
+						addObserver(newObserver);
+					} catch (CoreException e) {
+						e.printStackTrace();
+					}
+				}
+
+			}
+
+		}
 
 	}
 
@@ -328,7 +384,8 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		setAttributeValue(AttributeConstants.ATTRIBUTE_HEIGHT,
 				newLayout.height, false);
 		getListeners()
-				.firePropertyChange(PROPERTY_LAYOUT, oldLayout, newLayout);
+				.firePropertyChange(BControlPropertyConstants.PROPERTY_LAYOUT,
+						oldLayout, newLayout);
 	}
 
 	public Rectangle getLayout() {
@@ -375,7 +432,8 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		location = newLocation;
 		setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLocation.x, false);
 		setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLocation.y, false);
-		getListeners().firePropertyChange(PROPERTY_LOCATION, oldLocation,
+		getListeners().firePropertyChange(
+				BControlPropertyConstants.PROPERTY_LOCATION, oldLocation,
 				newLocation);
 	}
 
@@ -412,12 +470,14 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		} else {
 			children.add(child);
 		}
-		getListeners().firePropertyChange(PROPERTY_ADD, index, child);
+		getListeners().firePropertyChange(
+				BControlPropertyConstants.PROPERTY_ADD_CHILD, index, child);
 	}
 
 	public void removeAllChildren() {
 		getChildrenArray().clear();
-		getListeners().firePropertyChange(PROPERTY_REMOVE, null, null);
+		getListeners().firePropertyChange(
+				BControlPropertyConstants.PROPERTY_REMOVE_CHILD, null, null);
 	}
 
 	public boolean removeChild(int index) {
@@ -428,7 +488,9 @@ public abstract class BControl implements IAdaptable, Cloneable {
 	public boolean removeChild(BControl child) {
 		boolean b = children.remove(child);
 		if (b)
-			getListeners().firePropertyChange(PROPERTY_REMOVE, child, null);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_REMOVE_CHILD, child,
+					null);
 		return b;
 	}
 
@@ -476,9 +538,10 @@ public abstract class BControl implements IAdaptable, Cloneable {
 
 	public void addObserver(Observer observer) {
 		observers.put(observer.getID(), (Observer) observer);
-		for (IObserverListener listener : getObserverListener()) {
-			listener.addedObserver(this, observer);
-		}
+		getListeners()
+				.firePropertyChange(
+						BControlPropertyConstants.PROPERTY_ADD_OBSERVER,
+						observer, null);
 	}
 
 	public void removeObserver(Observer observer) {
@@ -486,11 +549,13 @@ public abstract class BControl implements IAdaptable, Cloneable {
 	}
 
 	public void removeObserver(String observerID) {
-		if (hasObserver(observerID))
-			observers.get(observerID).beforeDelete(this);
-		observers.remove(observerID);
-		for (IObserverListener listener : getObserverListener()) {
-			listener.removedObserver(this);
+		Observer o = observers.remove(observerID);
+		if (o != null) {
+			o.beforeDelete(this);
+			getListeners()
+					.firePropertyChange(
+							BControlPropertyConstants.PROPERTY_REMOVE_OBSERVER,
+							o, null);
 		}
 	}
 
@@ -512,12 +577,18 @@ public abstract class BControl implements IAdaptable, Cloneable {
 
 	public void addEvent(String eventID, SchedulerEvent schedulerEvent) {
 		events.put(eventID, schedulerEvent);
+		getListeners().firePropertyChange(
+				BControlPropertyConstants.PROPERTY_ADD_EVENT, schedulerEvent,
+				null);
 	}
 
 	public void removeEvent(String eventID) {
-		if (hasEvent(eventID))
-			events.get(eventID).beforeDelete(this);
-		events.remove(eventID);
+		SchedulerEvent e = events.remove(eventID);
+		if (e != null) {
+			e.beforeDelete(this);
+			getListeners().firePropertyChange(
+					BControlPropertyConstants.PROPERTY_REMOVE_EVENT, e, null);
+		}
 	}
 
 	public Map<String, AbstractAttribute> getAttributes() {
@@ -631,24 +702,12 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		this.visualization = visualization;
 	}
 
-	protected void populateVisualization(Visualization visualization) {
-		// Populate visualization node
-		setVisualization(visualization);
-		for (BControl child : getChildrenArray())
-			child.populateVisualization(visualization);
-		for (BConnection con : getTargetConnections())
-			con.populateVisualization(visualization);
-		for (BConnection con : getSourceConnections())
-			con.populateVisualization(visualization);
-	}
-
 	@Override
 	public BControl clone() throws CloneNotSupportedException {
 
 		BControl clonedControl = (BControl) super.clone();
 
 		clonedControl.listeners = new PropertyChangeSupport(clonedControl);
-		clonedControl.observerListener = new ArrayList<IObserverListener>();
 		clonedControl.sourceConnections = new ArrayList<BConnection>();
 		clonedControl.targetConnections = new ArrayList<BConnection>();
 
@@ -738,23 +797,6 @@ public abstract class BControl implements IAdaptable, Cloneable {
 		return horizontalGuide;
 	}
 
-	/**
-	 * @return the observerListener
-	 */
-	public ArrayList<IObserverListener> getObserverListener() {
-		if (observerListener == null)
-			observerListener = new ArrayList<IObserverListener>();
-		return observerListener;
-	}
-
-	public void addObserverListener(IObserverListener listener) {
-		getObserverListener().add(listener);
-	}
-
-	public void removeObserverListener(IObserverListener listener) {
-		getObserverListener().remove(listener);
-	}
-
 	/**
 	 * Return a List of outgoing Connections.
 	 */
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..40952b6d057a68266307bdffb359fee984ed3414
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControlPropertyConstants.java
@@ -0,0 +1,29 @@
+/** 
+ * (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.model;
+
+public final class BControlPropertyConstants {
+
+	public static final transient String PROPERTY_LAYOUT = "ControlLayout";
+	public static final transient String PROPERTY_LOCATION = "ControlLocation";
+
+	public static final transient String PROPERTY_ADD_CHILD = "ControlAddChild";
+	public static final transient String PROPERTY_REMOVE_CHILD = "ControlRemoveChild";
+
+	public static final transient String PROPERTY_ADD_OBSERVER = "ControlAddObserver";
+	public static final transient String PROPERTY_REMOVE_OBSERVER = "ControlRemoveObserver";
+
+	public static final transient String PROPERTY_ADD_EVENT = "ControlAddEvent";
+	public static final transient String PROPERTY_REMOVE_EVENT = "ControlRemoveEvent";
+
+	public static final transient String PROPERTY_RENAME = "ControlRename";
+	/** Property ID to use when the list of outgoing connections is modified. */
+	public static final transient String SOURCE_CONNECTIONS = "ControlSourceConn";
+	/** Property ID to use when the list of incoming connections is modified. */
+	public static final transient String TARGET_CONNECTIONS = "ControlTargetConn";
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java
deleted file mode 100644
index 8562f648692ec3d27aa319bf66ce9aed15adb9cb..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/ObserverRootVirtualTreeNode.java
+++ /dev/null
@@ -1,31 +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.model;
-
-import java.util.Collection;
-
-import de.bmotionstudio.gef.editor.observer.Observer;
-
-public class ObserverRootVirtualTreeNode {
-
-	private Collection<Observer> observer;
-	private BControl control;
-
-	public ObserverRootVirtualTreeNode(BControl control) {
-		this.observer = control.getObservers().values();
-		this.control = control;
-	}
-
-	public Collection<Observer> getObserver() {
-		return observer;
-	}
-
-	public BControl getControl() {
-		return control;
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java
index 1de47b1b81c7c6e2a4d2a4ebfe2ce9a0a621f517..6aceebaa4cd1d5f66313b0a87137aaefcd8330fe 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java
@@ -12,15 +12,8 @@ import java.util.List;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.draw2d.PositionConstants;
 
-import de.be4.classicalb.core.parser.exceptions.BException;
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.ButtonGroupHelper;
-import de.bmotionstudio.gef.editor.IAddErrorListener;
-import de.bmotionstudio.gef.editor.scheduler.PredicateOperation;
-import de.prob.core.command.ExecuteOperationCommand;
-import de.prob.core.command.GetOperationByPredicateCommand;
-import de.prob.core.domainobjects.Operation;
-import de.prob.exceptions.ProBException;
 
 public class Visualization extends BControl {
 
@@ -46,12 +39,6 @@ public class Visualization extends BControl {
 
 	private transient IFile projectFile;
 
-	private transient ArrayList<IAddErrorListener> errorListener;
-
-	private transient Thread operationSchedulerThread;
-
-	private ArrayList<PredicateOperation> schedulerOperations;
-
 	public Visualization(String bmachine, String language, String version) {
 		super(null);
 		setVisualization(this);
@@ -59,7 +46,6 @@ public class Visualization extends BControl {
 		this.bmachine = bmachine;
 		this.language = language;
 		this.version = version;
-		this.errorListener = new ArrayList<IAddErrorListener>();
 		this.isRunning = false;
 		this.snapToGeometry = true;
 		createRulers();
@@ -70,73 +56,28 @@ public class Visualization extends BControl {
 	protected Object readResolve() {
 		super.readResolve();
 		this.isRunning = false;
-		populateVisualization(this);
 		createRulers();
-		this.errorListener = new ArrayList<IAddErrorListener>();
 		ButtonGroupHelper.reset();
-		// this.errorMessages = new ArrayList<ErrorMessage>();
-		// setAttributeValue(AttributeConstants.ATTRIBUTE_ID, "surface", false);
+		setVisualization(this);
+		init();
+		initChildren(getChildrenArray());
 		return this;
 	}
 
-	public void startOperationScheduler() {
-
-		if (!getSchedulerOperations().isEmpty()) {
-
-			operationSchedulerThread = new Thread(new Runnable() {
-				public void run() {
-					while (true) {
-
-						for (PredicateOperation p : getSchedulerOperations()) {
-
-							if (animation.getCurrentStateOperation(p
-									.getOperationName()) != null) {
-
-								try {
-
-									String fpredicate = "1=1";
-
-									if (p.getPredicate().length() > 0) {
-										fpredicate = p.getPredicate();
-									}
-
-									Operation op = GetOperationByPredicateCommand
-											.getOperation(animation
-													.getAnimator(), animation
-													.getState().getId(), p
-													.getOperationName(),
-													fpredicate);
-									ExecuteOperationCommand.executeOperation(
-											animation.getAnimator(), op);
-
-								} catch (ProBException e) {
-									break;
-								} catch (BException e) {
-									break;
-								}
-
-							}
-
-						}
-
-						try {
-							Thread.sleep(500);
-						} catch (InterruptedException e) {
-							break;
-						}
-
-					}
-				}
-			});
-			operationSchedulerThread.start();
-
+	private void initChildren(List<BControl> children) {
+		for (BControl c : children) {
+			c.setVisualization(this);
+			c.init();
+			for (BConnection sc : c.getSourceConnections()) {
+				sc.setVisualization(this);
+				sc.init();
+			}
+			for (BConnection tc : c.getTargetConnections()) {
+				tc.setVisualization(this);
+				tc.init();
+			}
+			initChildren(c.getChildrenArray());
 		}
-
-	}
-
-	public void stopOperationScheduler() {
-		if (operationSchedulerThread != null)
-			operationSchedulerThread.interrupt();
 	}
 
 	public void setIsRunning(Boolean bol) {
@@ -217,12 +158,7 @@ public class Visualization extends BControl {
 		}
 	}
 
-	// TODO: Reimplement me!!!
 	public boolean checkIfIdExists(String ID) {
-		// if (getVariableList().hasEntry(ID) == true)
-		// return true;
-		// if (getConstantList().hasEntry(ID) == true)
-		// return true;
 		return getAllBControlNames().contains(ID);
 	}
 
@@ -236,11 +172,11 @@ public class Visualization extends BControl {
 				return control;
 			}
 			for (BConnection c : control.getSourceConnections()) {
-				if (c.getIcon().equals(ID))
+				if (c.getID().equals(ID))
 					return c;
 			}
 			for (BConnection c : control.getTargetConnections()) {
-				if (c.getIcon().equals(ID))
+				if (c.getID().equals(ID))
 					return c;
 			}
 			if (control.getChildrenArray().size() > 0) {
@@ -317,25 +253,6 @@ public class Visualization extends BControl {
 		return null;
 	}
 
-	public void addErrorListener(IAddErrorListener listener) {
-		this.errorListener.add(listener);
-	}
-
-	public void removeErrorListener(IAddErrorListener listener) {
-		this.errorListener.remove(listener);
-	}
-
-	public void setSchedulerOperations(
-			ArrayList<PredicateOperation> schedulerOperations) {
-		this.schedulerOperations = schedulerOperations;
-	}
-
-	public ArrayList<PredicateOperation> getSchedulerOperations() {
-		if (this.schedulerOperations == null)
-			this.schedulerOperations = new ArrayList<PredicateOperation>();
-		return this.schedulerOperations;
-	}
-
 	public String getVersion() {
 		return version;
 	}
@@ -358,4 +275,9 @@ public class Visualization extends BControl {
 		return true;
 	}
 
+	@Override
+	public Visualization getVisualization() {
+		return this;
+	}
+
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BButtonService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BButtonService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BButtonService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BButtonService.java
index e0b5b38b09a6429c1c2a66bdc71929c3d3a8abcd..e725497872ea5284faf8035fa7dbebc3e6fe1c9b 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BButtonService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BButtonService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCheckboxService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCheckboxService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCheckboxService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCheckboxService.java
index dcaebcef01eac35993dd90a28542946e5bb9325e..116a6e6c81832d075d3d575040cf20adacd089ac 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCheckboxService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCheckboxService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCompositeService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCompositeService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCompositeService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCompositeService.java
index 4a11b1d1c33fbcdecb4d0a06c05ca1115270a412..c9a899bdcece83f8b6b12b1085bb1c351ce5d569 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BCompositeService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BCompositeService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BConnectionService.java
similarity index 94%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BConnectionService.java
index 8c2c8e97317f5a65067764c37f9c72ec8b9e4cda..54fcc6bfa0ff7cfea37295e007e6c174a0f91590 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BConnectionService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.gef.palette.ConnectionCreationToolEntry;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BEllipseService.java
similarity index 95%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BEllipseService.java
index ffaf7f7dceeebc27954799e4b6fbf7961a9171ee..12131e63d3fbaf0556d32ad804436a570d70232a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BEllipseService.java
@@ -1,4 +1,4 @@
-package de.bmotionstudio.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.AttributeConstants;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BImageService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BImageService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BImageService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BImageService.java
index e70769ac275e2571a66cce4bc76a5518011b1c5d..c843bb524d2c81614848eeb5315d3666da1b544e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BImageService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BImageService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRadioButtonService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRadioButtonService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRadioButtonService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRadioButtonService.java
index ae4b4250f88f47e70170eaef67dfd984d425af36..6092c7c7c4d1b8889a658e36f76a28881ec48cfe 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRadioButtonService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRadioButtonService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRectangleService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRectangleService.java
index f29b430d7c111916fc541e1f804fab319b757262..1c18ae9da50ef58f254861fb7a02fb5828528b47 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BRectangleService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableCellService.java
similarity index 95%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableCellService.java
index 38c27cbaf1e5a37e64e8d174a8a24c9964117e09..f9c21fafff49607a1639f09aa847617ecb5386e4 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableCellService.java
@@ -1,4 +1,4 @@
-package de.bmotionstudio.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableColumnService.java
similarity index 95%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableColumnService.java
index 6290adc316a60ca35f9cff2883b2bfb4947d6b43..893f8344112e2a6115d8b9848ef2612e640be51e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableColumnService.java
@@ -1,4 +1,4 @@
-package de.bmotionstudio.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableService.java
similarity index 93%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableService.java
index 67da1a6148b0f376502b36e0047ce42a98a36e70..e54ddd5de872a8868bebf6f1524f3c7e4ff4eb02 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTableService.java
@@ -1,4 +1,4 @@
-package de.bmotionstudio.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextService.java
index 77fcbaa39c22f72ab5fc3b3e70c13bbe32709245..6bf14bc403ca03eb36294d60f5389d744d6f86a3 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextfieldService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextfieldService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextfieldService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextfieldService.java
index 694879b12b6db775ff764b93e24d10bdd8fe06a2..1b66a40c36158c7a1c569bdcd87a606254a9f72d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTextfieldService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/BTextfieldService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/LightService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/LightService.java
similarity index 93%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/LightService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/LightService.java
index 84b8215550198df61c4f29f869381d83c2c34829..71ebf592f81beaad3bf45b07c5c50ecbac09bb59 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/LightService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/LightService.java
@@ -1,4 +1,4 @@
-package de.bmotionstudio.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SignalService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SignalService.java
similarity index 92%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SignalService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SignalService.java
index fd0c914a64001a7efa025c7575b4ebb135b3e5af..95dd51a686cedef9ccbd86bb376fe3421faf768a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SignalService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SignalService.java
@@ -3,7 +3,7 @@
  * 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.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SwitchService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SwitchService.java
similarity index 91%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SwitchService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SwitchService.java
index a4b441ea9c245575cb08e9a7e005f49bc3042016..bb4c4850ea30bb529021a688dc71174aa7af4b24 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/SwitchService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/SwitchService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TankService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TankService.java
similarity index 91%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TankService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TankService.java
index cc28f1eee33f501553c80c75fb73f39038c9c9c4..80c1a38cd19221bd8e0e48a071cc89af377b451f 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TankService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TankService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackNodeService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackNodeService.java
similarity index 91%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackNodeService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackNodeService.java
index d3b12c90a0e77b55080a024aa620e74293abdc7e..c01bcaa080339ca1934876ae7026a88f039aeb9c 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackNodeService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackNodeService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import de.bmotionstudio.gef.editor.AbstractBControlService;
 import de.bmotionstudio.gef.editor.IBControlService;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackService.java
similarity index 94%
rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackService.java
rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackService.java
index 4b90a844cd2925a2ae1411f24bed3edd59c72812..ccd221193739c9280e3d368dd917f3ed8d3cfb4b 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/TrackService.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/service/TrackService.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.gef.editor.service;
+package de.bmotionstudio.gef.editor.model.service;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.gef.palette.ConnectionCreationToolEntry;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java
index 04309d362c320e767f78cd5de856cdfd7495d5b8..d7c41fb88fdb7f28de2b32a2cfc9dd9d451af59a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java
@@ -3,6 +3,8 @@ package de.bmotionstudio.gef.editor.observer;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
@@ -92,8 +94,8 @@ public class ColumnObserver extends Observer {
 	}
 
 	@Override
-	public ObserverWizard getWizard(BControl control) {
-		return new WizardColumnObserver(control, this);
+	public ObserverWizard getWizard(Shell shell, BControl control) {
+		return new WizardColumnObserver(shell, control, this);
 	}
 
 }
\ No newline at end of file
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java
deleted file mode 100644
index 66140364297494279a50836161fc37be784b1379..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java
+++ /dev/null
@@ -1,77 +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.observer;
-
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.GroovyObject;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.codehaus.groovy.control.CompilationFailedException;
-import org.eclipse.core.resources.IFile;
-
-import de.bmotionstudio.gef.editor.Animation;
-import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverExternalObserverScript;
-
-public class ExternalObserverScript extends Observer {
-
-	public static String ID = "de.bmotionstudio.gef.editor.observer.ExternalObserverScript";
-
-	private transient GroovyObject groovyObject;
-
-	private String scriptPath;
-
-	// private String language;
-
-	@Override
-	public void check(Animation animation, BControl control) {
-
-		try {
-
-			if (groovyObject == null) {
-				IFile pFile = control.getVisualization().getProjectFile();
-				String myPath = (pFile.getProject().getLocation() + "/" + scriptPath)
-						.replace("file:", "");
-				ClassLoader parent = getClass().getClassLoader();
-				GroovyClassLoader loader = new GroovyClassLoader(parent);
-				Class<?> groovyClass;
-				groovyClass = loader.parseClass(new File(myPath));
-				// let's call some method on an instance
-				groovyObject = (GroovyObject) groovyClass.newInstance();
-			}
-
-			Object[] args = { animation, control };
-			groovyObject.invokeMethod("check", args);
-
-		} catch (CompilationFailedException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		} catch (InstantiationException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	@Override
-	public ObserverWizard getWizard(BControl control) {
-		return new WizardObserverExternalObserverScript(control, this);
-	}
-
-	public String getScriptPath() {
-		return scriptPath;
-	}
-
-	public void setScriptPath(String scriptPath) {
-		this.scriptPath = scriptPath;
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java
index 59584f2b31f9df4a8fdcd62d048597fe988219e3..d061b875402ad4379baa78f21ea04a01545af626 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java
@@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.be4.classicalb.core.parser.exceptions.BException;
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
@@ -154,8 +156,9 @@ public class ListenOperationByPredicate extends Observer {
 	}
 
 	@Override
-	public ObserverWizard getWizard(BControl control) {
-		return new WizardObserverListenOperationByPredicate(control, this);
+	public ObserverWizard getWizard(Shell shell, BControl control) {
+		return new WizardObserverListenOperationByPredicate(shell, control,
+				this);
 	}
 
 	public void setList(ArrayList<PredicateOperation> list) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java
index d503290e15669b161bec135606bacc8946c6d84f..2df22ada4a661a4152bf0e174cd64a32a2ef03ae 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java
@@ -8,6 +8,7 @@ package de.bmotionstudio.gef.editor.observer;
 
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.AbstractExpressionControl;
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
@@ -68,7 +69,7 @@ public abstract class Observer extends AbstractExpressionControl implements
 	 *            The corresponding control
 	 * @return the corresponding wizard
 	 */
-	public abstract ObserverWizard getWizard(BControl control);
+	public abstract ObserverWizard getWizard(Shell shell, BControl control);
 
 	public IFigure getToolTip(BControl control) {
 		return null;
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java
index f03260e6b5caa670bed04b91083347dadbcd579f..678bb63c7721e831396b492fbfd4b99ba707ba3e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverEvalObject.java
@@ -10,20 +10,12 @@ import de.bmotionstudio.gef.editor.BindingObject;
 
 public class ObserverEvalObject extends BindingObject implements Cloneable {
 
-	private String type; // unused
+	private String eval;
 
-	private String eval; // Predicate
+	private String attribute;
 
 	private Object value;
 
-	private String attribute;
-
-	/**
-	 * If true, value attribute is an ExpressionValueElement otherwise value
-	 * attribute is an simple value object (e.g. background image)
-	 * 
-	 * @see ExpressionValueElement
-	 */
 	private Boolean isExpressionMode;
 
 	private transient Boolean hasError;
@@ -32,24 +24,13 @@ public class ObserverEvalObject extends BindingObject implements Cloneable {
 		this.isExpressionMode = false;
 	}
 
-	public ObserverEvalObject(String type, String eval, Boolean isExpressionMode) {
-		this.type = type;
+	public ObserverEvalObject(String eval, Boolean isExpressionMode) {
 		this.eval = eval;
 		this.isExpressionMode = isExpressionMode;
 	}
 
-	public ObserverEvalObject(String type, String eval) {
-		this(type, eval, false);
-	}
-
-	public void setType(String type) {
-		Object oldValue = this.type;
-		this.type = type;
-		firePropertyChange("type", oldValue, this.type);
-	}
-
-	public String getType() {
-		return type;
+	public ObserverEvalObject(String eval) {
+		this(eval, false);
 	}
 
 	public void setEval(String eval) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java
index 252a7b622e5b7a998d97f86097650253eb368c67..a281190dfb8d626b7b0cbf9180dc9313f06cea08 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java
@@ -7,6 +7,8 @@
 package de.bmotionstudio.gef.editor.observer;
 
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
 
 import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -24,10 +26,8 @@ public abstract class ObserverWizard extends BMotionAbstractWizard {
 
 	private Observer observer;
 
-	protected Boolean observerDelete = false;
-
-	public ObserverWizard(BControl control, Observer observer) {
-		super(control);
+	public ObserverWizard(Shell shell, BControl control, Observer observer) {
+		super(shell, control);
 		this.observer = observer;
 	}
 
@@ -35,14 +35,6 @@ public abstract class ObserverWizard extends BMotionAbstractWizard {
 		return this.observer;
 	}
 
-	protected void setObserverDelete(Boolean b) {
-		this.observerDelete = b;
-	}
-
-	public Boolean isObserverDelete() {
-		return this.observerDelete;
-	}
-
 	public abstract Point getSize();
 	
 	@Override
@@ -50,4 +42,11 @@ public abstract class ObserverWizard extends BMotionAbstractWizard {
 		return observer.getName();
 	}
 
+	@Override
+	protected void configureShell(Shell newShell) {
+		super.configureShell(newShell);
+		PlatformUI.getWorkbench().getHelpSystem()
+				.setHelp(newShell, observer.getID());
+	}
+
 }
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java
index 02773321d1ee6a0534ddfcb5e262aa47f5ad1fe7..3fdd5cbb44fb0a4617f8dc86d6ceab3a5f54d8a5 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java
@@ -10,6 +10,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
@@ -64,14 +65,6 @@ public class SetAttribute extends Observer {
 							attributeVal.toString(), control, animation);
 					String er = attributeObj.validateValue(strAtrVal, null);
 					if (er != null) {
-						// addError(
-						// control,
-						// animation,
-						// "You selected "
-						// + attributeObj.getName()
-						// +
-						// " as attribute. There is a problem with your value: "
-						// + strAtrVal + " - Reason: " + er);
 						obj.setHasError(true);
 					} else {
 						attributeVal = attributeObj.unmarshal(strAtrVal);
@@ -108,8 +101,8 @@ public class SetAttribute extends Observer {
 	}
 
 	@Override
-	public ObserverWizard getWizard(BControl control) {
-		return new WizardObserverSetAttribute(control, this);
+	public ObserverWizard getWizard(Shell shell, BControl control) {
+		return new WizardObserverSetAttribute(shell, control, this);
 	}
 
 	public void setSetAttributeObjects(
@@ -133,23 +126,6 @@ public class SetAttribute extends Observer {
 
 	@Override
 	public IFigure getToolTip(BControl control) {
-		// // TODO: This method need rework!!!
-		// StringBuilder builder = new StringBuilder();
-		// builder.append("Set Attribute Observer:\n\n");
-		// for (SetAttributeObject obj : getSetAttributeObjects()) {
-		// if (obj.getEval() != null) {
-		// builder.append("[Predicate: " + obj.getEval());
-		// }
-		// if (obj.getAttribute() != null) {
-		// builder.append(" | Attribute: "
-		// + control.getAttribute(obj.getAttribute()).getName());
-		// }
-		// if (obj.getValue() != null) {
-		// builder.append(" | Value: " + obj.getValue() + "]");
-		// }
-		// builder.append("\n");
-		// }
-		// Label lb = new Label(builder.toString());
 		return null;
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java
index d73f0c5abadd0e021fdff1f2932ab3346e79004f..cdacd8225bd1c3671edb141a964f5e56257927e0 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttributeObject.java
@@ -13,8 +13,8 @@ public class SetAttributeObject extends ObserverEvalObject implements Cloneable
 		super();
 	}
 
-	public SetAttributeObject(String type, String eval) {
-		super(type, eval);
+	public SetAttributeObject(String eval) {
+		super(eval);
 	}
 
 	public SetAttributeObject clone() throws CloneNotSupportedException {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java
index 9886b3184634dbe24246762aeadd7c237c870bfc..303d92f036fcb6cd29578dfd439c8c91fbdda8ff 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java
@@ -6,6 +6,8 @@
 
 package de.bmotionstudio.gef.editor.observer;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -56,8 +58,8 @@ public class SimpleValueDisplay extends Observer {
 
 	}
 
-	public ObserverWizard getWizard(final BControl bcontrol) {
-		return new WizardObserverSimpleValueDisplay(bcontrol, this);
+	public ObserverWizard getWizard(Shell shell, final BControl bcontrol) {
+		return new WizardObserverSimpleValueDisplay(shell, bcontrol, this);
 	}
 
 	public String getType() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java
index b078e12811804505d629a88c34b6c08b9e595651..eaa058922ab96c52c9e66ef231d0bdda702e16a5 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java
@@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -99,8 +101,8 @@ public class SwitchChildCoordinates extends Observer {
 
 	}
 
-	public ObserverWizard getWizard(final BControl bcontrol) {
-		return new WizardObserverCSwitchCoordinates(bcontrol, this);
+	public ObserverWizard getWizard(Shell shell, final BControl bcontrol) {
+		return new WizardObserverCSwitchCoordinates(shell, bcontrol, this);
 	}
 
 	public List<ToggleObjectCoordinates> getToggleObjects() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java
index 0f7733a383286e15814bb1321f7f0bc351fdc09d..1c60cda3b7fd50fb194e984380ab1a606df759cc 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java
@@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.observer;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -109,8 +111,8 @@ public class SwitchCoordinates extends Observer {
 
 	}
 
-	public ObserverWizard getWizard(final BControl bcontrol) {
-		return new WizardObserverSwitchCoordinates(bcontrol, this);
+	public ObserverWizard getWizard(Shell shell, final BControl bcontrol) {
+		return new WizardObserverSwitchCoordinates(shell, bcontrol, this);
 	}
 
 	public List<ToggleObjectCoordinates> getToggleObjects() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java
index 4422c6182b1b5a1b1aab885e7b69650140c2c852..f448877091c9e82f1dcd7ddb0dfcf24ff9e71220 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java
@@ -11,6 +11,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
@@ -79,8 +80,8 @@ public class SwitchImage extends Observer {
 
 	}
 
-	public ObserverWizard getWizard(final BControl bcontrol) {
-		return new WizardObserverSwitchImage(bcontrol, this);
+	public ObserverWizard getWizard(Shell shell, final BControl bcontrol) {
+		return new WizardObserverSwitchImage(shell, bcontrol, this);
 	}
 
 	public List<ToggleObjectImage> getToggleObjects() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java
index 9ad72ca8e76de21b1fe7c98f8f5e1c0029210c71..889da54b37ad66ff6ecc74e563dae9b21da6d18a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/TableObserver.java
@@ -3,6 +3,8 @@ package de.bmotionstudio.gef.editor.observer;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.AttributeConstants;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
@@ -99,34 +101,33 @@ public class TableObserver extends Observer {
 
 				String content = rows.get(i - numberOfOldRows);
 
-				if (content != null && content.length() > 0)
+				if (content != null && content.length() > 0) {
 					content = UnicodeTranslator.toAscii(content);
-
-				content = content.replaceAll("^\\(", "");
-				content = content.replaceAll("\\)$", "");
-
-				List<String> columns = split2(content, '#');
-				int numberOfNewColumns = columns.size();
-
-				// Set only one time the number of columns!
-				if (!setColumns) {
-					int ncolumns = numberOfNewColumns;
-					if (numberOfOldColumns > numberOfNewColumns)
-						ncolumns = numberOfOldColumns;
-					control.setAttributeValue(
-							AttributeConstants.ATTRIBUTE_COLUMNS, ncolumns,
-							true, false);
-					setColumns = true;
-				}
-
-				for (int z = 0; z < numberOfNewColumns; z++) {
-					String val = columns.get(z);
-					BControl column = control.getChildrenArray().get(z);
-					BControl cell = column.getChildrenArray().get(i);
-					if (val != null && val.length() > 0)
-						val = UnicodeTranslator.toUnicode(val);
-					cell.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT,
-							val);
+					content = content.replaceAll("^\\(", "");
+					content = content.replaceAll("\\)$", "");
+					List<String> columns = split2(content, '#');
+					int numberOfNewColumns = columns.size();
+
+					// Set only one time the number of columns!
+					if (!setColumns) {
+						int ncolumns = numberOfNewColumns;
+						if (numberOfOldColumns > numberOfNewColumns)
+							ncolumns = numberOfOldColumns;
+						control.setAttributeValue(
+								AttributeConstants.ATTRIBUTE_COLUMNS, ncolumns,
+								true, false);
+						setColumns = true;
+					}
+
+					for (int z = 0; z < numberOfNewColumns; z++) {
+						String val = columns.get(z);
+						BControl column = control.getChildrenArray().get(z);
+						BControl cell = column.getChildrenArray().get(i);
+						if (val != null && val.length() > 0)
+							val = UnicodeTranslator.toUnicode(val);
+						cell.setAttributeValue(
+								AttributeConstants.ATTRIBUTE_TEXT, val);
+					}
 				}
 
 			}
@@ -152,8 +153,8 @@ public class TableObserver extends Observer {
 	}
 
 	@Override
-	public ObserverWizard getWizard(BControl control) {
-		return new WizardTableObserver(control, this);
+	public ObserverWizard getWizard(Shell shell, BControl control) {
+		return new WizardTableObserver(shell, control, this);
 	}
 
 	public boolean isOverrideCells() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java
index 0ebd9af41725df1c3d7b59819f7534bfa0846886..a2c4ac9cf93f993a1fddac03d1859abdf818e975 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java
@@ -22,18 +22,18 @@ public class ToggleObjectCoordinates extends ObserverEvalObject implements
 		// this.animate = false;
 	}
 
-	public ToggleObjectCoordinates(String type, String bcontrol, String x,
+	public ToggleObjectCoordinates(String bcontrol, String x,
 			String y, String eval) {
-		super(type, eval);
+		super(eval);
 		this.bcontrol = bcontrol;
 		this.x = x;
 		this.y = y;
 		// this.animate = animate;
 	}
 
-	public ToggleObjectCoordinates(String type, String x, String y,
+	public ToggleObjectCoordinates(String x, String y,
  String eval) {
-		this(type, null, x, y, eval);
+		this(null, x, y, eval);
 	}
 
 	public String getBcontrol() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java
index dcd321623e5df59845f339638bacee19a1b31cba..6f173c31a2af90413cbae1a0229e47dba1246e8a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java
@@ -14,8 +14,8 @@ public class ToggleObjectImage extends ObserverEvalObject implements Cloneable {
 	public ToggleObjectImage() {
 	}
 
-	public ToggleObjectImage(String type, String image, String eval) {
-		super(type, eval);
+	public ToggleObjectImage(String image, String eval) {
+		super(eval);
 		this.image = image;
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..37ac250c4920137be13ef3d395098873f48b5772
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/HelpAction.java
@@ -0,0 +1,34 @@
+/** 
+ * (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.observer.view;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.PlatformUI;
+
+import de.bmotionstudio.gef.editor.BMotionStudioImage;
+
+public class HelpAction extends Action {
+
+	private String observerID;
+
+	public HelpAction() {
+		setText("Show help...");
+		setImageDescriptor(BMotionStudioImage
+				.getImageDescriptor("icons/eclipse16/linkto_help.gif"));
+		setEnabled(false);
+	}
+
+	@Override
+	public void run() {
+		PlatformUI.getWorkbench().getHelpSystem().displayHelp(observerID);
+	}
+
+	public void setObserverID(String observerID) {
+		this.observerID = observerID;
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..6652afca6b93650cce63a402bc7bb3d5e019d7ee
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverPage.java
@@ -0,0 +1,212 @@
+/** 
+ * (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.observer.view;
+
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+
+import de.bmotionstudio.gef.editor.BMotionStudioImage;
+import de.bmotionstudio.gef.editor.EditorImageRegistry;
+import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.observer.Observer;
+import de.bmotionstudio.gef.editor.observer.ObserverWizard;
+import de.bmotionstudio.gef.editor.part.BMSAbstractEditPart;
+
+public class ObserverPage extends Page implements ISelectionListener {
+
+	private Composite container;
+
+	private BControl selectedControl;
+
+	private ListViewer listViewer;
+
+	private Composite rightContainer;
+
+	private HelpAction helpAction;
+
+	@Override
+	public void createControl(Composite parent) {
+		container = new Composite(parent, SWT.NONE);
+		GridLayout layout = new GridLayout(2, false);
+		// layout.horizontalSpacing = 0;
+		// layout.verticalSpacing = 0;
+		container.setLayout(layout);
+		listViewer = new ListViewer(container);
+		listViewer.setContentProvider(new IStructuredContentProvider() {
+
+			@Override
+			public void dispose() {
+			}
+
+			@Override
+			public void inputChanged(Viewer viewer, Object oldInput,
+					Object newInput) {
+			}
+
+			@Override
+			public Object[] getElements(Object inputElement) {
+				Collection<?> observerList = (Collection<?>) inputElement;
+				return observerList.toArray();
+			}
+
+		});
+		listViewer.setLabelProvider(new ILabelProvider() {
+
+			@Override
+			public void removeListener(ILabelProviderListener listener) {
+				// TODO Auto-generated method stub
+
+			}
+
+			@Override
+			public boolean isLabelProperty(Object element, String property) {
+				// TODO Auto-generated method stub
+				return false;
+			}
+
+			@Override
+			public void dispose() {
+				// TODO Auto-generated method stub
+
+			}
+
+			@Override
+			public void addListener(ILabelProviderListener listener) {
+				// TODO Auto-generated method stub
+
+			}
+
+			@Override
+			public String getText(Object element) {
+				Observer o = (Observer) element;
+				return o.getName();
+			}
+
+			@Override
+			public Image getImage(Object element) {
+				return BMotionStudioImage
+						.getImage(EditorImageRegistry.IMG_ICON_OBSERVER);
+			}
+		});
+
+		GridData layoutData = new GridData(GridData.FILL_VERTICAL);
+		layoutData.widthHint = 120;
+		listViewer.getControl().setLayoutData(layoutData);
+		listViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+			@Override
+			public void selectionChanged(SelectionChangedEvent event) {
+				restoreHelpButton();
+				if (rightContainer != null)
+					rightContainer.dispose();
+				if (event.getSelection() != null
+						&& event.getSelection() instanceof StructuredSelection) {
+					Object firstElement = ((StructuredSelection) event
+							.getSelection())
+							.getFirstElement();
+					if (firstElement instanceof Observer) {
+						Observer o = (Observer) firstElement;
+						ObserverWizard wizard = o
+								.getWizard(Display.getDefault()
+										.getActiveShell(), selectedControl);
+						// IWizardPage page = wizard.getPages()[0];
+						rightContainer = new Composite(container, SWT.NONE);
+						rightContainer.setLayoutData(new GridData(
+								GridData.FILL_BOTH));
+						rightContainer.setLayout(new FillLayout());
+						wizard.createWizardContent(rightContainer);
+						helpAction.setEnabled(true);
+						helpAction.setObserverID(o.getID());
+					}
+				}
+				container.layout();
+			}
+		});
+		
+		getSite().getPage().addPostSelectionListener(this);
+		createActions();
+		createMenu(getSite());
+
+	}
+
+	private void createActions() {
+		helpAction = new HelpAction();
+	}
+
+	private void createMenu(final IPageSite pageSite) {
+		pageSite.getActionBars().getToolBarManager().add(helpAction);
+	}
+
+	@Override
+	public Control getControl() {
+		return container;
+	}
+
+	@Override
+	public void setFocus() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		if (selection != null && selection instanceof StructuredSelection) {
+			Object firstElement = ((StructuredSelection) selection)
+					.getFirstElement();
+			if (firstElement instanceof BMSAbstractEditPart) {
+				selectedControl = (BControl) ((BMSAbstractEditPart) firstElement)
+						.getModel();
+				if (!listViewer.getControl().isDisposed()) {
+					Collection<Observer> values = selectedControl
+							.getObservers().values();
+					listViewer.setInput(values);
+					if (values.size() > 0) {
+						Observer firstObserver = values.iterator().next();
+						listViewer.setSelection(new StructuredSelection(
+								firstObserver));
+					} else {
+						restoreHelpButton();
+						if (rightContainer != null)
+							rightContainer.dispose();
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public void dispose() {
+		getSite().getPage().addPostSelectionListener(this);
+		super.dispose();
+	}
+
+	private void restoreHelpButton() {
+		helpAction.setEnabled(false);
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java
new file mode 100644
index 0000000000000000000000000000000000000000..11140584515010b4df56fc28f8b8a465810e79c1
--- /dev/null
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/view/ObserverView.java
@@ -0,0 +1,68 @@
+/** 
+ * (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.observer.view;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+import de.bmotionstudio.gef.editor.BMotionStudioEditor;
+
+public class ObserverView extends PageBookView {
+
+	public static String ID = "de.bmotionstudio.gef.editor.ObserverView";
+
+	private String defaultText = "The observer view is not available.";
+
+	private ObserverPage page;
+
+	@Override
+	protected IPage createDefaultPage(PageBook book) {
+		MessagePage page = new MessagePage();
+		initPage(page);
+		page.createControl(book);
+		page.setMessage(defaultText);
+		return page;
+	}
+
+	@Override
+	protected PageRec doCreatePage(IWorkbenchPart part) {
+		if (part instanceof BMotionStudioEditor) {
+			page = new ObserverPage();
+			initPage(page);
+			page.createControl(getPageBook());
+			return new PageRec(part, page);
+		}
+		return null;
+	}
+
+	@Override
+	protected void doDestroyPage(IWorkbenchPart part, PageRec rec) {
+		ObserverPage page = (ObserverPage) rec.page;
+		page.dispose();
+		rec.dispose();
+	}
+
+	@Override
+	protected IWorkbenchPart getBootstrapPart() {
+		IWorkbenchPage page = getSite().getPage();
+		if (page != null) {
+			return page.getActiveEditor();
+		}
+		return null;
+	}
+
+	@Override
+	protected boolean isImportant(IWorkbenchPart part) {
+		return (part instanceof IEditorPart);
+	}
+
+}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java
deleted file mode 100644
index 2450ad1a6a17dcc9def5a1c29a412d5a6b689dca..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/AbstractObserverWizardPage.java
+++ /dev/null
@@ -1,30 +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.observer.wizard;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.PlatformUI;
-
-import de.bmotionstudio.gef.editor.observer.Observer;
-
-public class AbstractObserverWizardPage extends WizardPage {
-
-	private Observer observer;
-
-	protected AbstractObserverWizardPage(String pageName, Observer observer) {
-		super(pageName);
-		this.observer = observer;
-	}
-
-	@Override
-	public void createControl(Composite parent) {
-		PlatformUI.getWorkbench().getHelpSystem()
-				.setHelp(parent, observer.getClass().getName());
-	}
-
-}
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 04c3a5cd6d6850073f3666b70767eb971400eba6..dc48f9c0ca40ea7a5a80b012db6d49f90c1dcefb 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
@@ -9,8 +9,6 @@ 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.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.FontData;
@@ -18,8 +16,10 @@ import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -29,93 +29,80 @@ import de.bmotionstudio.gef.editor.observer.ObserverWizard;
 
 public class WizardColumnObserver extends ObserverWizard {
 
-	private class ColumnObserverPage extends WizardPage {
+	private Text txtExpression;
+	private Text txtPredicate;
 
-		private Text txtExpression;
-		private Text txtPredicate;
-
-		public Text getTxtExpression() {
-			return txtExpression;
-		}
-
-		protected ColumnObserverPage(final String pageName) {
-			super(pageName);
-		}
-
-		public void createControl(final Composite parent) {
-
-			final DataBindingContext dbc = new DataBindingContext();
+	@Override
+	public Control createWizardContent(Composite parent) {
 
-			Composite container = new Composite(parent, SWT.NONE);
+		final DataBindingContext dbc = new DataBindingContext();
 
-			container.setLayoutData(new GridData(GridData.FILL_BOTH));
-			container.setLayout(new GridLayout(2, false));
+		Composite container = new Composite(parent, SWT.NONE);
 
-			Label lb = new Label(container, SWT.NONE);
-			lb.setText("Predicate:");
+		container.setLayout(new GridLayout(2, false));
 
-			txtPredicate = new Text(container, SWT.BORDER);
-			txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
-					"Arial", 10, SWT.NONE)));
+		Label lb = new Label(container, SWT.NONE);
+		lb.setText("Predicate:");
 
-			lb = new Label(container, SWT.NONE);
-			lb.setText("Expression:");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		txtPredicate = new Text(container, SWT.BORDER);
+		txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
+				"Arial", 10, SWT.NONE)));
 
-			txtExpression = new Text(container, SWT.BORDER | SWT.MULTI
-					| SWT.WRAP);
-			txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
+		lb = new Label(container, SWT.NONE);
+		lb.setText("Expression:");
+		lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
-			initBindings(dbc);
+		txtExpression = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP);
+		txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-			setControl(container);
+		initBindings(dbc);
 
-		}
+		return container;
 
-		private void initBindings(DataBindingContext dbc) {
+	}
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(ColumnObserver) getObserver(), "predicate"));
+	private void initBindings(DataBindingContext dbc) {
 
-			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(ColumnObserver) getObserver(), "expression"));
+		dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
+				BeansObservables.observeValue((ColumnObserver) getObserver(),
+						"predicate"));
 
-		}
+		dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify),
+				BeansObservables.observeValue((ColumnObserver) getObserver(),
+						"expression"));
 
 	}
 
-	public WizardColumnObserver(BControl bcontrol,
+
+	public WizardColumnObserver(Shell shell, BControl bcontrol,
 			Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ColumnObserverPage("ColumnObserverPage"));
+		super(shell, bcontrol, bobserver);
 	}
 
-	@Override
-	protected Boolean prepareToFinish() {
-
-		ColumnObserverPage page = (ColumnObserverPage) getPage("ColumnObserverPage");
-
-		String errorStr = "";
-
-		if (page.getTxtExpression().getText().length() == 0)
-			errorStr += "Please enter an expression.\n";
-
-		if (page.getErrorMessage() != null)
-			errorStr += "Please check the syntax/parser error.\n";
-
-		if (errorStr.length() > 0) {
-			MessageDialog.openError(Display.getDefault().getActiveShell(),
-					"An Error occured", errorStr);
-			return false;
-		}
-
-		return true;
-
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	//
+	// ColumnObserverPage page = (ColumnObserverPage)
+	// getPage("ColumnObserverPage");
+	//
+	// String errorStr = "";
+	//
+	// if (page.getTxtExpression().getText().length() == 0)
+	// errorStr += "Please enter an expression.\n";
+	//
+	// if (page.getErrorMessage() != null)
+	// errorStr += "Please check the syntax/parser error.\n";
+	//
+	// if (errorStr.length() > 0) {
+	// MessageDialog.openError(Display.getDefault().getActiveShell(),
+	// "An Error occured", errorStr);
+	// return false;
+	// }
+	//
+	// return true;
+	//
+	// }
 
 	@Override
 	public Point getSize() {
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 3a5b8b09e05c56eb8d139898c317cb86ac5caddb..c76bf57ec4f94b70f41da5fc8e7b529e7d045fac 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
@@ -12,13 +12,10 @@ 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;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.swt.SWT;
@@ -33,18 +30,16 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 
-import de.be4.classicalb.core.parser.BParser;
-import de.bmotionstudio.gef.editor.AttributeConstants;
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 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;
@@ -52,217 +47,138 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverCSwitchCoordinates extends ObserverWizard {
 
-	private String lastChangedControlID;
-
-	private class ObserverCSwitchCoordinatesPage extends
-			AbstractObserverWizardPage {
-
-		private TableViewer tableViewer;
-
-		protected ObserverCSwitchCoordinatesPage(final String pageName) {
-			super(pageName, getObserver());
-		}
-
-		public void createControl(Composite parent) {
-
-			super.createControl(parent);
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, ToggleObjectCoordinates.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-			tableViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						@Override
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							Object firstElement = selection.getFirstElement();
-							if (firstElement instanceof ObserverEvalObject) {
-								restorePreview();
-								ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement;
-								if (!observerEvalObject.isExpressionMode()) {
-									BControl control = getBControl();
-									ToggleObjectCoordinates toggleObjectCoordinates = (ToggleObjectCoordinates) observerEvalObject;
-									String attributeX = AttributeConstants.ATTRIBUTE_X;
-									String attributeY = AttributeConstants.ATTRIBUTE_Y;
-									String x = toggleObjectCoordinates.getX();
-									String y = toggleObjectCoordinates.getY();
-									String controlID = toggleObjectCoordinates
-											.getBcontrol();
-									BControl bControl = control
-											.getChild(controlID);
-									if (bControl != null) {
-										bControl.setAttributeValue(attributeX,
-												x, true, false);
-										bControl.setAttributeValue(attributeY,
-												y, true, false);
-									}
-									lastChangedControlID = controlID;
-								}
-							}
-						}
-
-					});
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(100);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "eval", getBControl().getVisualization(), getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Control");
-			column.getColumn().setWidth(175);
-			column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-					"bcontrol"));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("X");
-			column.getColumn().setWidth(125);
-			column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-					"x"));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Y");
-			column.getColumn().setWidth(125);
-			column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-					"y"));
-
-			// column = new TableViewerColumn(tableViewer, SWT.NONE);
-			// column.getColumn().setText("Animate?");
-			// column.getColumn().setWidth(75);
-			// column.setEditingSupport(new EditingSupport(tableViewer) {
-			//
-			// private CellEditor cellEditor = new CheckboxCellEditor(
-			// (Composite) tableViewer.getControl());
-			//
-			// @Override
-			// protected void setValue(Object element, Object value) {
-			// ((ToggleObjectCoordinates) element).setAnimate(Boolean
-			// .valueOf(String.valueOf(value)));
-			// }
-			//
-			// @Override
-			// protected Object getValue(Object element) {
-			// Boolean b = ((ToggleObjectCoordinates) element)
-			// .getAnimate();
-			// return b != null ? b : false;
-			// }
-			//
-			// @Override
-			// protected CellEditor getCellEditor(Object element) {
-			// return cellEditor;
-			// }
-			//
-			// @Override
-			// protected boolean canEdit(Object element) {
-			// return true;
-			// }
-			//
-			// });
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-			tableViewer
-					.setLabelProvider(new ObserverLabelProvider(
-							BeansObservables.observeMaps(
-									contentProvider.getKnownElements(),
-									new String[] { "eval", "bcontrol", "x",
-											"y", "animate" })));
-
-			final WritableList input = new WritableList(
-					((SwitchChildCoordinates) getObserver()).getToggleObjects(),
-					ToggleObjectCoordinates.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(toggleObj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates(
-							BParser.PREDICATE_PREFIX, "", "", "", "");
-					input.add(toggleObj);
-				}
-			});
-
-			setControl(container);
-
-		}
-	}
-
-	public WizardObserverCSwitchCoordinates(final BControl bcontrol,
-			final Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverCSwitchCoordinatesPage(
-				"ObserverCToggleCoordinatesPage"));
-	}
+	private TableViewer tableViewer;
 
 	@Override
-	protected Boolean prepareToFinish() {
-		restorePreview();
-		if (((SwitchChildCoordinates) getObserver()).getToggleObjects().size() == 0) {
-			setObserverDelete(true);
-		} else {
-			for (ToggleObjectCoordinates obj : ((SwitchChildCoordinates) getObserver())
-					.getToggleObjects()) {
-				if (obj.getX().isEmpty() || obj.getY().isEmpty()
-						|| obj.getBcontrol().isEmpty()) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The x , y and control fields must not be empty.");
-					return false;
+	public Control createWizardContent(Composite parent) {
+
+		DataBindingContext dbc = new DataBindingContext();
+
+		GridLayout gl = new GridLayout(1, true);
+		gl.horizontalSpacing = 0;
+		gl.verticalSpacing = 0;
+		gl.marginHeight = 0;
+		gl.marginWidth = 0;
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(gl);
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, ToggleObjectCoordinates.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(100);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"eval", getBControl().getVisualization(), getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Control");
+		column.getColumn().setWidth(175);
+		column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
+				"bcontrol"));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("X");
+		column.getColumn().setWidth(125);
+		column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "x"));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Y");
+		column.getColumn().setWidth(125);
+		column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y"));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+		tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables
+				.observeMaps(contentProvider.getKnownElements(), new String[] {
+						"eval", "bcontrol", "x", "y", "animate" })));
+
+		final WritableList input = new WritableList(
+				((SwitchChildCoordinates) getObserver()).getToggleObjects(),
+				ToggleObjectCoordinates.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
 				}
+				ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(toggleObj);
 			}
-		}
-		return true;
-	}
-
-	private void restorePreview() {
-		if (lastChangedControlID != null) {
-			BControl bControl = getBControl().getChild(lastChangedControlID);
-			if (bControl != null) {
-				bControl.restoreDefaultValue(AttributeConstants.ATTRIBUTE_X);
-				bControl.restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y);
+		});
+
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates(
+						"", "", "", "");
+				input.add(toggleObj);
 			}
-		}
+		});
+
+		return container;
+
 	}
 
-	@Override
-	public boolean performCancel() {
-		restorePreview();
-		return super.performCancel();
+	public WizardObserverCSwitchCoordinates(Shell shell, BControl bcontrol,
+			Observer bobserver) {
+		super(shell, bcontrol, bobserver);
 	}
 
+	// @Override
+	// protected Boolean prepareToFinish() {
+	// // restorePreview();
+	// if (((SwitchChildCoordinates) getObserver()).getToggleObjects().size() ==
+	// 0) {
+	// setObserverDelete(true);
+	// } else {
+	// for (ToggleObjectCoordinates obj : ((SwitchChildCoordinates)
+	// getObserver())
+	// .getToggleObjects()) {
+	// if (obj.getX().isEmpty() || obj.getY().isEmpty()
+	// || obj.getBcontrol().isEmpty()) {
+	// MessageDialog
+	// .openError(getShell(), "Please check your entries",
+	// "Please check your entries. The x , y and control fields must not be empty.");
+	// return false;
+	// }
+	// }
+	// }
+	// return true;
+	// }
+
+	// private void restorePreview() {
+	// if (lastChangedControlID != null) {
+	// BControl bControl = getBControl().getChild(lastChangedControlID);
+	// if (bControl != null) {
+	// bControl.restoreDefaultValue(AttributeConstants.ATTRIBUTE_X);
+	// bControl.restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y);
+	// }
+	// }
+	// }
+
+	// @Override
+	// public boolean performCancel() {
+	// // restorePreview();
+	// return super.performCancel();
+	// }
+
 	@Override
 	public Point getSize() {
 		return new Point(650, 500);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java
deleted file mode 100644
index 9e4c0d4e57f8aaec0519b81a7afdb3c4d932616b..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java
+++ /dev/null
@@ -1,111 +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.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.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.observer.ExternalObserverScript;
-import de.bmotionstudio.gef.editor.observer.Observer;
-import de.bmotionstudio.gef.editor.observer.ObserverWizard;
-
-public class WizardObserverExternalObserverScript extends ObserverWizard {
-
-	private class ObserverExternalObserverScriptPage extends WizardPage {
-
-		private Text txtScriptPath;
-
-		protected ObserverExternalObserverScriptPage(final String pageName) {
-			super(pageName);
-		}
-
-		public Text getTxtScriptPath() {
-			return txtScriptPath;
-		}
-
-		public void createControl(final Composite parent) {
-
-			final DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayoutData(new GridData(GridData.FILL_BOTH));
-			container.setLayout(new GridLayout(2, false));
-
-			Label lb = new Label(container, SWT.NONE);
-			lb.setText("Script File:");
-
-			txtScriptPath = new Text(container, SWT.BORDER);
-			txtScriptPath.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			txtScriptPath.setFont(new Font(Display.getDefault(), new FontData(
-					"Arial", 10, SWT.NONE)));
-
-			initBindings(dbc);
-
-			setControl(container);
-
-		}
-
-		private void initBindings(DataBindingContext dbc) {
-
-			dbc.bindValue(
-					SWTObservables.observeText(txtScriptPath, SWT.Modify),
-					BeansObservables.observeValue(
-							(ExternalObserverScript) getObserver(),
-							"scriptPath"));
-
-		}
-
-
-	}
-
-	public WizardObserverExternalObserverScript(BControl bcontrol,
-			Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverExternalObserverScriptPage(
-				"ObserverExternalObserverScriptPage"));
-	}
-
-	@Override
-	protected Boolean prepareToFinish() {
-
-		ObserverExternalObserverScriptPage page = (ObserverExternalObserverScriptPage) getPage("ObserverExternalObserverScriptPage");
-
-		String errorStr = "";
-
-		if (page.getTxtScriptPath().getText().length() == 0)
-			errorStr += "Please enter a path for a script file.\n";
-
-		if (errorStr.length() > 0) {
-			MessageDialog.openError(Display.getDefault().getActiveShell(),
-					"An Error occured", errorStr);
-			return false;
-		}
-
-		return true;
-
-	}
-
-	@Override
-	public Point getSize() {
-		return new Point(600, 500);
-	}
-
-}
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 856cd5a2e88267505c1a347a7bea6059713752a7..83adaee4f663a2565965bfd3cc528f807d2bcfe1 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
@@ -16,17 +16,14 @@ 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;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
 import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -40,13 +37,15 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
 
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
@@ -57,7 +56,6 @@ 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;
@@ -65,325 +63,232 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverListenOperationByPredicate extends ObserverWizard {
 
-	private String lastChangedAttributeID;
+	private TableViewer tableViewer;
 
-	private class ObserverListenOperationByPredicatePage extends
-			AbstractObserverWizardPage {
-
-		private TableViewer tableViewer;
-
-		protected ObserverListenOperationByPredicatePage(final String pageName) {
-			super(pageName, getObserver());
-		}
-
-		public void createControl(final Composite parent) {
-
-			super.createControl(parent);
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			setControl(container);
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, PredicateOperation.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-			tableViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						@Override
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							Object firstElement = selection.getFirstElement();
-							if (firstElement instanceof ObserverEvalObject) {
-
-								ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement;
-								BControl control = getBControl();
-
-								if (lastChangedAttributeID != null)
-									control.restoreDefaultValue(lastChangedAttributeID);
-
-								PredicateOperation obj = (PredicateOperation) observerEvalObject;
-
-								if (!obj.isExpressionMode()) {
+	@Override
+	public Control createWizardContent(Composite parent) {
+
+		parent.setLayout(new FillLayout());
+
+		DataBindingContext dbc = new DataBindingContext();
+
+		GridLayout gl = new GridLayout(1, true);
+		gl.horizontalSpacing = 0;
+		gl.verticalSpacing = 0;
+		gl.marginHeight = 0;
+		gl.marginWidth = 0;
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(gl);
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, PredicateOperation.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Operation");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new OperationValueEditingSupport(tableViewer,
+				getBControl()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"predicate", getBControl().getVisualization(), getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Attribute");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new AttributeObserverValueEditing(tableViewer));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Value");
+		column.getColumn().setWidth(175);
+		column.setEditingSupport(new AttributeExpressionEdittingSupport(
+				tableViewer, getBControl()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Expression?");
+		column.getColumn().setWidth(100);
+		column.setEditingSupport(new IsExpressionModeEditingSupport(
+				tableViewer, getBControl()));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+		tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables
+				.observeMaps(contentProvider.getKnownElements(), new String[] {
+						"operationName", "predicate", "attribute", "value",
+						"isExpressionMode" })));
+		final WritableList input = new WritableList(
+				((ListenOperationByPredicate) getObserver()).getList(),
+				PredicateOperation.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
+				}
+				PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(obj);
+			}
+		});
 
-									String attribute = obj.getAttribute();
-									Object value = obj.getValue();
-									control.setAttributeValue(attribute, value,
-											true, false);
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				PredicateOperation obj = new PredicateOperation();
+				input.add(obj);
+				tableViewer.setSelection(new StructuredSelection(obj));
+			}
+		});
 
-									lastChangedAttributeID = attribute;
+		return container;
 
-								}
+	}
 
-							}
-						}
+	private class AttributeObserverValueEditing extends EditingSupport {
 
-					});
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Operation");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new OperationValueEditingSupport(
-					tableViewer, getBControl()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "predicate", getBControl().getVisualization(),
-					getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Attribute");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new AttributeObserverValueEditing(
-					tableViewer));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Value");
-			column.getColumn().setWidth(175);
-			column.setEditingSupport(new AttributeExpressionEdittingSupport(
-					tableViewer, getBControl()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Expression?");
-			column.getColumn().setWidth(100);
-			column.setEditingSupport(new IsExpressionModeEditingSupport(
-					tableViewer, getBControl()));
-
-			// MathTableViewerColumn columnEval = new MathTableViewerColumn(
-			// tableViewer, column, dbc, "predicate");
-			// columnEval.addErrorMessageListener(new IMessageListener() {
-			// public void setMsg(final String errorMsg) {
-			// if (errorMsg != null) {
-			// setErrorMessage(errorMsg);
-			// } else {
-			// setErrorMessage(null);
-			// setMessage(getObserver().getDescription());
-			// }
-			// }
-			// });
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"operationName", "predicate", "attribute",
-									"value", "isExpressionMode" })));
-			final WritableList input = new WritableList(
-					((ListenOperationByPredicate) getObserver()).getList(),
-					PredicateOperation.class);
-			tableViewer.setInput(input);
-
-			// ColumnViewerEditorActivationStrategy activationSupport = new
-			// ColumnViewerEditorActivationStrategy(
-			// tableViewer) {
-			// protected boolean isEditorActivationEvent(
-			// ColumnViewerEditorActivationEvent event) {
-			// return event.eventType ==
-			// ColumnViewerEditorActivationEvent.TRAVERSAL
-			// || event.eventType ==
-			// ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
-			// || event.eventType ==
-			// ColumnViewerEditorActivationEvent.PROGRAMMATIC
-			// || (event.eventType ==
-			// ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode ==
-			// KeyLookupFactory
-			// .getDefault().formalKeyLookup(
-			// IKeyLookup.ENTER_NAME));
-			// }
-			// };
-			// activationSupport.setEnableEditorActivationWithKeyboard(true);
-
-			/*
-			 * Without focus highlighter, keyboard events will not be delivered
-			 * to
-			 * ColumnViewerEditorActivationStragety#isEditorActivationEvent(...)
-			 * (see above)
-			 */
-			// FocusCellHighlighter focusCellHighlighter = new
-			// FocusCellOwnerDrawHighlighter(
-			// tableViewer);
-			// TableViewerFocusCellManager focusCellManager = new
-			// TableViewerFocusCellManager(
-			// tableViewer, focusCellHighlighter);
-
-			// TableViewerEditor.create(tableViewer, focusCellManager,
-			// activationSupport, ColumnViewerEditor.TABBING_VERTICAL
-			// | ColumnViewerEditor.KEYBOARD_ACTIVATION);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(obj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					PredicateOperation obj = new PredicateOperation();
-					input.add(obj);
-					tableViewer.setSelection(new StructuredSelection(obj));
-				}
-			});
+		private ComboBoxViewerCellEditor cellEditor = null;
 
+		public AttributeObserverValueEditing(TableViewer cv) {
+			super(cv);
 		}
 
-		private class AttributeObserverValueEditing extends EditingSupport {
-
-			private ComboBoxViewerCellEditor cellEditor = null;
-
-			public AttributeObserverValueEditing(TableViewer cv) {
-				super(cv);
-			}
-
-			@Override
-			protected boolean canEdit(Object element) {
-				return BMotionWizardUtil.isEditElement(getViewer());
-			}
+		@Override
+		protected boolean canEdit(Object element) {
+			return BMotionWizardUtil.isEditElement(getViewer());
+		}
 
-			@Override
-			protected Object getValue(Object element) {
-				return ((PredicateOperation) element).getAttribute();
-			}
+		@Override
+		protected Object getValue(Object element) {
+			return ((PredicateOperation) element).getAttribute();
+		}
 
-			@Override
-			protected void setValue(Object element, Object value) {
-				if (value != null) {
-					PredicateOperation obj = (PredicateOperation) element;
-					obj.setAttribute(value.toString());
-					obj.setIsExpressionMode(false);
-				}
+		@Override
+		protected void setValue(Object element, Object value) {
+			if (value != null) {
+				PredicateOperation obj = (PredicateOperation) element;
+				obj.setAttribute(value.toString());
+				obj.setIsExpressionMode(false);
 			}
+		}
 
-			@Override
-			protected CellEditor getCellEditor(Object element) {
-				if (cellEditor == null) {
-
-					cellEditor = new ComboBoxViewerCellEditor(
-							(Composite) tableViewer.getControl(), SWT.READ_ONLY);
-					cellEditor
-							.setContentProvider(new ObservableListContentProvider());
-					cellEditor.setLabelProvider(new LabelProvider() {
-						public String getText(Object element) {
-							return getBControl().getAttributes()
-									.get(element.toString()).getName();
-						}
-					});
-					cellEditor.setInput(new ComputedList() {
-						@Override
-						protected List<String> calculate() {
-							ArrayList<String> atrList = new ArrayList<String>();
-							for (AbstractAttribute atr : getBControl()
-									.getAttributes().values()) {
-								atrList.add(atr.getID());
-							}
-							return atrList;
+		@Override
+		protected CellEditor getCellEditor(Object element) {
+			if (cellEditor == null) {
+
+				cellEditor = new ComboBoxViewerCellEditor(
+						(Composite) tableViewer.getControl(), SWT.READ_ONLY);
+				cellEditor
+						.setContentProvider(new ObservableListContentProvider());
+				cellEditor.setLabelProvider(new LabelProvider() {
+					public String getText(Object element) {
+						return getBControl().getAttributes()
+								.get(element.toString()).getName();
+					}
+				});
+				cellEditor.setInput(new ComputedList() {
+					@Override
+					protected List<String> calculate() {
+						ArrayList<String> atrList = new ArrayList<String>();
+						for (AbstractAttribute atr : getBControl()
+								.getAttributes().values()) {
+							atrList.add(atr.getID());
 						}
-					});
+						return atrList;
+					}
+				});
 
-					((CCombo) cellEditor.getControl())
-							.addFocusListener(new FocusListener() {
+				((CCombo) cellEditor.getControl())
+						.addFocusListener(new FocusListener() {
 
-								String oldValue;
+							String oldValue;
 
-								public void focusGained(FocusEvent e) {
-									oldValue = ((CCombo) cellEditor
-											.getControl()).getText();
+							public void focusGained(FocusEvent e) {
+								oldValue = ((CCombo) cellEditor.getControl())
+										.getText();
 
-								}
+							}
 
-								public void focusLost(FocusEvent e) {
+							public void focusLost(FocusEvent e) {
 
-									if (!oldValue.equals(((CCombo) cellEditor
-											.getControl()).getText())) {
+								if (!oldValue.equals(((CCombo) cellEditor
+										.getControl()).getText())) {
 
-										IStructuredSelection selection = (IStructuredSelection) getViewer()
-												.getSelection();
+									IStructuredSelection selection = (IStructuredSelection) getViewer()
+											.getSelection();
 
-										PredicateOperation p = (PredicateOperation) selection
-												.getFirstElement();
+									PredicateOperation p = (PredicateOperation) selection
+											.getFirstElement();
 
-										AbstractAttribute atr = getBControl()
-												.getAttributes().get(
-														p.getAttribute());
+									AbstractAttribute atr = getBControl()
+											.getAttributes().get(
+													p.getAttribute());
 
-										p.setValue(atr.getValue());
-										tableViewer.refresh();
+									p.setValue(atr.getValue());
+									tableViewer.refresh();
 
-									}
 								}
+							}
 
-							});
+						});
 
-				}
-				return cellEditor;
 			}
-
+			return cellEditor;
 		}
 
 	}
 
-	public WizardObserverListenOperationByPredicate(final BControl bcontrol,
-			final Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverListenOperationByPredicatePage(
-				"ObserverListenOperationByPredicatePage"));
+	public WizardObserverListenOperationByPredicate(Shell shell,
+			BControl bcontrol, Observer bobserver) {
+		super(shell, bcontrol, bobserver);
 	}
 
-	@Override
-	public boolean performCancel() {
-		getBControl().restoreDefaultValue(lastChangedAttributeID);
-		return super.performCancel();
-	}
-
-	@Override
-	protected Boolean prepareToFinish() {
-		getBControl().restoreDefaultValue(lastChangedAttributeID);
-		if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) {
-			setObserverDelete(true);
-		} else {
-			for (PredicateOperation obj : ((ListenOperationByPredicate) getObserver())
-					.getList()) {
-				if (obj.getOperationName().isEmpty()) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The operation field must not be empty.");
-					return false;
-				} else if (obj.getAttribute() == null) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The attribute field must not be empty.");
-					return false;
-				}
-			}
-		}
-		return true;
-	}
+	// @Override
+	// public boolean performCancel() {
+	// // getBControl().restoreDefaultValue(lastChangedAttributeID);
+	// return super.performCancel();
+	// }
+
+	// @Override
+	// protected Boolean prepareToFinish() {
+	// // getBControl().restoreDefaultValue(lastChangedAttributeID);
+	// if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) {
+	// setObserverDelete(true);
+	// } else {
+	// for (PredicateOperation obj : ((ListenOperationByPredicate)
+	// getObserver())
+	// .getList()) {
+	// if (obj.getOperationName().isEmpty()) {
+	// MessageDialog
+	// .openError(getShell(), "Please check your entries",
+	// "Please check your entries. The operation field must not be empty.");
+	// return false;
+	// } else if (obj.getAttribute() == null) {
+	// MessageDialog
+	// .openError(getShell(), "Please check your entries",
+	// "Please check your entries. The attribute field must not be empty.");
+	// return false;
+	// }
+	// }
+	// }
+	// return true;
+	// }
 
 	@Override
 	public Point getSize() {
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 8817a572855ba8271c20bf61bd52d3ada2bcc0f4..9a6d6dbca1d235a82cdf3a772fa066e82472c855 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
@@ -19,13 +19,11 @@ import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
 import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -39,15 +37,16 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 
-import de.be4.classicalb.core.parser.BParser;
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.attribute.AbstractAttribute;
@@ -56,7 +55,6 @@ 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;
@@ -65,253 +63,109 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverSetAttribute extends ObserverWizard {
 
-	private String lastChangedAttributeID;
+	private WritableList input;
 
-	private class WizardSetAttributePage extends AbstractObserverWizardPage {
-
-		private WritableList input;
-
-		private TableViewer tableViewer;
-
-		protected WizardSetAttributePage(final String pageName) {
-			super(pageName, getObserver());
-		}
-
-		public void createControl(Composite parent) {
-
-			super.createControl(parent);
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			GridLayout gl = new GridLayout(1, true);
-			gl.horizontalSpacing = 0;
-			gl.verticalSpacing = 0;
-			gl.marginHeight = 0;
-			gl.marginWidth = 0;
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(gl);
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, SetAttributeObject.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-
-			tableViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						@Override
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							Object firstElement = selection.getFirstElement();
-							if (firstElement instanceof ObserverEvalObject) {
-
-								ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement;
-								BControl control = getBControl();
-
-								if (lastChangedAttributeID != null)
-									control.restoreDefaultValue(lastChangedAttributeID);
-
-								SetAttributeObject setAttributeObj = (SetAttributeObject) observerEvalObject;
-
-								if (!setAttributeObj.isExpressionMode()) {
-
-									String attribute = setAttributeObj
-											.getAttribute();
-									Object value = setAttributeObj.getValue();
-									control.setAttributeValue(attribute, value,
-											true, false);
-
-									lastChangedAttributeID = attribute;
-
-								}
-
-							}
-						}
-
-					});
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(300);
-
-			PredicateEditingSupport pEditingSupport = new PredicateEditingSupport(
-					tableViewer, dbc, "eval", getBControl().getVisualization(),
-					getShell());
-			column.setEditingSupport(pEditingSupport);
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Attribute");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new AttributeObserverValueEditing(
-					tableViewer));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Value");
-			column.getColumn().setWidth(175);
-			column.setEditingSupport(new AttributeExpressionEdittingSupport(
-					tableViewer, getBControl()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Expression?");
-			column.getColumn().setWidth(100);
-			column.setEditingSupport(new IsExpressionModeEditingSupport(
-					tableViewer, getBControl()));
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "attribute", "value",
-									"isExpressionMode" })));
-			input = new WritableList(
-					((SetAttribute) getObserver()).getSetAttributeObjects(),
-					SetAttributeObject.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						MessageDialog.openInformation(getShell(),
-								"Please select an entry.",
-								"Please select an entry.");
-						return;
-					}
-					SetAttributeObject toggleObj = (SetAttributeObject) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(toggleObj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					SetAttributeObject toggleObj = new SetAttributeObject(
-							BParser.PREDICATE_PREFIX, "");
-					input.add(toggleObj);
-					tableViewer
-							.setSelection(new StructuredSelection(toggleObj));
-				}
-			});
-
-			setControl(container);
-
-		}
-
-		private class AttributeObserverValueEditing extends EditingSupport {
-
-			private ComboBoxViewerCellEditor cellEditor = null;
-
-			public AttributeObserverValueEditing(TableViewer cv) {
-				super(cv);
-			}
-
-			@Override
-			protected boolean canEdit(Object element) {
-				return BMotionWizardUtil.isEditElement(getViewer());
-			}
-
-			@Override
-			protected Object getValue(Object element) {
-				return ((SetAttributeObject) element).getAttribute();
-			}
+	private TableViewer tableViewer;
 
+	@Override
+	public Control createWizardContent(Composite parent) {
+
+		parent.setLayout(new FillLayout());
+
+		DataBindingContext dbc = new DataBindingContext();
+
+		GridLayout gl = new GridLayout(1, true);
+		gl.horizontalSpacing = 0;
+		gl.verticalSpacing = 0;
+		gl.marginHeight = 0;
+		gl.marginWidth = 0;
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(gl);
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, SetAttributeObject.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(300);
+
+		PredicateEditingSupport pEditingSupport = new PredicateEditingSupport(
+				tableViewer, dbc, "eval", getBControl().getVisualization(),
+				getShell());
+		column.setEditingSupport(pEditingSupport);
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Attribute");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new AttributeObserverValueEditing(tableViewer));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Value");
+		column.getColumn().setWidth(175);
+		column.setEditingSupport(new AttributeExpressionEdittingSupport(
+				tableViewer, getBControl()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Expression?");
+		column.getColumn().setWidth(100);
+		column.setEditingSupport(new IsExpressionModeEditingSupport(
+				tableViewer, getBControl()));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+
+		tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables
+				.observeMaps(contentProvider.getKnownElements(), new String[] {
+						"eval", "attribute", "value", "isExpressionMode" })));
+		input = new WritableList(
+				((SetAttribute) getObserver()).getSetAttributeObjects(),
+				SetAttributeObject.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
+		btRemove.addSelectionListener(new SelectionAdapter() {
 			@Override
-			protected void setValue(Object element, Object value) {
-				if (value != null) {
-					SetAttributeObject obj = (SetAttributeObject) element;
-					obj.setAttribute(value.toString());
-					obj.setIsExpressionMode(false);
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					MessageDialog.openInformation(getShell(),
+							"Please select an entry.",
+							"Please select an entry.");
+					return;
 				}
+				SetAttributeObject toggleObj = (SetAttributeObject) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(toggleObj);
 			}
+		});
 
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
 			@Override
-			protected CellEditor getCellEditor(Object element) {
-				if (cellEditor == null) {
-
-					cellEditor = new ComboBoxViewerCellEditor(
-							(Composite) tableViewer.getControl(), SWT.READ_ONLY);
-					cellEditor
-							.setContentProvider(new ObservableListContentProvider());
-					cellEditor.setLabelProvider(new LabelProvider() {
-						public String getText(Object element) {
-							return getBControl().getAttributes()
-									.get(element.toString()).getName();
-						}
-					});
-					cellEditor.setInput(new ComputedList() {
-						@Override
-						protected List<String> calculate() {
-							ArrayList<String> atrList = new ArrayList<String>();
-							for (AbstractAttribute atr : getBControl()
-									.getAttributes().values()) {
-								atrList.add(atr.getID());
-							}
-							return atrList;
-						}
-					});
-
-					((CCombo) cellEditor.getControl())
-							.addFocusListener(new FocusListener() {
-
-								String oldValue;
-
-								public void focusGained(FocusEvent e) {
-									oldValue = ((CCombo) cellEditor
-											.getControl()).getText();
-
-								}
-
-								public void focusLost(FocusEvent e) {
-
-									if (!oldValue.equals(((CCombo) cellEditor
-											.getControl()).getText())) {
-
-										IStructuredSelection selection = (IStructuredSelection) getViewer()
-												.getSelection();
-
-										SetAttributeObject p = (SetAttributeObject) selection
-												.getFirstElement();
-
-										AbstractAttribute atr = getBControl()
-												.getAttributes().get(
-														p.getAttribute());
-
-										p.setValue(atr.getValue());
-										tableViewer.refresh();
-
-									}
-								}
-
-							});
-
-				}
-				return cellEditor;
+			public void widgetSelected(SelectionEvent e) {
+				SetAttributeObject toggleObj = new SetAttributeObject("");
+				input.add(toggleObj);
+				tableViewer.setSelection(new StructuredSelection(toggleObj));
 			}
+		});
 
-		}
+		return container;
 
 	}
 
-	public WizardObserverSetAttribute(BControl control, Observer observer) {
-		super(control, observer);
-		addPage(new WizardSetAttributePage("WizardSetAttributePage"));
+	public WizardObserverSetAttribute(Shell shell, BControl control,
+			Observer observer) {
+		super(shell, control, observer);
 	}
 
 	@Override
@@ -319,30 +173,31 @@ public class WizardObserverSetAttribute extends ObserverWizard {
 		return new Point(800, 500);
 	}
 
-	@Override
-	protected Boolean prepareToFinish() {
-		getBControl().restoreDefaultValue(lastChangedAttributeID);
-		if (((SetAttribute) getObserver()).getSetAttributeObjects().size() == 0) {
-			setObserverDelete(true);
-		} else {
-			for (SetAttributeObject obj : ((SetAttribute) getObserver())
-					.getSetAttributeObjects()) {
-				if (obj.getAttribute() == null) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The attribute field must not be empty.");
-					return false;
-				}
-			}
-		}
-		return true;
-	}
-
-	@Override
-	public boolean performCancel() {
-		getBControl().restoreDefaultValue(lastChangedAttributeID);
-		return super.performCancel();
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	// // getBControl().restoreDefaultValue(lastChangedAttributeID);
+	// if (((SetAttribute) getObserver()).getSetAttributeObjects().size() == 0)
+	// {
+	// setObserverDelete(true);
+	// } else {
+	// for (SetAttributeObject obj : ((SetAttribute) getObserver())
+	// .getSetAttributeObjects()) {
+	// if (obj.getAttribute() == null) {
+	// MessageDialog
+	// .openError(getShell(), "Please check your entries",
+	// "Please check your entries. The attribute field must not be empty.");
+	// return false;
+	// }
+	// }
+	// }
+	// return true;
+	// }
+
+	// @Override
+	// public boolean performCancel() {
+	// // getBControl().restoreDefaultValue(lastChangedAttributeID);
+	// return super.performCancel();
+	// }
 
 	private class ObserverLabelProvider extends ObservableMapLabelProvider
 			implements ITableLabelProvider, ITableColorProvider,
@@ -414,11 +269,102 @@ public class WizardObserverSetAttribute extends ObserverWizard {
 		}
 
 		public Font getFont(final Object element, final int column) {
-			// return JFaceResources.getFontRegistry().get(
-			// BMotionStudioConstants.RODIN_FONT_KEY);
 			return null;
 		}
 
 	}
 
+	private class AttributeObserverValueEditing extends EditingSupport {
+
+		private ComboBoxViewerCellEditor cellEditor = null;
+
+		public AttributeObserverValueEditing(TableViewer cv) {
+			super(cv);
+		}
+
+		@Override
+		protected boolean canEdit(Object element) {
+			return BMotionWizardUtil.isEditElement(getViewer());
+		}
+
+		@Override
+		protected Object getValue(Object element) {
+			return ((SetAttributeObject) element).getAttribute();
+		}
+
+		@Override
+		protected void setValue(Object element, Object value) {
+			if (value != null) {
+				SetAttributeObject obj = (SetAttributeObject) element;
+				obj.setAttribute(value.toString());
+				obj.setIsExpressionMode(false);
+			}
+		}
+
+		@Override
+		protected CellEditor getCellEditor(Object element) {
+			if (cellEditor == null) {
+
+				cellEditor = new ComboBoxViewerCellEditor(
+						(Composite) tableViewer.getControl(), SWT.READ_ONLY);
+				cellEditor
+						.setContentProvider(new ObservableListContentProvider());
+				cellEditor.setLabelProvider(new LabelProvider() {
+					public String getText(Object element) {
+						return getBControl().getAttributes()
+								.get(element.toString()).getName();
+					}
+				});
+				cellEditor.setInput(new ComputedList() {
+					@Override
+					protected List<String> calculate() {
+						ArrayList<String> atrList = new ArrayList<String>();
+						for (AbstractAttribute atr : getBControl()
+								.getAttributes().values()) {
+							atrList.add(atr.getID());
+						}
+						return atrList;
+					}
+				});
+
+				((CCombo) cellEditor.getControl())
+						.addFocusListener(new FocusListener() {
+
+							String oldValue;
+
+							public void focusGained(FocusEvent e) {
+								oldValue = ((CCombo) cellEditor.getControl())
+										.getText();
+
+							}
+
+							public void focusLost(FocusEvent e) {
+
+								if (!oldValue.equals(((CCombo) cellEditor
+										.getControl()).getText())) {
+
+									IStructuredSelection selection = (IStructuredSelection) getViewer()
+											.getSelection();
+
+									SetAttributeObject p = (SetAttributeObject) selection
+											.getFirstElement();
+
+									AbstractAttribute atr = getBControl()
+											.getAttributes().get(
+													p.getAttribute());
+
+									p.setValue(atr.getValue());
+									tableViewer.refresh();
+
+								}
+							}
+
+						});
+
+			}
+			return cellEditor;
+		}
+
+	}
+
 }
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 1f9a6b76e83c627a1de6fc7c4efc9159d53e4d58..5d63d4cfcd16ff5c44fe86dc0ee1023ad3d90881 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
@@ -9,16 +9,18 @@ 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.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -28,113 +30,102 @@ import de.bmotionstudio.gef.editor.observer.SimpleValueDisplay;
 
 public class WizardObserverSimpleValueDisplay extends ObserverWizard {
 
-	private class ObserverSimpleValueDisplayPage extends
-			AbstractObserverWizardPage {
+	private Text txtReplacementString;
+	private Text txtExpression;
+	private Text txtPredicate;
 
-		private Text txtReplacementString;
-		private Text txtExpression;
-		private Text txtPredicate;
-
-		public Text getTxtExpression() {
-			return txtExpression;
-		}
-
-		protected ObserverSimpleValueDisplayPage(final String pageName) {
-			super(pageName, getObserver());
-		}
-
-		public void createControl(final Composite parent) {
-
-			super.createControl(parent);
+	@Override
+	public Control createWizardContent(Composite parent) {
 
-			final DataBindingContext dbc = new DataBindingContext();
+		parent.setLayout(new FillLayout());
 
-			Composite container = new Composite(parent, SWT.NONE);
+		final DataBindingContext dbc = new DataBindingContext();
 
-			container.setLayoutData(new GridData(GridData.FILL_BOTH));
-			container.setLayout(new GridLayout(2, false));
+		Composite container = new Composite(parent, SWT.NONE);
 
-			Label lb = new Label(container, SWT.NONE);
-			lb.setText("Predicate:");
+		container.setLayout(new GridLayout(2, false));
 
-			txtPredicate = new Text(container, SWT.BORDER);
-			txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
-					"Arial", 10, SWT.NONE)));
+		GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
+		gd.widthHint = 120;
+		
+		Label lb = new Label(container, SWT.NONE);
+		lb.setText("Predicate:");
+		lb.setLayoutData(gd);
 
-			lb = new Label(container, SWT.NONE);
-			lb.setText("Expression:");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		txtPredicate = new Text(container, SWT.BORDER);
+		txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
+				"Arial", 10, SWT.NONE)));
 
-			txtExpression = new Text(container, SWT.BORDER | SWT.MULTI
-					| SWT.WRAP);
-			txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
-			// txtExpression.setFont(JFaceResources.getFontRegistry().get(
-			// BMotionStudioConstants.RODIN_FONT_KEY));
+		lb = new Label(container, SWT.NONE);
+		lb.setText("Expression:");
+		lb.setLayoutData(gd);
 
-			lb = new Label(container, SWT.NONE);
-			lb.setText("Replacement String:");
+		txtExpression = new Text(container, SWT.BORDER | SWT.MULTI | SWT.WRAP);
+		txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
+		// txtExpression.setFont(JFaceResources.getFontRegistry().get(
+		// BMotionStudioConstants.RODIN_FONT_KEY));
 
-			txtReplacementString = new Text(container, SWT.BORDER);
-			txtReplacementString.setLayoutData(new GridData(
-					GridData.FILL_HORIZONTAL));
-			txtReplacementString.setFont(new Font(Display.getDefault(),
-					new FontData("Arial", 10, SWT.NONE)));
+		lb = new Label(container, SWT.NONE);
+		lb.setText("Replacement String:");
+		lb.setLayoutData(gd);
 
-			initBindings(dbc);
+		txtReplacementString = new Text(container, SWT.BORDER);
+		txtReplacementString.setLayoutData(new GridData(
+				GridData.FILL_HORIZONTAL));
+		txtReplacementString.setFont(new Font(Display.getDefault(),
+				new FontData("Arial", 10, SWT.NONE)));
 
-			setControl(container);
+		initBindings(dbc);
 
-		}
+		return container;
 
-		private void initBindings(DataBindingContext dbc) {
+	}
 
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(SimpleValueDisplay) getObserver(), "predicate"));
+	private void initBindings(DataBindingContext dbc) {
 
-			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(SimpleValueDisplay) getObserver(), "eval"));
+		dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
+				BeansObservables.observeValue(
+						(SimpleValueDisplay) getObserver(), "predicate"));
 
-			dbc.bindValue(SWTObservables.observeText(txtReplacementString,
-					SWT.Modify), BeansObservables.observeValue(
-					(SimpleValueDisplay) getObserver(), "replacementString"));
+		dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify),
+				BeansObservables.observeValue(
+						(SimpleValueDisplay) getObserver(), "eval"));
 
-		}
+		dbc.bindValue(SWTObservables.observeText(txtReplacementString,
+				SWT.Modify), BeansObservables.observeValue(
+				(SimpleValueDisplay) getObserver(), "replacementString"));
 
 	}
 
-	public WizardObserverSimpleValueDisplay(BControl bcontrol,
+	public WizardObserverSimpleValueDisplay(Shell shell, BControl bcontrol,
 			Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverSimpleValueDisplayPage(
-				"ObserverSimpleValueDisplayPage"));
+		super(shell, bcontrol, bobserver);
 	}
 
-	@Override
-	protected Boolean prepareToFinish() {
-
-		ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage) getPage("ObserverSimpleValueDisplayPage");
-
-		String errorStr = "";
-
-		if (page.getTxtExpression().getText().length() == 0)
-			errorStr += "Please enter an expression.\n";
-
-		if (page.getErrorMessage() != null)
-			errorStr += "Please check the syntax/parser error.\n";
-
-		if (errorStr.length() > 0) {
-			MessageDialog.openError(Display.getDefault().getActiveShell(),
-					"An Error occured", errorStr);
-			return false;
-		}
-
-		return true;
-
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	//
+	// ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage)
+	// getPage("ObserverSimpleValueDisplayPage");
+	//
+	// String errorStr = "";
+	//
+	// if (page.getTxtExpression().getText().length() == 0)
+	// errorStr += "Please enter an expression.\n";
+	//
+	// if (page.getErrorMessage() != null)
+	// errorStr += "Please check the syntax/parser error.\n";
+	//
+	// if (errorStr.length() > 0) {
+	// MessageDialog.openError(Display.getDefault().getActiveShell(),
+	// "An Error occured", errorStr);
+	// return false;
+	// }
+	//
+	// return true;
+	//
+	// }
 
 	@Override
 	public Point getSize() {
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 14cd883a29fec574490b3605aa5ae24d8c572e5d..8e502a6ff3814e90041931476f69976650d4f74c 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
@@ -12,13 +12,10 @@ 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;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -29,23 +26,22 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 
-import de.be4.classicalb.core.parser.BParser;
-import de.bmotionstudio.gef.editor.AttributeConstants;
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 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;
@@ -53,193 +49,96 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverSwitchCoordinates extends ObserverWizard {
 
-	private class ObserverToggleCoordinatesPage extends
-			AbstractObserverWizardPage {
-
-		private TableViewer tableViewer;
-
-		protected ObserverToggleCoordinatesPage(final String pageName) {
-			super(pageName, getObserver());
-		}
-
-		public void createControl(Composite parent) {
-
-			super.createControl(parent);
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, ToggleObjectCoordinates.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-
-			tableViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						@Override
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							Object firstElement = selection.getFirstElement();
-							if (firstElement instanceof ObserverEvalObject) {
-								ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement;
-								if (!observerEvalObject.isExpressionMode()) {
-									BControl control = getBControl();
-									ToggleObjectCoordinates toggleObjectCoordinates = (ToggleObjectCoordinates) observerEvalObject;
-									String attributeX = AttributeConstants.ATTRIBUTE_X;
-									String attributeY = AttributeConstants.ATTRIBUTE_Y;
-									String x = toggleObjectCoordinates.getX();
-									String y = toggleObjectCoordinates.getY();
-									control.setAttributeValue(attributeX, x,
-											true, false);
-									control.setAttributeValue(attributeY, y,
-											true, false);
-								}
-							}
-						}
-
-					});
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(200);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "eval", getBControl().getVisualization(), getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("X");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-					"x"));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Y");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-					"y"));
-
-			// column = new TableViewerColumn(tableViewer, SWT.NONE);
-			// column.getColumn().setText("Animate?");
-			// column.getColumn().setWidth(75);
-			// column.setEditingSupport(new EditingSupport(tableViewer) {
-			//
-			// private CellEditor cellEditor = new CheckboxCellEditor(
-			// (Composite) tableViewer.getControl());
-			//
-			// @Override
-			// protected void setValue(Object element, Object value) {
-			// ((ToggleObjectCoordinates) element).setAnimate(Boolean
-			// .valueOf(String.valueOf(value)));
-			// }
-			//
-			// @Override
-			// protected Object getValue(Object element) {
-			// Boolean b = ((ToggleObjectCoordinates) element)
-			// .getAnimate();
-			// return b != null ? b : false;
-			// }
-			//
-			// @Override
-			// protected CellEditor getCellEditor(Object element) {
-			// return cellEditor;
-			// }
-			//
-			// @Override
-			// protected boolean canEdit(Object element) {
-			// return true;
-			// }
-			//
-			// });
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "x", "y" })));
-
-			final WritableList input = new WritableList(
-					((SwitchCoordinates) getObserver()).getToggleObjects(),
-					ToggleObjectCoordinates.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(toggleObj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates(
-							BParser.PREDICATE_PREFIX, "", String
-									.valueOf(getBControl().getLayout().x),
-							String.valueOf(getBControl().getLayout().y), "");
-					input.add(toggleObj);
-					tableViewer
-							.setSelection(new StructuredSelection(toggleObj));
-				}
-			});
-
-			setControl(container);
-
-		}
-	}
-
-	public WizardObserverSwitchCoordinates(final BControl bcontrol,
-			final Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverToggleCoordinatesPage(
-				"ObserverToggleCoordinatesPage"));
-	}
+	private TableViewer tableViewer;
 
 	@Override
-	protected Boolean prepareToFinish() {
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_X);
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y);
-		if (((SwitchCoordinates) getObserver()).getToggleObjects().size() == 0) {
-			setObserverDelete(true);
-		} else {
-			for (ToggleObjectCoordinates obj : ((SwitchCoordinates) getObserver())
-					.getToggleObjects()) {
-				if (obj.getX().isEmpty() || obj.getY().isEmpty()) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The x and y fields must not be empty.");
-					return false;
+	public Control createWizardContent(Composite parent) {
+
+		parent.setLayout(new FillLayout());
+
+		DataBindingContext dbc = new DataBindingContext();
+
+		GridLayout gl = new GridLayout(1, true);
+		gl.horizontalSpacing = 0;
+		gl.verticalSpacing = 0;
+		gl.marginHeight = 0;
+		gl.marginWidth = 0;
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(gl);
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, ToggleObjectCoordinates.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(200);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"eval", getBControl().getVisualization(), getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("X");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "x"));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Y");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y"));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+		tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables
+				.observeMaps(contentProvider.getKnownElements(), new String[] {
+						"eval", "x", "y" })));
+
+		final WritableList input = new WritableList(
+				((SwitchCoordinates) getObserver()).getToggleObjects(),
+				ToggleObjectCoordinates.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
 				}
+				ToggleObjectCoordinates toggleObj = (ToggleObjectCoordinates) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(toggleObj);
 			}
-		}
-		return true;
+		});
+
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates(
+						"", String.valueOf(getBControl().getLayout().x), String
+								.valueOf(getBControl().getLayout().y), "");
+				input.add(toggleObj);
+				tableViewer.setSelection(new StructuredSelection(toggleObj));
+			}
+		});
+
+		return container;
 	}
 
-	@Override
-	public boolean performCancel() {
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_X);
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y);
-		return super.performCancel();
+
+	public WizardObserverSwitchCoordinates(Shell shell, BControl bcontrol,
+			Observer bobserver) {
+		super(shell, bcontrol, bobserver);
 	}
 
 	@Override
@@ -258,9 +157,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard {
 		private final Color errorColor = Display.getDefault().getSystemColor(
 				SWT.COLOR_INFO_BACKGROUND);
 
-		// final Font bold = JFaceResources.getFontRegistry().getBold(
-		// JFaceResources.BANNER_FONT);
-
 		@Override
 		public String getColumnText(Object element, int columnIndex) {
 			if (columnIndex == 3) {
@@ -271,11 +167,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard {
 
 		@Override
 		public Image getColumnImage(Object element, int columnIndex) {
-			// if (columnIndex == 3) {
-			// return CheckboxCellEditorHelper
-			// .getCellEditorImage(((ToggleObjectCoordinates) element)
-			// .getAnimate());
-			// }
 			return null;
 		}
 
@@ -291,8 +182,6 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard {
 		}
 
 		public Font getFont(final Object element, final int column) {
-			// return JFaceResources.getFontRegistry().get(
-			// BMotionStudioConstants.RODIN_FONT_KEY);
 			return null;
 		}
 
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 40c1dd154d70fe6e4f9a2bfd24ecfa17a58b5c58..ff5d09ea575689dc6a26eaafb92de38cf6e69130 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
@@ -12,13 +12,10 @@ 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;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -29,16 +26,17 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 
-import de.be4.classicalb.core.parser.BParser;
 import de.bmotionstudio.gef.editor.AttributeConstants;
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.edit.AttributeExpressionEdittingSupport;
@@ -46,7 +44,6 @@ 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;
@@ -55,175 +52,119 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverSwitchImage extends ObserverWizard {
 
-	private class ObserverSwitchImagePage extends AbstractObserverWizardPage {
+	private TableViewer tableViewer;
 
-		private TableViewer tableViewer;
+	@Override
+	public Control createWizardContent(Composite parent) {
 
-		protected ObserverSwitchImagePage(final String pageName) {
-			super(pageName, getObserver());
-		}
+		parent.setLayout(new FillLayout());
 
-		public void createControl(final Composite parent) {
-
-			super.createControl(parent);
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, ToggleObjectImage.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-			tableViewer
-					.addSelectionChangedListener(new ISelectionChangedListener() {
-
-						@Override
-						public void selectionChanged(SelectionChangedEvent event) {
-							IStructuredSelection selection = (IStructuredSelection) event
-									.getSelection();
-							Object firstElement = selection.getFirstElement();
-							if (firstElement instanceof ObserverEvalObject) {
-								ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement;
-								if (!observerEvalObject.isExpressionMode()) {
-									BControl control = getBControl();
-									ToggleObjectImage toggleObjImage = (ToggleObjectImage) observerEvalObject;
-									String attribute = AttributeConstants.ATTRIBUTE_IMAGE;
-									String image = toggleObjImage.getImage();
-									control.setAttributeValue(attribute, image,
-											true, false);
-								}
-							}
-						}
-
-					});
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(300);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "eval", getBControl().getVisualization(), getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Image");
-			column.getColumn().setWidth(180);
-			column.setEditingSupport(new AttributeExpressionEdittingSupport(
-					tableViewer, getBControl(),
-					AttributeConstants.ATTRIBUTE_IMAGE) {
-
-				@Override
-				protected Object getValue(final Object element) {
-					ToggleObjectImage evalObject = (ToggleObjectImage) element;
-					return evalObject.getImage();
-				}
+		DataBindingContext dbc = new DataBindingContext();
 
-				@Override
-				protected void setValue(final Object element, final Object value) {
-					if (value == null)
-						return;
-					((ToggleObjectImage) element).setImage(value.toString());
-				}
+		GridLayout gl = new GridLayout(1, true);
+		gl.horizontalSpacing = 0;
+		gl.verticalSpacing = 0;
+		gl.marginHeight = 0;
+		gl.marginWidth = 0;
 
-			});
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(gl);
 
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Expression?");
-			column.getColumn().setWidth(100);
-			column.setEditingSupport(new IsExpressionModeEditingSupport(
-					tableViewer, getBControl()) {
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, ToggleObjectImage.class, getName());
 
-				@Override
-				protected void setValue(final Object element, final Object value) {
-					Boolean bol = Boolean.valueOf(String.valueOf(value));
-					ToggleObjectImage obj = (ToggleObjectImage) element;
-					obj.setIsExpressionMode(bol);
-				}
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(300);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"eval", getBControl().getVisualization(), getShell()));
 
-			});
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-
-			tableViewer.setLabelProvider(new ObserverLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"eval", "image", "isExpressionMode" })));
-			final WritableList input = new WritableList(
-					((SwitchImage) getObserver()).getToggleObjects(),
-					ToggleObjectImage.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(final SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					ToggleObjectImage toggleObj = (ToggleObjectImage) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(toggleObj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(final SelectionEvent e) {
-					ToggleObjectImage toggleObj = new ToggleObjectImage(
-							BParser.PREDICATE_PREFIX, "", "");
-					input.add(toggleObj);
-					tableViewer
-							.setSelection(new StructuredSelection(toggleObj));
-				}
-			});
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Image");
+		column.getColumn().setWidth(180);
+		column.setEditingSupport(new AttributeExpressionEdittingSupport(
+				tableViewer, getBControl(), AttributeConstants.ATTRIBUTE_IMAGE) {
 
-			setControl(container);
+			@Override
+			protected Object getValue(final Object element) {
+				ToggleObjectImage evalObject = (ToggleObjectImage) element;
+				return evalObject.getImage();
+			}
 
-		}
+			@Override
+			protected void setValue(final Object element, final Object value) {
+				if (value == null)
+					return;
+				((ToggleObjectImage) element).setImage(value.toString());
+			}
 
-	}
+		});
 
-	public WizardObserverSwitchImage(final BControl bcontrol,
-			final Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverSwitchImagePage("ObserverToggleImagePage"));
-	}
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Expression?");
+		column.getColumn().setWidth(100);
+		column.setEditingSupport(new IsExpressionModeEditingSupport(
+				tableViewer, getBControl()) {
 
-	@Override
-	protected Boolean prepareToFinish() {
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE);
-		if (((SwitchImage) getObserver()).getToggleObjects().size() == 0) {
-			setObserverDelete(true);
-		} else {
-			for (ToggleObjectImage obj : ((SwitchImage) getObserver())
-					.getToggleObjects()) {
-				if (obj.getImage().isEmpty()) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The image field must not be empty.");
-					return false;
+			@Override
+			protected void setValue(final Object element, final Object value) {
+				Boolean bol = Boolean.valueOf(String.valueOf(value));
+				ToggleObjectImage obj = (ToggleObjectImage) element;
+				obj.setIsExpressionMode(bol);
+			}
+
+		});
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+
+		tableViewer.setLabelProvider(new ObserverLabelProvider(BeansObservables
+				.observeMaps(contentProvider.getKnownElements(), new String[] {
+						"eval", "image", "isExpressionMode" })));
+		final WritableList input = new WritableList(
+				((SwitchImage) getObserver()).getToggleObjects(),
+				ToggleObjectImage.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE_EDIT));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(final SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
 				}
+				ToggleObjectImage toggleObj = (ToggleObjectImage) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(toggleObj);
 			}
-		}
-		return true;
+		});
+
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(final SelectionEvent e) {
+				ToggleObjectImage toggleObj = new ToggleObjectImage("", "");
+				input.add(toggleObj);
+				tableViewer.setSelection(new StructuredSelection(toggleObj));
+			}
+		});
+
+		return container;
 	}
 
-	@Override
-	public boolean performCancel() {
-		getBControl().restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE);
-		return super.performCancel();
+	public WizardObserverSwitchImage(Shell shell, BControl bcontrol,
+			Observer bobserver) {
+		super(shell, bcontrol, bobserver);
 	}
 
 	@Override
@@ -277,8 +218,6 @@ public class WizardObserverSwitchImage extends ObserverWizard {
 		}
 
 		public Font getFont(final Object element, final int column) {
-			// return JFaceResources.getFontRegistry().get(
-			// BMotionStudioConstants.RODIN_FONT_KEY);
 			return null;
 		}
 
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 e816e1d3ee2c517bca6e12dd054b201e29cea5e2..d38110cd613c43aef7a7c2b12cea0e977225780f 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
@@ -11,8 +11,6 @@ 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.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
@@ -24,10 +22,12 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 import org.eventb.core.ast.PowerSetType;
 
@@ -40,167 +40,151 @@ import de.bmotionstudio.gef.editor.observer.TableObserver;
 
 public class WizardTableObserver extends ObserverWizard {
 
-	private class TableObserverPage extends WizardPage {
+	private Text txtExpression;
+	private Text txtPredicate;
+	private Button cbOverrideCells;
+	private Button cbKeepHeader;
 
-		private Text txtExpression;
-		private Text txtPredicate;
-		private Button cbOverrideCells;
-		private Button cbKeepHeader;
+	private void initBindings(DataBindingContext dbc) {
 
-		public Text getTxtExpression() {
-			return txtExpression;
-		}
-
-		protected TableObserverPage(final String pageName) {
-			super(pageName);
-		}
+		dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
+				BeansObservables.observeValue((TableObserver) getObserver(),
+						"predicate"));
 
-		public void createControl(final Composite parent) {
+		dbc.bindValue(SWTObservables.observeText(txtExpression, SWT.Modify),
+				BeansObservables.observeValue((TableObserver) getObserver(),
+						"expression"));
 
-			final DataBindingContext dbc = new DataBindingContext();
+		dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells),
+				BeansObservables.observeValue((TableObserver) getObserver(),
+						"overrideCells"));
 
-			parent.setLayout(new GridLayout(1, true));
+		dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader),
+				BeansObservables.observeValue((TableObserver) getObserver(),
+						"keepHeader"));
 
-			Group group = new Group(parent, SWT.None);
-			group.setText("General settings");
-			RowLayout rowLayout = new RowLayout();
-			rowLayout.marginLeft = 10;
-			rowLayout.marginTop = 10;
-			rowLayout.marginBottom = 10;
-			group.setLayout(rowLayout);
-			group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+	}
 
-			cbOverrideCells = new Button(group, SWT.CHECK);
-			cbOverrideCells.setText("Override cells");
+	@Override
+	public Control createWizardContent(Composite parent) {
+		final DataBindingContext dbc = new DataBindingContext();
 
-			cbKeepHeader = new Button(group, SWT.CHECK);
-			cbKeepHeader.setText("Keep header");
+		parent.setLayout(new GridLayout(1, true));
 
-			Group container = new Group(parent, SWT.None);
-			container.setText("Formal model");
-			container.setLayout(new GridLayout(2, false));
-			container.setLayoutData(new GridData(GridData.FILL_BOTH));
+		Group group = new Group(parent, SWT.None);
+		group.setText("General settings");
+		RowLayout rowLayout = new RowLayout();
+		rowLayout.marginLeft = 10;
+		rowLayout.marginTop = 10;
+		rowLayout.marginBottom = 10;
+		group.setLayout(rowLayout);
+		group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
-			Composite conLeft = new Composite(container, SWT.NONE);
-			conLeft.setLayoutData(new GridData(GridData.FILL_BOTH));
-			conLeft.setLayout(new GridLayout(2, false));
+		cbOverrideCells = new Button(group, SWT.CHECK);
+		cbOverrideCells.setText("Override cells");
 
-			Label lb = new Label(conLeft, SWT.NONE);
-			lb.setText("Predicate:");
+		cbKeepHeader = new Button(group, SWT.CHECK);
+		cbKeepHeader.setText("Keep header");
 
-			txtPredicate = new Text(conLeft, SWT.BORDER);
-			txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
-					"Arial", 10, SWT.NONE)));
+		Group container = new Group(parent, SWT.None);
+		container.setText("Formal model");
+		container.setLayout(new GridLayout(2, false));
+		container.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-			lb = new Label(conLeft, SWT.NONE);
-			lb.setText("Expression:");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		Composite conLeft = new Composite(container, SWT.NONE);
+		conLeft.setLayoutData(new GridData(GridData.FILL_BOTH));
+		conLeft.setLayout(new GridLayout(2, false));
 
-			txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI
-					| SWT.WRAP);
-			txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
+		Label lb = new Label(conLeft, SWT.NONE);
+		lb.setText("Predicate:");
 
-			Composite conRight = new Composite(container, SWT.NONE);
+		txtPredicate = new Text(conLeft, SWT.BORDER);
+		txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		txtPredicate.setFont(new Font(Display.getDefault(), new FontData(
+				"Arial", 10, SWT.NONE)));
 
-			GridData gData = new GridData(GridData.FILL_VERTICAL);
-			gData.widthHint = 125;
+		lb = new Label(conLeft, SWT.NONE);
+		lb.setText("Expression:");
+		lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
-			conRight.setLayoutData(gData);
-			conRight.setLayout(new GridLayout(1, false));
+		txtExpression = new Text(conLeft, SWT.BORDER | SWT.MULTI | SWT.WRAP);
+		txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-			lb = new Label(conRight, SWT.WRAP);
-			lb.setText("Power sets:");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		Composite conRight = new Composite(container, SWT.NONE);
 
-			ArrayList<String> relationList = new ArrayList<String>();
-			
-			java.util.List<MachineContentObject> constants = EventBHelper
-					.getConstants(getBControl().getVisualization());
-			for (MachineContentObject mobj : constants) {
-				if (mobj.getType() instanceof PowerSetType) {
-					relationList.add(mobj.getLabel());
-				}
-			}
+		GridData gData = new GridData(GridData.FILL_VERTICAL);
+		gData.widthHint = 125;
 
-			java.util.List<MachineContentObject> variables = EventBHelper
-					.getVariables(getBControl().getVisualization());
-			for (MachineContentObject mobj : variables) {
-				if (mobj.getType() instanceof PowerSetType) {
-					relationList.add(mobj.getLabel());
-				}
-			}
+		conRight.setLayoutData(gData);
+		conRight.setLayout(new GridLayout(1, false));
 
-			final List list = new List(conRight, SWT.SINGLE | SWT.BORDER
-					| SWT.V_SCROLL);
-			list.setLayoutData(new GridData(GridData.FILL_BOTH));
-			list.setItems(relationList.toArray(new String[relationList.size()]));
+		lb = new Label(conRight, SWT.WRAP);
+		lb.setText("Power sets:");
+		lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
-			list.addMouseListener(new MouseAdapter() {
-				public void mouseDoubleClick(MouseEvent e) {
-					String[] selection = list.getSelection();
-					if (selection.length > 0)
-						txtExpression.setText(txtExpression.getText() + " "
-								+ selection[0]);
-				}
-			});
-			initBindings(dbc);
-
-			setControl(conLeft);
+		ArrayList<String> relationList = new ArrayList<String>();
 
+		java.util.List<MachineContentObject> constants = EventBHelper
+				.getConstants(getBControl().getVisualization());
+		for (MachineContentObject mobj : constants) {
+			if (mobj.getType() instanceof PowerSetType) {
+				relationList.add(mobj.getLabel());
+			}
 		}
 
-		private void initBindings(DataBindingContext dbc) {
-
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "predicate"));
-
-			dbc.bindValue(
-					SWTObservables.observeText(txtExpression, SWT.Modify),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "expression"));
-
-			dbc.bindValue(SWTObservables.observeSelection(cbOverrideCells),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "overrideCells"));
-
-			dbc.bindValue(SWTObservables.observeSelection(cbKeepHeader),
-					BeansObservables.observeValue(
-							(TableObserver) getObserver(), "keepHeader"));
-
+		java.util.List<MachineContentObject> variables = EventBHelper
+				.getVariables(getBControl().getVisualization());
+		for (MachineContentObject mobj : variables) {
+			if (mobj.getType() instanceof PowerSetType) {
+				relationList.add(mobj.getLabel());
+			}
 		}
 
+		final List list = new List(conRight, SWT.SINGLE | SWT.BORDER
+				| SWT.V_SCROLL);
+		list.setLayoutData(new GridData(GridData.FILL_BOTH));
+		list.setItems(relationList.toArray(new String[relationList.size()]));
+
+		list.addMouseListener(new MouseAdapter() {
+			public void mouseDoubleClick(MouseEvent e) {
+				String[] selection = list.getSelection();
+				if (selection.length > 0)
+					txtExpression.setText(txtExpression.getText() + " "
+							+ selection[0]);
+			}
+		});
+		initBindings(dbc);
+		return conLeft;
 	}
 
-	public WizardTableObserver(BControl bcontrol,
+	public WizardTableObserver(Shell shell, BControl bcontrol,
 			Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new TableObserverPage("TableObserverPage"));
+		super(shell, bcontrol, bobserver);
 	}
 
-	@Override
-	protected Boolean prepareToFinish() {
-
-		TableObserverPage page = (TableObserverPage) getPage("TableObserverPage");
-
-		String errorStr = "";
-
-		if (page.getTxtExpression().getText().length() == 0)
-			errorStr += "Please enter an expression.\n";
-
-		if (page.getErrorMessage() != null)
-			errorStr += "Please check the syntax/parser error.\n";
-
-		if (errorStr.length() > 0) {
-			MessageDialog.openError(Display.getDefault().getActiveShell(),
-					"An Error occured", errorStr);
-			return false;
-		}
-
-		return true;
-
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	//
+	// TableObserverPage page = (TableObserverPage)
+	// getPage("TableObserverPage");
+	//
+	// String errorStr = "";
+	//
+	// if (page.getTxtExpression().getText().length() == 0)
+	// errorStr += "Please enter an expression.\n";
+	//
+	// if (page.getErrorMessage() != null)
+	// errorStr += "Please check the syntax/parser error.\n";
+	//
+	// if (errorStr.length() > 0) {
+	// MessageDialog.openError(Display.getDefault().getActiveShell(),
+	// "An Error occured", errorStr);
+	// return false;
+	// }
+	//
+	// return true;
+	//
+	// }
 
 	@Override
 	public Point getSize() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java
index 6adcbe067053f1a1f209c8e7887019dec0cbef8f..21bc714c14173d8826e437f95eaa88c2dba7907e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java
@@ -25,7 +25,7 @@ import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.editpolicy.BMSDeletePolicy;
 import de.bmotionstudio.gef.editor.model.BConnection;
 import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 import de.bmotionstudio.gef.editor.model.Visualization;
 import de.bmotionstudio.gef.editor.observer.IObserverListener;
 import de.bmotionstudio.gef.editor.observer.Observer;
@@ -34,8 +34,10 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements
 		PropertyChangeListener, IObserverListener {
 
 	public void propertyChange(final PropertyChangeEvent evt) {
-		if (evt.getPropertyName().equals(BControl.PROPERTY_ADD)
-				|| evt.getPropertyName().equals(BControl.PROPERTY_REMOVE)) {
+		if (evt.getPropertyName().equals(
+				BControlPropertyConstants.PROPERTY_ADD_CHILD)
+				|| evt.getPropertyName().equals(
+						BControlPropertyConstants.PROPERTY_REMOVE_CHILD)) {
 			refreshChildren();
 		}
 		refreshVisuals();
@@ -74,8 +76,8 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements
 				}
 			}
 
-			if (!(getModel() instanceof Visualization))
-				toShowElements.add(new ObserverRootVirtualTreeNode(c));
+			// if (!(getModel() instanceof Visualization))
+			// toShowElements.add(new ObserverRootVirtualTreeNode(c));
 
 		}
 
@@ -87,7 +89,7 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements
 		if (!isActive()) {
 			super.activate();
 			((BControl) getModel()).addPropertyChangeListener(this);
-			((BControl) getModel()).addObserverListener(this);
+			// ((BControl) getModel()).addObserverListener(this);
 		}
 	}
 
@@ -95,7 +97,7 @@ public class BControlTreeEditPart extends BMSAbstractTreeEditPart implements
 		if (isActive()) {
 			super.deactivate();
 			((BControl) getModel()).removePropertyChangeListener(this);
-			((BControl) getModel()).removeObserverListener(this);
+			// ((BControl) getModel()).removeObserverListener(this);
 		}
 	}
 
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java
index 90de631cfaa0f809698aefb6057e6922cfab1b02..c53ed10fb104fc3d4f36b646b3c4129803650026 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSAbstractEditPart.java
@@ -43,6 +43,7 @@ import de.bmotionstudio.gef.editor.figure.AbstractBMotionFigure;
 import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand;
 import de.bmotionstudio.gef.editor.library.AttributeRequest;
 import de.bmotionstudio.gef.editor.model.BControl;
+import de.bmotionstudio.gef.editor.model.BControlPropertyConstants;
 import de.bmotionstudio.gef.editor.model.Visualization;
 import de.bmotionstudio.gef.editor.observer.IObserverListener;
 import de.bmotionstudio.gef.editor.observer.Observer;
@@ -73,8 +74,10 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart
 		}
 	};
 
-	private String[] layoutAttributes = { BControl.PROPERTY_LAYOUT,
-			BControl.PROPERTY_LOCATION, AttributeConstants.ATTRIBUTE_X,
+	private String[] layoutAttributes = {
+			BControlPropertyConstants.PROPERTY_LAYOUT,
+			BControlPropertyConstants.PROPERTY_LOCATION,
+			AttributeConstants.ATTRIBUTE_X,
 			AttributeConstants.ATTRIBUTE_Y, AttributeConstants.ATTRIBUTE_WIDTH,
 			AttributeConstants.ATTRIBUTE_HEIGHT };
 
@@ -82,7 +85,6 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart
 		if (!isActive()) {
 			super.activate();
 			((BControl) getModel()).addPropertyChangeListener(this);
-			((BControl) getModel()).addObserverListener(this);
 			if (getFigure() instanceof AbstractBMotionFigure) {
 				AbstractBMotionFigure af = (AbstractBMotionFigure) getFigure();
 				if (isRunning())
@@ -96,7 +98,6 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart
 		if (isActive()) {
 			super.deactivate();
 			((BControl) getModel()).removePropertyChangeListener(this);
-			((BControl) getModel()).removeObserverListener(this);
 			if (getFigure() instanceof AbstractBMotionFigure) {
 				AbstractBMotionFigure af = (AbstractBMotionFigure) getFigure();
 				if (isRunning())
@@ -187,13 +188,15 @@ public abstract class BMSAbstractEditPart extends AbstractGraphicalEditPart
 		final BControl model = (BControl) getModel();
 		String propName = evt.getPropertyName();
 
-		if (BControl.SOURCE_CONNECTIONS_PROP.equals(propName)) {
+		if (BControlPropertyConstants.SOURCE_CONNECTIONS.equals(propName)) {
 			refreshSourceConnections();
-		} else if (BControl.TARGET_CONNECTIONS_PROP.equals(propName)) {
+		} else if (BControlPropertyConstants.TARGET_CONNECTIONS
+				.equals(propName)) {
 			refreshTargetConnections();
 		}
-		if (propName.equals(BControl.PROPERTY_ADD)
-				|| propName.equals(BControl.PROPERTY_REMOVE)) {
+		if (propName.equals(BControlPropertyConstants.PROPERTY_ADD_CHILD)
+				|| propName
+						.equals(BControlPropertyConstants.PROPERTY_REMOVE_CHILD)) {
 			refreshChildren();
 		} else if (Arrays.asList(layoutAttributes).contains(propName)) {
 			// Layout attribute
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java
index 7744514400fbe32a45c0e522d0a84166d8804f3b..93336446419897fa1b4daac4bcc009057612fcdc 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BMSTreeEditPartFactory.java
@@ -14,9 +14,7 @@ import org.eclipse.gef.EditPartFactory;
 import de.bmotionstudio.gef.editor.BMotionEditorPlugin;
 import de.bmotionstudio.gef.editor.IBControlService;
 import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode;
 import de.bmotionstudio.gef.editor.model.Visualization;
-import de.bmotionstudio.gef.editor.observer.Observer;
 
 public class BMSTreeEditPartFactory implements EditPartFactory {
 
@@ -43,11 +41,12 @@ public class BMSTreeEditPartFactory implements EditPartFactory {
 				e.printStackTrace();
 			}
 
-		} else if (model instanceof Observer) {
-			part = new ObserverTreeEditPart();
-		} else if (model instanceof ObserverRootVirtualTreeNode) {
-			part = new ObserverRootTreeEditpart();
 		}
+		// else if (model instanceof Observer) {
+		// part = new ObserverTreeEditPart();
+		// } else if (model instanceof ObserverRootVirtualTreeNode) {
+		// part = new ObserverRootTreeEditpart();
+		// }
 
 		if (part != null)
 			part.setModel(model);
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java
deleted file mode 100644
index fd70efd9d5462ae343e734f5806cd167851ff937..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/ObserverRootTreeEditpart.java
+++ /dev/null
@@ -1,61 +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.part;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.EditorImageRegistry;
-import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.model.ObserverRootVirtualTreeNode;
-import de.bmotionstudio.gef.editor.observer.IObserverListener;
-import de.bmotionstudio.gef.editor.observer.Observer;
-
-public class ObserverRootTreeEditpart extends BMSAbstractTreeEditPart implements
-		IObserverListener {
-
-	public void activate() {
-		if (!isActive()) {
-			super.activate();
-			((ObserverRootVirtualTreeNode) getModel()).getControl()
-					.addObserverListener(this);
-		}
-	}
-
-	public void deactivate() {
-		if (isActive()) {
-			super.deactivate();
-			((ObserverRootVirtualTreeNode) getModel()).getControl()
-					.removeObserverListener(this);
-		}
-	}
-
-	@Override
-	protected List<Object> getModelChildren() {
-		ObserverRootVirtualTreeNode model = (ObserverRootVirtualTreeNode) getModel();
-		return new ArrayList<Object>(model.getObserver());
-	}
-
-	@Override
-	public void refreshVisuals() {
-		setWidgetText("Observer");
-		setWidgetImage(BMotionStudioImage
-				.getImage(EditorImageRegistry.IMG_ICON_OBSERVER));
-	}
-
-	@Override
-	public void addedObserver(BControl control, Observer observer) {
-		refreshChildren();
-	}
-
-	@Override
-	public void removedObserver(BControl control) {
-		refreshChildren();
-	}
-
-}
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java
index 20a3c505bb4d594fe051a8be9c882774a7147878..cd9d5cccc938b9bdf357c226192034526952e17a 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java
@@ -10,6 +10,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteScheduler;
@@ -97,8 +99,8 @@ public class ExecuteAnimationScript extends SchedulerEvent {
 	}
 
 	@Override
-	public SchedulerWizard getWizard(final BControl bcontrol) {
-		return new WizardExecuteScheduler(bcontrol, this);
+	public SchedulerWizard getWizard(Shell shell, BControl bcontrol) {
+		return new WizardExecuteScheduler(shell, bcontrol, this);
 	}
 
 	public ExecuteAnimationScript clone() throws CloneNotSupportedException {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java
index c9114041dd765a0295d88fd92576e5e6278d4090..c3b062ed9f92d47c3ee140de8d129528bca58b5d 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java
@@ -9,6 +9,8 @@ package de.bmotionstudio.gef.editor.scheduler;
 import java.util.List;
 import java.util.Random;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.model.BControl;
 import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteOperationByPredicate;
@@ -75,8 +77,8 @@ public class ExecuteOperationByPredicate extends SchedulerEvent {
 	}
 
 	@Override
-	public SchedulerWizard getWizard(BControl bcontrol) {
-		return new WizardExecuteOperationByPredicate(bcontrol, this);
+	public SchedulerWizard getWizard(Shell shell, BControl bcontrol) {
+		return new WizardExecuteOperationByPredicate(shell, bcontrol, this);
 	}
 
 	public void setPredicateOperation(PredicateOperation predicateOperation) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java
index eb2b2c88cd131ae74a22c58507c38db5f2564beb..e93d23d7c59c5af14d9afd7957c605f5acc20467 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java
@@ -2,6 +2,8 @@ package de.bmotionstudio.gef.editor.scheduler;
 
 import java.util.ArrayList;
 
+import org.eclipse.swt.widgets.Shell;
+
 import de.bmotionstudio.gef.editor.Animation;
 import de.bmotionstudio.gef.editor.BindingObject;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -27,7 +29,7 @@ public class ExecuteOperationByPredicateMulti extends SchedulerEvent {
 			String executePredicate = ((PredicateOperation) op)
 					.getExecutePredicate();
 
-			if (executePredicate.length() > 0) {
+			if (executePredicate != null && executePredicate.length() > 0) {
 				bolValue = BMSUtil.parsePredicate(executePredicate, control,
 						animation);
 			}
@@ -49,8 +51,8 @@ public class ExecuteOperationByPredicateMulti extends SchedulerEvent {
 	}
 
 	@Override
-	public SchedulerWizard getWizard(BControl bcontrol) {
-		return new WizardExecuteOperationByPredicateMulti(bcontrol, this);
+	public SchedulerWizard getWizard(Shell shell, BControl bcontrol) {
+		return new WizardExecuteOperationByPredicateMulti(shell, bcontrol, this);
 	}
 
 	public void setOperationList(ArrayList<BindingObject> operationList) {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java
index acc22a77cfb4ce228782038c422420071bde5da9..2b9cee660fa2274bf3dd65789184278c9710ca13 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.scheduler;
 
 import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.AbstractExpressionControl;
 import de.bmotionstudio.gef.editor.Animation;
@@ -76,7 +77,7 @@ public abstract class SchedulerEvent extends AbstractExpressionControl
 	 *            The corresponding control
 	 * @return the corresponding wizard
 	 */
-	public abstract SchedulerWizard getWizard(BControl bcontrol);
+	public abstract SchedulerWizard getWizard(Shell shell, BControl bcontrol);
 
 	/**
 	 * Makes a copy of the scheduler event
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java
index 11cdbb4316faab8776c1911c7af9e1b776a2f6ff..a9698cc818446c096427f5eb6f8a58034217939e 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java
@@ -7,6 +7,7 @@
 package de.bmotionstudio.gef.editor.scheduler;
 
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Shell;
 
 import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.model.BControl;
@@ -26,8 +27,9 @@ public abstract class SchedulerWizard extends BMotionAbstractWizard {
 
 	protected Boolean eventDelete = false;
 
-	public SchedulerWizard(BControl control, SchedulerEvent scheduler) {
-		super(control);
+	public SchedulerWizard(Shell shell, BControl control,
+			SchedulerEvent scheduler) {
+		super(shell, control);
 		this.event = scheduler;
 	}
 
@@ -35,21 +37,6 @@ public abstract class SchedulerWizard extends BMotionAbstractWizard {
 		return this.event;
 	}
 
-	protected abstract Boolean prepareToFinish();
-
-	@Override
-	public boolean performFinish() {
-		return prepareToFinish();
-	}
-
-	protected void setEventDelete(Boolean b) {
-		this.eventDelete = b;
-	}
-
-	public Boolean isEventDelete() {
-		return this.eventDelete;
-	}
-
 	public abstract Point getSize();
 
 	@Override
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java
deleted file mode 100644
index 568c5f0922ff44ead8f3173c40249ec7e669bf41..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java
+++ /dev/null
@@ -1,335 +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.scheduler.wizard;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.core.databinding.observable.list.ComputedList;
-import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
-import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.EditorImageRegistry;
-import de.bmotionstudio.gef.editor.model.BControl;
-import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep;
-import de.bmotionstudio.gef.editor.scheduler.ObserverCallBackObject;
-
-@Deprecated
-public class ObserverCallBackDialog extends Dialog {
-
-	private TableViewer tableViewer;
-
-	private final AnimationScriptStep animationScriptStep;
-
-	private final BControl control;
-
-	// private IObservableValue controlObservable;
-
-	public ObserverCallBackDialog(final Shell parentShell,
-			final AnimationScriptStep animationScriptStep,
-			final BControl control) {
-		super(parentShell);
-		this.animationScriptStep = animationScriptStep;
-		this.control = control;
-	}
-
-	@Override
-	protected Control createDialogArea(final Composite parent) {
-
-		// DataBindingContext dbc = new DataBindingContext();
-
-		Composite container = (Composite) super.createDialogArea(parent);
-		container.setLayout(new GridLayout(1, true));
-
-		tableViewer = new TableViewer(container, SWT.BORDER
-				| SWT.FULL_SELECTION);
-		tableViewer.getTable().setLinesVisible(true);
-		tableViewer.getTable().setHeaderVisible(true);
-		tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
-		tableViewer.getTable().setFont(
-				new Font(Display.getDefault(), new FontData("Arial", 10,
-						SWT.NONE)));
-
-		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
-		column.getColumn().setText("Control");
-		column.getColumn().setWidth(225);
-		column.setEditingSupport(new ControlValueEditing(tableViewer, control));
-
-		column = new TableViewerColumn(tableViewer, SWT.NONE);
-		column.getColumn().setText("Observer");
-		column.getColumn().setWidth(150);
-		// column.setEditingSupport(new TextEditingSupport(tableViewer, dbc,
-		// "observerID"));
-		column.setEditingSupport(new ObserverValueEditing(tableViewer, control));
-
-		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-		tableViewer.setContentProvider(contentProvider);
-		tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-				BeansObservables.observeMaps(
-						contentProvider.getKnownElements(), new String[] {
-								"control", "observerID" })) {
-
-			@Override
-			public String getColumnText(final Object element,
-					final int columnIndex) {
-				if (columnIndex == 0) {
-
-					ObserverCallBackObject obj = (ObserverCallBackObject) element;
-
-					if (obj.getControl() != null) {
-						return obj.getControl().getID();
-					}
-				}
-				return super.getColumnText(element, columnIndex);
-			}
-
-			@Override
-			public Image getColumnImage(final Object element,
-					final int columnIndex) {
-				return null;
-			}
-
-		});
-
-		final WritableList input = new WritableList(
-				animationScriptStep.getCallBackList(),
-				ObserverCallBackObject.class);
-
-		tableViewer.setInput(input);
-
-		Composite comp = new Composite(container, SWT.NONE);
-		comp.setLayout(new RowLayout());
-		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-		Button btRemove = new Button(comp, SWT.PUSH);
-		btRemove.setText("Remove");
-		btRemove.setImage(BMotionStudioImage
-				.getImage(EditorImageRegistry.IMG_ICON_DELETE));
-		btRemove.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(final SelectionEvent e) {
-				if (tableViewer.getSelection().isEmpty()) {
-					return;
-				}
-				ObserverCallBackObject obj = (ObserverCallBackObject) ((IStructuredSelection) tableViewer
-						.getSelection()).getFirstElement();
-				input.remove(obj);
-			}
-		});
-
-		Button btAdd = new Button(comp, SWT.PUSH);
-		btAdd.setText("Add");
-		btAdd.setImage(BMotionStudioImage
-				.getImage(EditorImageRegistry.IMG_ICON_ADD));
-		btAdd.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(final SelectionEvent e) {
-				ObserverCallBackObject obj = new ObserverCallBackObject();
-				input.add(obj);
-			}
-		});
-
-		return container;
-
-	}
-
-	@Override
-	protected Point getInitialSize() {
-		return new Point(600, 500);
-	}
-
-	@Override
-	protected void okPressed() {
-		close();
-	}
-
-	@Override
-	protected void configureShell(final Shell newShell) {
-		super.configureShell(newShell);
-		newShell.setText("BMotion Studio - Observer Callback Editor");
-	}
-
-	private class ControlValueEditing extends EditingSupport {
-
-		private ComboBoxViewerCellEditor cellEditor = null;
-
-		private final BControl control;
-
-		public ControlValueEditing(final TableViewer cv, final BControl control) {
-			super(cv);
-			this.control = control;
-		}
-
-		@Override
-		protected boolean canEdit(final Object element) {
-			return true;
-		}
-
-		@Override
-		protected Object getValue(final Object element) {
-			if (((ObserverCallBackObject) element).getControl() != null) {
-				return ((ObserverCallBackObject) element).getControl().getID();
-			} else {
-				return "";
-			}
-		}
-
-		@Override
-		protected void setValue(final Object element, final Object value) {
-			if (value != null) {
-				((ObserverCallBackObject) element).setControl(control
-						.getVisualization().getBControl(value.toString()));
-			}
-		}
-
-		@Override
-		protected CellEditor getCellEditor(final Object element) {
-			if (cellEditor == null) {
-				cellEditor = new ComboBoxViewerCellEditor(
-						(Composite) getViewer().getControl(), SWT.READ_ONLY);
-				cellEditor
-						.setContenProvider(new ObservableListContentProvider());
-				cellEditor.setInput(new ComputedList() {
-					@Override
-					protected List<String> calculate() {
-						ArrayList<String> tmpList = new ArrayList<String>();
-						for (String controlID : control.getVisualization()
-								.getAllBControlIDs()) {
-							tmpList.add(controlID);
-						}
-						return tmpList;
-					}
-				});
-				((CCombo) cellEditor.getControl())
-						.addFocusListener(new FocusListener() {
-
-							String oldValue;
-
-							public void focusGained(final FocusEvent e) {
-								oldValue = ((CCombo) cellEditor.getControl())
-										.getText();
-
-							}
-
-							public void focusLost(final FocusEvent e) {
-
-								if (!oldValue.equals(((CCombo) cellEditor
-										.getControl()).getText())) {
-
-									IStructuredSelection selection = (IStructuredSelection) getViewer()
-											.getSelection();
-
-									ObserverCallBackObject obj = (ObserverCallBackObject) selection
-											.getFirstElement();
-									obj.setObserverID("");
-									tableViewer.refresh();
-
-								}
-							}
-
-						});
-			}
-			return cellEditor;
-		}
-	}
-
-	private static class ObserverValueEditing extends EditingSupport {
-
-		private ComboBoxViewerCellEditor cellEditor = null;
-
-		// private final BControl control;
-
-		public ObserverValueEditing(final TableViewer cv, final BControl control) {
-			super(cv);
-			// this.control = control;
-		}
-
-		@Override
-		protected boolean canEdit(final Object element) {
-			return true;
-		}
-
-		@Override
-		protected Object getValue(final Object element) {
-			if (((ObserverCallBackObject) element).getObserverID() != null) {
-				return ((ObserverCallBackObject) element).getObserverID();
-			} else {
-				return "";
-			}
-		}
-
-		@Override
-		protected void setValue(final Object element, final Object value) {
-			if (value != null) {
-				((ObserverCallBackObject) element).setObserverID(value
-						.toString());
-			}
-		}
-
-		@Override
-		protected CellEditor getCellEditor(final Object element) {
-
-			if (cellEditor == null) {
-				cellEditor = new ComboBoxViewerCellEditor(
-						(Composite) getViewer().getControl(), SWT.READ_ONLY);
-				cellEditor
-						.setContenProvider(new ObservableListContentProvider());
-			}
-			// cellEditor.setInput(new ComputedList() {
-			// @Override
-			// protected List<String> calculate() {
-			//
-			// ArrayList<String> tmpList = new ArrayList<String>();
-			//
-			// ObserverCallBackObject obj = (ObserverCallBackObject) element;
-			// BControl control = obj.getControl();
-			// if (control != null) {
-			//
-			// for (String id : control.getObservers().keySet()) {
-			// tmpList.add(id);
-			// }
-			//
-			// }
-			//
-			// return tmpList;
-			//
-			// }
-			// });
-
-			return cellEditor;
-		}
-	}
-
-}
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 58f0627cfc3d636fd2c249d7b8908947a499e153..5542930be38e6df21079b69c7250cc7c73d44746 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
@@ -141,7 +141,7 @@ public class SchedulerObjectDialog extends Dialog {
 		Button btAdd = new Button(comp, SWT.PUSH);
 		btAdd.setText("Add");
 		btAdd.setImage(BMotionStudioImage
-				.getImage(EditorImageRegistry.IMG_ICON_ADD));
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
 		btAdd.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(final SelectionEvent e) {
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 384a7fe54ab554bddc519823dcba7b5386ee0728..f763a9a87d3815b800d54ab7db209aa6be81b31f 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
@@ -18,11 +18,9 @@ import org.eclipse.jface.databinding.swt.SWTObservables;
 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.dialogs.MessageDialog;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.SelectionEvent;
@@ -36,8 +34,10 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
 
 import de.bmotionstudio.gef.editor.BMotionStudioSWTConstants;
@@ -51,266 +51,250 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard;
 
 public class WizardExecuteOperationByPredicate extends SchedulerWizard {
 
-	private class SchedulerExecuteOperationByPredicatePage extends WizardPage {
+	private ComboViewer cbOperation;
 
-		private ComboViewer cbOperation;
+	private Text txtPredicate;
 
-		private Text txtPredicate;
+	private Text txtMaxRandomOperations;
 
-		private Text txtMaxRandomOperations;
+	private Label lbMaxRandomOperations;
 
-		private Label lbMaxRandomOperations;
+	private Composite container;
 
-		private Composite container;
+	private Label renderedOpLabel;
 
-		private Label renderedOpLabel;
+	private Button checkboxRandomMode;
 
-		private Button checkboxRandomMode;
+	private ScrolledComposite c1;
 
-		private ScrolledComposite c1;
-
-		public ComboViewer getCbOperation() {
-			return cbOperation;
-		}
-
-		public Text getTxtMaxRandomOperations() {
-			return txtMaxRandomOperations;
-		}
-
-		protected SchedulerExecuteOperationByPredicatePage(String pageName) {
-			super(pageName);
-		}
-
-		public void createControl(final Composite parent) {
+	@Override
+	public Control createWizardContent(Composite parent) {
 
-			final DataBindingContext dbc = new DataBindingContext();
+		final DataBindingContext dbc = new DataBindingContext();
 
-			container = new Composite(parent, SWT.NONE);
-			GridLayout gl = new GridLayout(2, false);
-			container.setLayout(gl);
+		container = new Composite(parent, SWT.NONE);
+		GridLayout gl = new GridLayout(2, false);
+		container.setLayout(gl);
 
-			Label lb = new Label(container, SWT.NONE);
-			lb.setText("Select an operation: ");
+		Label lb = new Label(container, SWT.NONE);
+		lb.setText("Select an operation: ");
 
-			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-			gd.heightHint = 50;
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		gd.heightHint = 50;
 
-			cbOperation = new ComboViewer(container, SWT.NONE);
-			cbOperation.getCombo().setLayoutData(new GridData(300, 50));
+		cbOperation = new ComboViewer(container, SWT.NONE);
+		cbOperation.getCombo().setLayoutData(new GridData(300, 50));
 
-			lb = new Label(container, SWT.NONE);
-			lb.setText("Predicate: ");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
-			txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP
-					| SWT.V_SCROLL);
-			txtPredicate.setLayoutData(gd);
+		lb = new Label(container, SWT.NONE);
+		lb.setText("Predicate: ");
+		lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
+		txtPredicate.setLayoutData(gd);
 
-			lb = new Label(container, SWT.NONE);
-			lb.setText("Random mode: ");
-			lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
-			checkboxRandomMode = new Button(container, SWT.CHECK);
-			checkboxRandomMode.addSelectionListener(new SelectionListener() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					setRandomVisibility(checkboxRandomMode.getSelection());
-				}
+		lb = new Label(container, SWT.NONE);
+		lb.setText("Random mode: ");
+		lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+		checkboxRandomMode = new Button(container, SWT.CHECK);
+		checkboxRandomMode.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				setRandomVisibility(checkboxRandomMode.getSelection());
+			}
 
-				@Override
-				public void widgetDefaultSelected(SelectionEvent e) {
-				}
-			});
-
-			lbMaxRandomOperations = new Label(container, SWT.NONE);
-			lbMaxRandomOperations.setText("Max Random Operations: ");
-			lbMaxRandomOperations.setLayoutData(new GridData(
-					GridData.VERTICAL_ALIGN_BEGINNING));
-			txtMaxRandomOperations = new Text(container, SWT.BORDER);
-			txtMaxRandomOperations.setLayoutData(new GridData(
-					GridData.FILL_HORIZONTAL));
-			txtMaxRandomOperations.addVerifyListener(new VerifyListener() {
-				@Override
-				public void verifyText(VerifyEvent e) {
-					String string = e.text;
-					char[] chars = new char[string.length()];
-					string.getChars(0, chars.length, chars, 0);
-					for (int i = 0; i < chars.length; i++) {
-						if (!('0' <= chars[i] && chars[i] <= '9')) {
-							e.doit = false;
-							return;
-						}
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+
+		lbMaxRandomOperations = new Label(container, SWT.NONE);
+		lbMaxRandomOperations.setText("Max Random Operations: ");
+		lbMaxRandomOperations.setLayoutData(new GridData(
+				GridData.VERTICAL_ALIGN_BEGINNING));
+		txtMaxRandomOperations = new Text(container, SWT.BORDER);
+		txtMaxRandomOperations.setLayoutData(new GridData(
+				GridData.FILL_HORIZONTAL));
+		txtMaxRandomOperations.addVerifyListener(new VerifyListener() {
+			@Override
+			public void verifyText(VerifyEvent e) {
+				String string = e.text;
+				char[] chars = new char[string.length()];
+				string.getChars(0, chars.length, chars, 0);
+				for (int i = 0; i < chars.length; i++) {
+					if (!('0' <= chars[i] && chars[i] <= '9')) {
+						e.doit = false;
+						return;
 					}
 				}
-			});
-			setRandomVisibility(((ExecuteOperationByPredicate) getScheduler())
-					.getPredicateOperation().isRandom());
+			}
+		});
+		setRandomVisibility(((ExecuteOperationByPredicate) getScheduler())
+				.getPredicateOperation().isRandom());
 
-			initBindings(dbc);
+		initBindings(dbc);
 
-			IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation
-					.getSelection();
+		IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation
+				.getSelection();
 
-			if (!structuredSelection.isEmpty()) {
-				createRenderedOperationContainer((MachineOperation) structuredSelection
-						.getFirstElement());
-			}
+		if (!structuredSelection.isEmpty()) {
+			createRenderedOperationContainer((MachineOperation) structuredSelection
+					.getFirstElement());
+		}
 
-			setControl(container);
+		return container;
 
-		}
+	}
 
-		private void setRandomVisibility(boolean b) {
-			if (lbMaxRandomOperations == null || txtMaxRandomOperations == null)
-				return;
-			lbMaxRandomOperations.setVisible(b);
-			txtMaxRandomOperations.setVisible(b);
-		}
+	private void setRandomVisibility(boolean b) {
+		if (lbMaxRandomOperations == null || txtMaxRandomOperations == null)
+			return;
+		lbMaxRandomOperations.setVisible(b);
+		txtMaxRandomOperations.setVisible(b);
+	}
 
-		private void initBindings(DataBindingContext dbc) {
-
-			// MachineContentList operationList = BMotionEditorPlugin
-			// .getActiveEditor().getVisualization().getOperationList();
-			// operationList.getMap().remove("INITIALISATION");
-
-			ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider();
-			cbOperation.setContentProvider(cbOpContentProvider);
-			IObservableMap[] attributeMaps = BeansObservables.observeMaps(
-					cbOpContentProvider.getKnownElements(),
-					MachineContentObject.class, new String[] { "label" });
-			cbOperation.setLabelProvider(new ObservableMapLabelProvider(
-					attributeMaps));
-			cbOperation.setInput(new WritableList(EventBHelper
-					.getOperations(getBControl().getVisualization()),
-					MachineOperation.class));
-			cbOperation.getCombo().setFont(
-					new Font(Display.getDefault(), new FontData("Arial", 10,
-							SWT.NONE)));
-
-			final IObservableValue observeSelection = ViewersObservables
-					.observeSingleSelection(cbOperation);
-
-			dbc.bindValue(SWTObservables.observeSelection(cbOperation
-					.getCombo()), BeansObservables.observeValue(
-					((ExecuteOperationByPredicate) getScheduler())
-							.getPredicateOperation(), "operationName"), null,
-					null);
-
-			dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
-					BeansObservables.observeValue(
-							((ExecuteOperationByPredicate) getScheduler())
-									.getPredicateOperation(), "predicate"));
-
-			observeSelection.addValueChangeListener(new IValueChangeListener() {
-				public void handleValueChange(ValueChangeEvent event) {
-					Object sel = event.getObservableValue().getValue();
-					createRenderedOperationContainer((MachineOperation) sel);
-				}
-			});
+	private void initBindings(DataBindingContext dbc) {
+
+		// MachineContentList operationList = BMotionEditorPlugin
+		// .getActiveEditor().getVisualization().getOperationList();
+		// operationList.getMap().remove("INITIALISATION");
+
+		ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider();
+		cbOperation.setContentProvider(cbOpContentProvider);
+		IObservableMap[] attributeMaps = BeansObservables.observeMaps(
+				cbOpContentProvider.getKnownElements(),
+				MachineContentObject.class, new String[] { "label" });
+		cbOperation.setLabelProvider(new ObservableMapLabelProvider(
+				attributeMaps));
+		cbOperation.setInput(new WritableList(EventBHelper
+				.getOperations(getBControl().getVisualization()),
+				MachineOperation.class));
+		cbOperation.getCombo().setFont(
+				new Font(Display.getDefault(), new FontData("Arial", 10,
+						SWT.NONE)));
+
+		final IObservableValue observeSelection = ViewersObservables
+				.observeSingleSelection(cbOperation);
+
+		dbc.bindValue(SWTObservables.observeSelection(cbOperation.getCombo()),
+				BeansObservables.observeValue(
+						((ExecuteOperationByPredicate) getScheduler())
+								.getPredicateOperation(), "operationName"),
+				null, null);
+
+		dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify),
+				BeansObservables.observeValue(
+						((ExecuteOperationByPredicate) getScheduler())
+								.getPredicateOperation(), "predicate"));
+
+		observeSelection.addValueChangeListener(new IValueChangeListener() {
+			public void handleValueChange(ValueChangeEvent event) {
+				Object sel = event.getObservableValue().getValue();
+				createRenderedOperationContainer((MachineOperation) sel);
+			}
+		});
 
-			dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode),
-					BeansObservables.observeValue(
-							((ExecuteOperationByPredicate) getScheduler())
-									.getPredicateOperation(), "random"));
+		dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode),
+				BeansObservables.observeValue(
+						((ExecuteOperationByPredicate) getScheduler())
+								.getPredicateOperation(), "random"));
 
-			dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations,
-					SWT.Modify), BeansObservables.observeValue(
-					((ExecuteOperationByPredicate) getScheduler())
-							.getPredicateOperation(), "maxrandom"));
+		dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations,
+				SWT.Modify), BeansObservables.observeValue(
+				((ExecuteOperationByPredicate) getScheduler())
+						.getPredicateOperation(), "maxrandom"));
 
-		}
+	}
 
-		private void createRenderedOperationContainer(MachineOperation op) {
+	private void createRenderedOperationContainer(MachineOperation op) {
 
-			if (c1 != null)
-				c1.dispose();
+		if (c1 != null)
+			c1.dispose();
 
-			GridLayout gl = new GridLayout(1, true);
-			gl.marginLeft = 5;
-			gl.marginTop = 5;
+		GridLayout gl = new GridLayout(1, true);
+		gl.marginLeft = 5;
+		gl.marginTop = 5;
 
-			GridData gd = new GridData(GridData.FILL_BOTH);
-			gd.horizontalSpan = 2;
-			
-			c1 = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL
-					| SWT.V_SCROLL);
-			c1.setBackground(ColorConstants.red);
-			c1.setLayoutData(gd);
+		GridData gd = new GridData(GridData.FILL_BOTH);
+		gd.horizontalSpan = 2;
 
-			Composite cp = new Composite(c1, SWT.NONE);
-			cp.setLayout(gl);
+		c1 = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL
+				| SWT.V_SCROLL);
+		c1.setBackground(ColorConstants.red);
+		c1.setLayoutData(gd);
 
-			renderedOpLabel = new Label(cp, SWT.NONE);
-			renderedOpLabel.setLayoutData(gd);
-			renderedOpLabel.setText(op.getRenderedOperation());
-			renderedOpLabel.setFont(JFaceResources.getFontRegistry().get(
-					BMotionStudioSWTConstants.RODIN_FONT_KEY));
+		Composite cp = new Composite(c1, SWT.NONE);
+		cp.setLayout(gl);
 
-			c1.setContent(cp);
-			c1.setExpandHorizontal(true);
-			c1.setExpandVertical(true);
-			c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+		renderedOpLabel = new Label(cp, SWT.NONE);
+		renderedOpLabel.setLayoutData(gd);
+		renderedOpLabel.setText(op.getRenderedOperation());
+		renderedOpLabel.setFont(JFaceResources.getFontRegistry().get(
+				BMotionStudioSWTConstants.RODIN_FONT_KEY));
 
-			container.layout();
+		c1.setContent(cp);
+		c1.setExpandHorizontal(true);
+		c1.setExpandVertical(true);
+		c1.setMinSize(cp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
 
-		}
+		container.layout();
 
 	}
 
-	public WizardExecuteOperationByPredicate(BControl bcontrol,
+	public WizardExecuteOperationByPredicate(Shell shell, BControl bcontrol,
 			SchedulerEvent scheduler) {
-		super(bcontrol, scheduler);
-		addPage(new SchedulerExecuteOperationByPredicatePage(
-				"SchedulerExecuteOperationByPredicatePage"));
+		super(shell, bcontrol, scheduler);
 	}
 
-	@Override
-	protected Boolean prepareToFinish() {
-
-		SchedulerExecuteOperationByPredicatePage page = (SchedulerExecuteOperationByPredicatePage) getPage("SchedulerExecuteOperationByPredicatePage");
-
-		String errorStr = "";
-
-		if (((ExecuteOperationByPredicate) getScheduler())
-				.getPredicateOperation().isRandom()
-				&& !(Integer
-						.valueOf(page.getTxtMaxRandomOperations().getText()) > 0))
-			errorStr += "Max Random Operations must be greater than 0.\n";
-
-		if (page.getCbOperation().getCombo().getSelectionIndex() == -1)
-			errorStr += "Please select an operation.\n";
-
-		if (errorStr.length() > 0) {
-			MessageDialog.openError(Display.getDefault().getActiveShell(),
-					"An Error occured", errorStr);
-			return false;
-		}
-
-		// PredicateOperation predicateOperation =
-		// ((ExecuteOperationByPredicate) getScheduler())
-		// .getPredicateOperation();
-		//
-		// Observer observer = getBControl().getObserver(
-		// ListenOperationByPredicate.ID);
-		// ListenOperationByPredicate listenObserver;
-		//
-		// if (observer != null) {
-		// listenObserver = (ListenOperationByPredicate) observer;
-		// listenObserver
-		// .removePredicateOperationByUniqueID(predicateOperation
-		// .getUniqueID());
-		// } else {
-		// listenObserver = new ListenOperationByPredicate();
-		// getBControl().addObserver(listenObserver);
-		// }
-		//
-		// try {
-		// listenObserver.addPredicateOperation(predicateOperation.clone());
-		// } catch (CloneNotSupportedException e) {
-		// e.printStackTrace();
-		// }
-
-		return true;
-
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	//
+	// SchedulerExecuteOperationByPredicatePage page =
+	// (SchedulerExecuteOperationByPredicatePage)
+	// getPage("SchedulerExecuteOperationByPredicatePage");
+	//
+	// String errorStr = "";
+	//
+	// if (((ExecuteOperationByPredicate) getScheduler())
+	// .getPredicateOperation().isRandom()
+	// && !(Integer
+	// .valueOf(page.getTxtMaxRandomOperations().getText()) > 0))
+	// errorStr += "Max Random Operations must be greater than 0.\n";
+	//
+	// if (page.getCbOperation().getCombo().getSelectionIndex() == -1)
+	// errorStr += "Please select an operation.\n";
+	//
+	// if (errorStr.length() > 0) {
+	// MessageDialog.openError(Display.getDefault().getActiveShell(),
+	// "An Error occured", errorStr);
+	// return false;
+	// }
+	//
+	// // PredicateOperation predicateOperation =
+	// // ((ExecuteOperationByPredicate) getScheduler())
+	// // .getPredicateOperation();
+	// //
+	// // Observer observer = getBControl().getObserver(
+	// // ListenOperationByPredicate.ID);
+	// // ListenOperationByPredicate listenObserver;
+	// //
+	// // if (observer != null) {
+	// // listenObserver = (ListenOperationByPredicate) observer;
+	// // listenObserver
+	// // .removePredicateOperationByUniqueID(predicateOperation
+	// // .getUniqueID());
+	// // } else {
+	// // listenObserver = new ListenOperationByPredicate();
+	// // getBControl().addObserver(listenObserver);
+	// // }
+	// //
+	// // try {
+	// // listenObserver.addPredicateOperation(predicateOperation.clone());
+	// // } catch (CloneNotSupportedException e) {
+	// // e.printStackTrace();
+	// // }
+	//
+	// return true;
+	//
+	// }
 
 	@Override
 	public Point getSize() {
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 ef33b42a06fed9594556b7b95ad8a97525dd9c09..4b9e029a1ecd28a42cceb179a85358b7a6a025e8 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
@@ -10,14 +10,12 @@ import org.eclipse.core.databinding.beans.BeansObservables;
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ColumnViewer;
 import org.eclipse.jface.viewers.EditingSupport;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -27,10 +25,10 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
 
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
-import de.bmotionstudio.gef.editor.BindingObject;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.edit.OperationValueEditingSupport;
 import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
@@ -48,134 +46,222 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
  */
 public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard {
 
-	private class MultiPage extends WizardPage {
+	private TableViewer tableViewer;
 
-		private TableViewer tableViewer;
-
-		protected MultiPage(String pageName) {
-			super(pageName);
-		}
-
-		public void createControl(final Composite parent) {
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			setControl(container);
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, PredicateOperation.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-			
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Execute Rule");
-			column.getColumn().setWidth(190);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "executePredicate", getBControl().getVisualization(),
-					getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Operation");
-			column.getColumn().setWidth(150);
-			column.setEditingSupport(new OperationValueEditingSupport(
-					tableViewer, getBControl()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Parameter");
-			column.getColumn().setWidth(190);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "predicate", getBControl().getVisualization(),
-					getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Random Ops");
-			column.getColumn().setWidth(100);
-			column.setEditingSupport(new RandomModeEditingSupport(tableViewer));
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-
-			tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(), new String[] {
-									"executePredicate", "operationName",
-									"predicate", "maxrandom" })));
-			final WritableList input = new WritableList(
-					((ExecuteOperationByPredicateMulti) getScheduler())
-							.getOperationList(),
-					PredicateOperation.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(obj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_ADD));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					PredicateOperation obj = new PredicateOperation();
-					input.add(obj);
+	@Override
+	public Control createWizardContent(Composite parent) {
+		DataBindingContext dbc = new DataBindingContext();
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(new GridLayout(1, true));
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, PredicateOperation.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Execute Rule");
+		column.getColumn().setWidth(190);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"executePredicate", getBControl().getVisualization(),
+				getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Operation");
+		column.getColumn().setWidth(150);
+		column.setEditingSupport(new OperationValueEditingSupport(tableViewer,
+				getBControl()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Parameter");
+		column.getColumn().setWidth(190);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc,
+				"predicate", getBControl().getVisualization(), getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Random Ops");
+		column.getColumn().setWidth(100);
+		column.setEditingSupport(new RandomModeEditingSupport(tableViewer));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+
+		tableViewer.setLabelProvider(new ObservableMapLabelProvider(
+				BeansObservables.observeMaps(
+						contentProvider.getKnownElements(), new String[] {
+								"executePredicate", "operationName",
+								"predicate", "maxrandom" })));
+		final WritableList input = new WritableList(
+				((ExecuteOperationByPredicateMulti) getScheduler())
+						.getOperationList(),
+				PredicateOperation.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
 				}
-			});
+				PredicateOperation obj = (PredicateOperation) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(obj);
+			}
+		});
+
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				PredicateOperation obj = new PredicateOperation();
+				input.add(obj);
+			}
+		});
+
+		return container;
 
-		}
 	}
 
-	public WizardExecuteOperationByPredicateMulti(BControl bcontrol,
+	// private class MultiPage extends WizardPage {
+	//
+	// private TableViewer tableViewer;
+	//
+	// protected MultiPage(String pageName) {
+	// super(pageName);
+	// }
+	//
+	// public void createControl(final Composite parent) {
+	//
+	// DataBindingContext dbc = new DataBindingContext();
+	//
+	// Composite container = new Composite(parent, SWT.NONE);
+	// container.setLayout(new GridLayout(1, true));
+	//
+	// setControl(container);
+	//
+	// tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+	// container, PredicateOperation.class,
+	// ((BMotionAbstractWizard) getWizard()).getName());
+	//
+	// TableViewerColumn column = new TableViewerColumn(tableViewer,
+	// SWT.NONE);
+	// column.getColumn().setText("Execute Rule");
+	// column.getColumn().setWidth(190);
+	// column.setEditingSupport(new PredicateEditingSupport(tableViewer,
+	// dbc, "executePredicate", getBControl().getVisualization(),
+	// getShell()));
+	//
+	// column = new TableViewerColumn(tableViewer, SWT.NONE);
+	// column.getColumn().setText("Operation");
+	// column.getColumn().setWidth(150);
+	// column.setEditingSupport(new OperationValueEditingSupport(
+	// tableViewer, getBControl()));
+	//
+	// column = new TableViewerColumn(tableViewer, SWT.NONE);
+	// column.getColumn().setText("Parameter");
+	// column.getColumn().setWidth(190);
+	// column.setEditingSupport(new PredicateEditingSupport(tableViewer,
+	// dbc, "predicate", getBControl().getVisualization(),
+	// getShell()));
+	//
+	// column = new TableViewerColumn(tableViewer, SWT.NONE);
+	// column.getColumn().setText("Random Ops");
+	// column.getColumn().setWidth(100);
+	// column.setEditingSupport(new RandomModeEditingSupport(tableViewer));
+	//
+	// ObservableListContentProvider contentProvider = new
+	// ObservableListContentProvider();
+	// tableViewer.setContentProvider(contentProvider);
+	//
+	// tableViewer.setLabelProvider(new ObservableMapLabelProvider(
+	// BeansObservables.observeMaps(
+	// contentProvider.getKnownElements(), new String[] {
+	// "executePredicate", "operationName",
+	// "predicate", "maxrandom" })));
+	// final WritableList input = new WritableList(
+	// ((ExecuteOperationByPredicateMulti) getScheduler())
+	// .getOperationList(),
+	// PredicateOperation.class);
+	// tableViewer.setInput(input);
+	//
+	// Composite comp = new Composite(container, SWT.NONE);
+	// comp.setLayout(new RowLayout());
+	// comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+	//
+	// Button btRemove = new Button(comp, SWT.PUSH);
+	// btRemove.setText("Remove");
+	// btRemove.setImage(BMotionStudioImage
+	// .getImage(EditorImageRegistry.IMG_ICON_DELETE));
+	// btRemove.addSelectionListener(new SelectionAdapter() {
+	// @Override
+	// public void widgetSelected(SelectionEvent e) {
+	// if (tableViewer.getSelection().isEmpty()) {
+	// return;
+	// }
+	// PredicateOperation obj = (PredicateOperation) ((IStructuredSelection)
+	// tableViewer
+	// .getSelection()).getFirstElement();
+	// input.remove(obj);
+	// }
+	// });
+	//
+	// Button btAdd = new Button(comp, SWT.PUSH);
+	// btAdd.setText("Add");
+	// btAdd.setImage(BMotionStudioImage
+	// .getImage(EditorImageRegistry.IMG_ICON_ADD));
+	// btAdd.addSelectionListener(new SelectionAdapter() {
+	// @Override
+	// public void widgetSelected(SelectionEvent e) {
+	// PredicateOperation obj = new PredicateOperation();
+	// input.add(obj);
+	// }
+	// });
+	//
+	// }
+	// }
+
+	public WizardExecuteOperationByPredicateMulti(Shell shell,
+			BControl bcontrol,
 			SchedulerEvent scheduler) {
-		super(bcontrol, scheduler);
-		addPage(new MultiPage("MultiPage"));
+		super(shell, bcontrol, scheduler);
 	}
 
 	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
+	 * // * (non-Javadoc) // * // * @see // *
 	 * de.bmotionstudio.gef.editor.scheduler.SchedulerWizard#prepareToFinish()
+	 * //
 	 */
-	@Override
-	protected Boolean prepareToFinish() {
-		if (((ExecuteOperationByPredicateMulti) getScheduler())
-				.getOperationList().size() == 0) {
-			setEventDelete(true);
-		} else {
-			for (BindingObject obj : ((ExecuteOperationByPredicateMulti) getScheduler())
-					.getOperationList()) {
-				if (((PredicateOperation) obj).getOperationName() == null
-						|| ((PredicateOperation) obj).getOperationName()
-								.isEmpty()) {
-					MessageDialog
-							.openError(getShell(), "Please check your entries",
-									"Please check your entries. The operation field must not be empty.");
-					return false;
-				}
-			}
-		}
-		return true;
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	// if (((ExecuteOperationByPredicateMulti) getScheduler())
+	// .getOperationList().size() == 0) {
+	// setEventDelete(true);
+	// } else {
+	// for (BindingObject obj : ((ExecuteOperationByPredicateMulti)
+	// getScheduler())
+	// .getOperationList()) {
+	// if (((PredicateOperation) obj).getOperationName() == null
+	// || ((PredicateOperation) obj).getOperationName()
+	// .isEmpty()) {
+	// MessageDialog
+	// .openError(getShell(), "Please check your entries",
+	// "Please check your entries. The operation field must not be empty.");
+	// return false;
+	// }
+	// }
+	// }
+	// return true;
+	// }
 
 	/*
 	 * (non-Javadoc)
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 81680ee37abd5991ef459a9c46da00c079364d65..504d38d351973f4098531d92106f17f8c8c1df01 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
@@ -19,7 +19,6 @@ import org.eclipse.jface.viewers.EditingSupport;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -31,9 +30,9 @@ import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 
-import de.bmotionstudio.gef.editor.BMotionAbstractWizard;
 import de.bmotionstudio.gef.editor.BMotionStudioImage;
 import de.bmotionstudio.gef.editor.EditorImageRegistry;
 import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport;
@@ -46,119 +45,111 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardExecuteScheduler extends SchedulerWizard {
 
-	private class SchedulerPage extends WizardPage {
-
-		private TableViewer tableViewer;
-
-		protected SchedulerPage(String pageName) {
-			super(pageName);
-		}
-
-		public void createControl(final Composite parent) {
-
-			DataBindingContext dbc = new DataBindingContext();
-
-			Composite container = new Composite(parent, SWT.NONE);
-			container.setLayout(new GridLayout(1, true));
-
-			setControl(container);
-
-			tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
-					container, AnimationScriptObject.class,
-					((BMotionAbstractWizard) getWizard()).getName());
-
-			TableViewerColumn column = new TableViewerColumn(tableViewer,
-					SWT.NONE);
-			column.getColumn().setText("Predicate");
-			column.getColumn().setWidth(225);
-			column.setEditingSupport(new PredicateEditingSupport(tableViewer,
-					dbc, "predicate", getBControl().getVisualization(),
-					getShell()));
-
-			column = new TableViewerColumn(tableViewer, SWT.NONE);
-			column.getColumn().setText("Edit");
-			column.getColumn().setWidth(225);
-			column.setEditingSupport(new AnimationScriptEditingSupport(
-					tableViewer));
-
-			ObservableListContentProvider contentProvider = new ObservableListContentProvider();
-			tableViewer.setContentProvider(contentProvider);
-
-			tableViewer.setLabelProvider(new ObservableMapLabelProvider(
-					BeansObservables.observeMaps(
-							contentProvider.getKnownElements(),
-							new String[] { "predicate" })) {
-
-				@Override
-				public String getColumnText(Object element, int columnIndex) {
-					if (columnIndex == 1) {
-						return "Edit Scheduler";
-					}
-					return super.getColumnText(element, columnIndex);
+	private TableViewer tableViewer;
+	
+	@Override
+	public Control createWizardContent(Composite parent) {
+		
+		DataBindingContext dbc = new DataBindingContext();
+
+		Composite container = new Composite(parent, SWT.NONE);
+		container.setLayout(new GridLayout(1, true));
+
+		tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer(
+				container, AnimationScriptObject.class, getName());
+
+		TableViewerColumn column = new TableViewerColumn(tableViewer,
+				SWT.NONE);
+		column.getColumn().setText("Predicate");
+		column.getColumn().setWidth(225);
+		column.setEditingSupport(new PredicateEditingSupport(tableViewer,
+				dbc, "predicate", getBControl().getVisualization(),
+				getShell()));
+
+		column = new TableViewerColumn(tableViewer, SWT.NONE);
+		column.getColumn().setText("Edit");
+		column.getColumn().setWidth(225);
+		column.setEditingSupport(new AnimationScriptEditingSupport(
+				tableViewer));
+
+		ObservableListContentProvider contentProvider = new ObservableListContentProvider();
+		tableViewer.setContentProvider(contentProvider);
+
+		tableViewer.setLabelProvider(new ObservableMapLabelProvider(
+				BeansObservables.observeMaps(
+						contentProvider.getKnownElements(),
+						new String[] { "predicate" })) {
+
+			@Override
+			public String getColumnText(Object element, int columnIndex) {
+				if (columnIndex == 1) {
+					return "Edit Scheduler";
 				}
+				return super.getColumnText(element, columnIndex);
+			}
 
-				@Override
-				public Image getColumnImage(Object element, int columnIndex) {
-					return null;
-				}
+			@Override
+			public Image getColumnImage(Object element, int columnIndex) {
+				return null;
+			}
 
-			});
-
-			final WritableList input = new WritableList(
-					((ExecuteAnimationScript) getScheduler()).getList(),
-					AnimationScriptObject.class);
-			tableViewer.setInput(input);
-
-			Composite comp = new Composite(container, SWT.NONE);
-			comp.setLayout(new RowLayout());
-			comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
-			Button btRemove = new Button(comp, SWT.PUSH);
-			btRemove.setText("Remove");
-			btRemove.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_DELETE));
-			btRemove.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (tableViewer.getSelection().isEmpty()) {
-						return;
-					}
-					AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer
-							.getSelection()).getFirstElement();
-					input.remove(obj);
-				}
-			});
-
-			Button btAdd = new Button(comp, SWT.PUSH);
-			btAdd.setText("Add");
-			btAdd.setImage(BMotionStudioImage
-					.getImage(EditorImageRegistry.IMG_ICON_ADD));
-			btAdd.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					AnimationScriptObject obj = new AnimationScriptObject("");
-					input.add(obj);
+		});
+
+		final WritableList input = new WritableList(
+				((ExecuteAnimationScript) getScheduler()).getList(),
+				AnimationScriptObject.class);
+		tableViewer.setInput(input);
+
+		Composite comp = new Composite(container, SWT.NONE);
+		comp.setLayout(new RowLayout());
+		comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+
+		Button btRemove = new Button(comp, SWT.PUSH);
+		btRemove.setText("Remove");
+		btRemove.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_DELETE));
+		btRemove.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (tableViewer.getSelection().isEmpty()) {
+					return;
 				}
-			});
+				AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer
+						.getSelection()).getFirstElement();
+				input.remove(obj);
+			}
+		});
+
+		Button btAdd = new Button(comp, SWT.PUSH);
+		btAdd.setText("Add");
+		btAdd.setImage(BMotionStudioImage
+				.getImage(EditorImageRegistry.IMG_ICON_NEW_WIZ));
+		btAdd.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				AnimationScriptObject obj = new AnimationScriptObject("");
+				input.add(obj);
+			}
+		});
 
-		}
-	}
+		return container;
 
-	public WizardExecuteScheduler(BControl bcontrol,
-			SchedulerEvent scheduler) {
-		super(bcontrol, scheduler);
-		addPage(new SchedulerPage("SchedulerPage"));
 	}
-
-	@Override
-	protected Boolean prepareToFinish() {
-		return true;
+		
+	public WizardExecuteScheduler(Shell shell, BControl bcontrol,
+			SchedulerEvent scheduler) {
+		super(shell, bcontrol, scheduler);
 	}
 
-	@Override
-	public boolean performCancel() {
-		return true;
-	}
+	// @Override
+	// protected Boolean prepareToFinish() {
+	// return true;
+	// }
+	//
+	// @Override
+	// public boolean performCancel() {
+	// return true;
+	// }
 
 	@Override
 	public Point getSize() {
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java
index b2c4fa4123b2b707b4fe0898e2a2909ecbb8c488..6a82f2279dc2e3268589da2bd38cbd9fea9f85ea 100644
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java
+++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java
@@ -17,7 +17,6 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.TableItem;
 
-import de.bmotionstudio.gef.editor.BMotionStudioSWTConstants;
 import de.bmotionstudio.gef.editor.action.BMotionWizardAddItemAction;
 import de.bmotionstudio.gef.editor.action.BMotionWizardDeleteItemsAction;
 import de.bmotionstudio.gef.editor.library.AttributeTransfer;
@@ -42,7 +41,7 @@ public class BMotionWizardUtil {
 		tableViewer.getTable().setLinesVisible(true);
 		tableViewer.getTable().setHeaderVisible(true);
 		tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
-		tableViewer.getTable().setFont(BMotionStudioSWTConstants.fontArial10);
+		// tableViewer.getTable().setFont(BMotionStudioSWTConstants.fontArial10);
 		int operations = DND.DROP_COPY | DND.DROP_MOVE;
 		Transfer[] transferTypes = new Transfer[] { AttributeTransfer
 				.getInstance() };
diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/FileUtil.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/FileUtil.java
deleted file mode 100644
index f0087ca90117a51b178e895aaa5446e0d0ab8faf..0000000000000000000000000000000000000000
--- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/FileUtil.java
+++ /dev/null
@@ -1,45 +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.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
-
-public class FileUtil {
-
-	/** Fast & simple file copy. */
-	public static void copyFile(File source, File dest) throws IOException {
-		FileChannel in = null, out = null;
-		try {
-			in = new FileInputStream(source).getChannel();
-			out = new FileOutputStream(dest).getChannel();
-
-			long size = in.size();
-			MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0,
-					size);
-
-			out.write(buf);
-		} finally {
-			if (in != null)
-				in.close();
-			if (out != null)
-				out.close();
-		}
-	}
-
-	public static void deleteFile(File f) {
-		// Attempt to delete it
-		boolean success = f.delete();
-		if (!success)
-			throw new IllegalArgumentException("Delete: deletion failed");
-	}
-
-}
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java
index 35a2c477e1ef878b5d40b7a4c796cc53687ebc5c..3dd55a036ac6089db8e4085978bea219ca619e99 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java
+++ b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/PerspectiveEditFactory.java
@@ -11,6 +11,7 @@ import org.eclipse.ui.IPageLayout;
 import org.eclipse.ui.IPerspectiveFactory;
 
 import de.bmotionstudio.gef.editor.library.LibraryView;
+import de.bmotionstudio.gef.editor.observer.view.ObserverView;
 
 public class PerspectiveEditFactory implements IPerspectiveFactory {
 
@@ -37,6 +38,7 @@ public class PerspectiveEditFactory implements IPerspectiveFactory {
 				IPageLayout.BOTTOM, 0.75f, editorArea);
 		// Properties view
 		bottom.addView(IPageLayout.ID_PROP_SHEET);
+		bottom.addView(ObserverView.ID);
 
 	}
 
diff --git a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java
index f591535b259b59fd71d805118a27db38565c7709..b35987661b39908266d99274771a054655e3f93e 100644
--- a/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java
+++ b/de.bmotionstudio.rodin/src/de/bmotionstudio/rodin/StartEventBVisualizationHandler.java
@@ -10,7 +10,7 @@ import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import de.bmotionstudio.gef.editor.internal.StartVisualizationFileHandler;
+import de.bmotionstudio.gef.editor.handler.StartVisualizationFileHandler;
 
 /**
  * @author Lukas Ladenberger
diff --git a/de.prob.core/META-INF/MANIFEST.MF b/de.prob.core/META-INF/MANIFEST.MF
index e1cf9ef6e6d4630ea3dbbbc24da03219d65c3db5..b68f1d0afc2a00b39086b6c5c55bff7f6296a9c2 100644
--- a/de.prob.core/META-INF/MANIFEST.MF
+++ b/de.prob.core/META-INF/MANIFEST.MF
@@ -115,17 +115,17 @@ Bundle-Activator: de.prob.core.internal.Activator
 Eclipse-BuddyPolicy: registered
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ClassPath: .,
- lib/dependencies/answerparser-2.4.8-SNAPSHOT.jar,
- lib/dependencies/bparser-2.4.8-SNAPSHOT.jar,
- lib/dependencies/cliparser-2.4.8-SNAPSHOT.jar,
+ lib/dependencies/answerparser-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/bparser-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/cliparser-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/commons-codec-1.6.jar,
  lib/dependencies/commons-lang-2.6.jar,
  lib/dependencies/jgrapht-0.8.3.jar,
  lib/dependencies/jsr305-1.3.9.jar,
- lib/dependencies/ltlparser-2.4.8-SNAPSHOT.jar,
- lib/dependencies/parserbase-2.4.8-SNAPSHOT.jar,
- lib/dependencies/prologlib-2.4.8-SNAPSHOT.jar,
- lib/dependencies/unicode-2.4.8-SNAPSHOT.jar,
- lib/dependencies/commons-codec-1.6.jar,
+ lib/dependencies/ltlparser-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/parserbase-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/prologlib-2.4.12-SNAPSHOT.jar,
+ lib/dependencies/unicode-2.4.12-SNAPSHOT.jar,
  lib/dependencies/xmlpull-1.1.3.1.jar,
  lib/dependencies/xpp3_min-1.1.4c.jar,
  lib/dependencies/xstream-1.4.3.jar
diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml
index a8edde201a3de97737dd4a38086703bde5240114..a64882ef7a42135a4a34f5d12d6b38230c1960c2 100644
--- a/de.prob.ui/plugin.xml
+++ b/de.prob.ui/plugin.xml
@@ -183,7 +183,6 @@
             name="Consistencychecking">
       </command>
       
-      
       <command
       defaultHandler="de.prob.ui.operationview.DoubleClickBehaviorHandler"
       id="de.prob.ui.doubleclickbehaviour"
@@ -351,6 +350,11 @@
             id="de.prob.ui.newcore.export"
             name="Export for new Core">
       </command>
+      <command
+            defaultHandler="de.prob.ui.csp.StartCSPAnimationHandler"
+            id="de.prob.command.startCspAnimation"
+            name="Start CSP Animation">
+      </command>
    </extension>
    <extension
          point="org.eclipse.ui.handlers">
@@ -1134,6 +1138,33 @@
               style="push">
           </command>
       </menuContribution>
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu">
+         <command
+               commandId="de.prob.command.startCspAnimation"
+               label="Start CSP Animation"
+               style="push">
+         <visibleWhen>
+               <with
+                     variable="selection">
+                  <iterate
+                        operator="or">
+                     <and>
+                        <instanceof
+                              value="org.eclipse.core.resources.IResource">
+                        </instanceof>
+                        <test
+                              forcePluginActivation="true"
+                              property="org.eclipse.core.resources.extension"
+                              value="csp">
+                        </test>
+                     </and>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+      </menuContribution>
       
    </extension>
    <extension
diff --git a/de.prob2.feature/feature.xml b/de.prob2.feature/feature.xml
index b2dc420bf9559760fa14aef52939e9f5a917989a..a7826eec257b7d5c87ab89fba75ebd2b5dda4e5f 100644
--- a/de.prob2.feature/feature.xml
+++ b/de.prob2.feature/feature.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="de.prob2.feature"
-      label="ProB for Rodin2"
-      version="2.3.3.qualifier"
-      provider-name="HHU Düsseldorf STUPS Group">
-
-   <description url="http://www.stups.uni-duesseldorf.de/ProB">
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="de.prob2.feature"
+      label="ProB for Rodin2"
+      version="2.3.5.qualifier"
+      provider-name="HHU Düsseldorf STUPS Group">
+
+   <description url="http://www.stups.uni-duesseldorf.de/ProB">
       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 project Rodin. 
 Development is continued under the EU funded project Deploy and the DFG project Gepavas. 
-ProB has been successfully used on various industrial specifications and is now being used within Siemens.
-   </description>
-
-   <copyright>
-      (C) 2000-2011 Michael Leuschel (and many others) All rights reserved.
-   </copyright>
-
-   <license url="http://www.eclipse.org/org/documents/epl-v10.html">
+ProB has been successfully used on various industrial specifications and is now being used within Siemens.
+   </description>
+
+   <copyright>
+      (C) 2000-2011 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
@@ -220,63 +220,63 @@ 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="org.eclipse.ui" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.ui.views" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.core.databinding" version="1.2.0" match="compatible"/>
-      <import plugin="org.eclipse.jface.databinding" version="1.2.1" match="compatible"/>
-      <import plugin="org.eclipse.core.databinding.beans" version="1.1.1" match="compatible"/>
-      <import plugin="org.eclipse.gef" version="3.7.0" match="compatible"/>
-      <import plugin="de.prob.core" version="9.3.0" match="equivalent"/>
-      <import plugin="org.eventb.core" version="2.1.0"/>
-      <import plugin="org.rodinp.core" version="1.3.1"/>
-      <import plugin="de.prob.ui" version="7.3.0" match="equivalent"/>
-      <import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.core.expressions" version="3.4.101" match="compatible"/>
-      <import plugin="org.eclipse.gef" version="3.5.0" match="compatible"/>
-      <import plugin="org.eclipse.ui.navigator" version="3.5.0" match="greaterOrEqual"/>
-      <import plugin="de.bmotionstudio.gef.editor" version="5.4.0" match="equivalent"/>
-   </requires>
-
-   <plugin
-         id="de.bmotionstudio.gef.editor"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         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"
-         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"/>
-
-</feature>
+litigation.
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.views" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding" version="1.2.0" match="compatible"/>
+      <import plugin="org.eclipse.jface.databinding" version="1.2.1" match="compatible"/>
+      <import plugin="org.eclipse.core.databinding.beans" version="1.1.1" match="compatible"/>
+      <import plugin="org.eclipse.gef" version="3.7.0" match="compatible"/>
+      <import plugin="de.prob.core" version="9.3.0" match="equivalent"/>
+      <import plugin="org.eventb.core" version="2.1.0"/>
+      <import plugin="org.rodinp.core" version="1.3.1"/>
+      <import plugin="de.prob.ui" version="7.3.0" match="equivalent"/>
+      <import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.core.expressions" version="3.4.101" match="compatible"/>
+      <import plugin="org.eclipse.gef" version="3.5.0" match="compatible"/>
+      <import plugin="org.eclipse.ui.navigator" version="3.5.0" match="greaterOrEqual"/>
+      <import plugin="de.bmotionstudio.gef.editor" version="5.4.0" match="equivalent"/>
+   </requires>
+
+   <plugin
+         id="de.bmotionstudio.gef.editor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         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"
+         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"/>
+
+</feature>
diff --git a/tycho_build.gradle b/tycho_build.gradle
index 6ecc2f2214b82fd47e6a3cbd62cdc5b634b9009c..0bba9992b36ce437e7ce78d9b2ad8d561140d1ca 100644
--- a/tycho_build.gradle
+++ b/tycho_build.gradle
@@ -13,20 +13,32 @@
 apply plugin: 'base'
 
 import groovy.io.FileType
-tychoVersion = "0.14.1"
+project.ext.tychoVersion = "0.15.0"
+
+try{
+	excludeFromTychoBuild = excludeFromTychoBuild
+}catch(MissingPropertyException e){
+	project.ext.excludeFromTychoBuild = []
+}
+
+try{
+	excludeFromClassPath = excludeFromClassPath
+}catch(MissingPropertyException e){
+	project.ext.excludeFromClassPath = []
+}
 
 
 try{
 	workspacePath = workspacePath
 }catch(MissingPropertyException e){
-	workspacePath = ""
+	project.ext.workspacePath = ""
 }
 
 
 try{
 	dependencyFolder = dependencyFolder
 }catch(MissingPropertyException e){
-	dependencyFolder = "lib/dependencies/"			// Folder in each subproject where 
+	project.ext.dependencyFolder = "lib/dependencies/"			// Folder in each subproject where 
 }
 
 try{
@@ -47,8 +59,8 @@ try{
 	}
 
 	
-	groupID = "group"
-	for( i = 0; i < folderNames.size(); i++ ){
+	project.ext.groupID = "group"
+	for( int  i = 0; i < folderNames.size(); i++ ){
 		
 		if( folderNames[i] ==~ /.*\.[rR]eleng/ ){
 			groupID = folderNames[i]
@@ -64,8 +76,8 @@ try{
 	features = features
 }catch(MissingPropertyException e){
 	
-	features = []
-	for( i = 0; i < subprojects.name.size(); i++ ){
+	project.ext.features = []
+	for( int i = 0; i < subprojects.name.size(); i++ ){
 		if( subprojects.name[i] ==~ /.*\.[fF]eature/ ){
 			features.add( subprojects.name[i] )
 		}
@@ -77,13 +89,13 @@ try{
 try{
 	repositoryName = repositoryName
 }catch(MissingPropertyException e){
-	repositoryName = groupID+".repository"
+	project.ext.repositoryName = groupID+".repository"
 }
 
 try{
 	parentID = parentID
 }catch(MissingPropertyException e){
-	parentID = groupID+".parent"
+	project.ext.parentID = groupID+".parent"
 }
 
 Boolean noDescriptions = false					// in case of using own CategoryDescription Map
@@ -91,21 +103,21 @@ Boolean noDescriptions = false					// in case of using own CategoryDescription M
 try{
 	categoryDescriptions = categoryDescriptions
 }catch(MissingPropertyException e){
-	categoryDescriptions = [ [:],[:] ]		// label and descriptions of the features
+	project.ext.categoryDescriptions = [ [:],[:] ]		// label and descriptions of the features
 	noDescriptions = true
 }							// 	categoryDescriptions	=	[["feature": "labelName","feature2": "label"],["feature": "featureDescription","feature2": "feature2Description"]]		// label and descriptions of the features
 
 try{
 	targetRepositories = targetRepositories
 }catch(MissingPropertyException e){
-	targetRepositories = ["http://download.eclipse.org/releases/indigo/"]
+	project.ext.targetRepositories = ["http://download.eclipse.org/releases/indigo/"]
 }
 
 try{
 	buildProduct = buildProduct
 	
 }catch(MissingPropertyException e){
-	buildProduct = false
+	project.ext.buildProduct = false
 }
 
 
@@ -307,6 +319,7 @@ subprojects {
 	task collectDependencies(type: Copy) {
 
 		   	from configurations.compile
+			from configurations.runtime
 	   	
 			into "${dependencyFolder}" 	
 			
@@ -315,32 +328,32 @@ subprojects {
 	task setClassPath(dependsOn: 'collectDependencies')<<{
 		
 		description = "\tAdds all your Dependencies from your local lib folder in each project to it's classpath"
-		//if(project.name ==~ /birkhoff.bundle.*/){
-		def dependencyList = []
-		try{
-			def dir = new File(workspacePath+project.name+"/"+dependencyFolder).eachFile() { file->  		
-			    if( !(file.getName() ==~/.*\.txt/) ){
-					dependencyList << file.getName()  
+		if( excludeFromClassPath.every{ it != project.name }){
+			def dependencyList = []
+			try{
+				def dir = new File(workspacePath+project.name+"/"+dependencyFolder).eachFile() { file->  		
+			    	if( !(file.getName() ==~/.*\.txt/) ){
+						dependencyList << file.getName()  
+					}
 				}
-			}
 	
-			if(features.every{ it != project.name }){	
-				boolean BundleClassPathPresent = checkForRunTimeLibs(project.name)
-				for(int icp = 0; icp < dependencyList.size; icp++){
-					addLibToCP(project.name, dependencyList[icp])	//Adds Lib to .classPath file
+				if(features.every{ it != project.name }){	
+					boolean BundleClassPathPresent = checkForRunTimeLibs(project.name)
+					for(int icp = 0; icp < dependencyList.size; icp++){
+						addLibToCP(project.name, dependencyList[icp])	//Adds Lib to .classPath file
 					
-					if(!BundleClassPathPresent){					// Adds Lib to Manifest File
-						createRunTimeLib(dependencyList[icp], project.name)
-						BundleClassPathPresent = true
-					}else{
-						if(!checkRunTimeLib(dependencyList[icp], project.name)){		// if library not present add it to RunTimeLibrary
-							addRunTimeLib( dependencyList[icp], project.name)
+						if(!BundleClassPathPresent){					// Adds Lib to Manifest File
+							createRunTimeLib(dependencyList[icp], project.name)
+							BundleClassPathPresent = true
+						}else{
+							if(!checkRunTimeLib(dependencyList[icp], project.name)){		// if library not present add it to RunTimeLibrary
+								addRunTimeLib( dependencyList[icp], project.name)
+							}
 						}
 					}
-				}
-				/*dependencyList.each{ dep->
+					/*dependencyList.each{ dep->
 					println project.name+": "+ dep	// could still be usefull for debugging, that's why it's not deleted
-				}*/	
+					}*/	
 			}
 			def warningReadMe = new File(workspacePath+project.name+"/"+dependencyFolder+"_README.txt")
 			warningReadMe.delete()
@@ -349,10 +362,10 @@ subprojects {
 			warningReadMe << "If any error concerning missing dependencies should occur please run 'gradle deleteFromClassPath setClassPath' in your workspace folder from your shell."
 			
 			
-		}catch(Exception e){
-			println project.name+" has no dependencies in '${dependencyFolder}' defined: Classpath will not be changed"
-		}
-	//}// if projectAbfrage
+			}catch(Exception e){
+				println project.name+" has no dependencies in '${dependencyFolder}' defined: Classpath will not be changed"
+			}
+		}// if exclude projectAbfrage
 		
 	}// setClassPath
 	
@@ -399,9 +412,9 @@ subprojects {
 		
 		
 		if(features.every{ it != project.name }){		// Generating Poms for sub projects except features
-			content = new File(workspacePath+"${project.name}/META-INF/MANIFEST.MF").getText("UTF-8") 
+			def content = new File(workspacePath+"${project.name}/META-INF/MANIFEST.MF").getText("UTF-8") 
 
-	 		printFileLine = { 
+	 		def printFileLine = { 
 				if(  it ==~ /Bundle-Version.+qualifier/ ){
 					 versionNumber = it.substring(16) // possibile error: cuts off first 16 chars 
 			
@@ -490,7 +503,11 @@ task createParent() << {
 	f << endRepos()
 	f << moduleStart()
 	for(int i = 0; i < numberOfProjects(); i++){
-		f << module(projects(i))
+		
+		if( excludeFromTychoBuild.every{ it != projects(i) } ){
+		
+			f << module(projects(i))
+		}
 	}
 	f << module(repositoryName)
 	f << endParent()
@@ -556,6 +573,11 @@ task completeInstall(dependsOn: [subprojects.collectDependencies, createPoms], t
 	commandLine 'mvn', 'install', '-f', workspacePath+parentID+'/pom.xml'
 }
 
+task tycho(dependsOn: [createPoms] , type:Exec) {
+	description = "\tExecutes a 'mvn install' of the parent pom.xml and auto-generates Tycho Poms"	
+	commandLine 'mvn', 'install', '-f', workspacePath+parentID+'/pom.xml'
+}
+
 
 //---     Defining Tycho POM parts			--//