diff --git a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
index 2e134bbdbfe2e45a678bf7fea3516bb1104d9a0f..b9f7194b6c271a84dc5615ce6df02a6a88eef5f8 100644
--- a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
+++ b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF
@@ -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/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml
index f1d465afcd7efc7c5ebae8ca9f8eeb8541137848..3a5e5027a79b707f8aef77b52a444de76b203556 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
@@ -336,10 +346,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">
@@ -399,270 +405,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.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/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 30078bbe6752be062971f171cfbbf64b1af54e56..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,12 +549,14 @@ 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);
+		}
 	}
 
 	public Map<String, SchedulerEvent> getEvents() {
@@ -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..11fa44fc0d621e8e574f762b3d7bcb1dcc554341 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);
 	}
 
@@ -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;
 	}
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..2e33d00a09ac400c41482e1726fb11990b6c2c3e 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;
@@ -152,8 +154,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 d03fa3f9aa13d32d0b6efb38bfb3319bb3474b01..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,7 +12,6 @@ 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.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
@@ -31,10 +30,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.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.edit.PredicateEditingSupport;
@@ -48,202 +47,121 @@ import de.bmotionstudio.gef.editor.util.BMotionWizardUtil;
 
 public class WizardObserverCSwitchCoordinates extends ObserverWizard {
 
-	// private String lastChangedControlID;
+	private TableViewer tableViewer;
 
-	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);
+	@Override
+	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);
+			}
+		});
+
+		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);
+			}
+		});
 
-			setControl(container);
+		return container;
 
-		}
 	}
 
-	public WizardObserverCSwitchCoordinates(final BControl bcontrol,
-			final Observer bobserver) {
-		super(bcontrol, bobserver);
-		addPage(new ObserverCSwitchCoordinatesPage(
-				"ObserverCToggleCoordinatesPage"));
+	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;
-	}
+	// @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) {
@@ -255,11 +173,11 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard {
 	// }
 	// }
 
-	@Override
-	public boolean performCancel() {
-		// restorePreview();
-		return super.performCancel();
-	}
+	// @Override
+	// public boolean performCancel() {
+	// // restorePreview();
+	// return super.performCancel();
+	// }
 
 	@Override
 	public Point getSize() {
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 5369bc5cc1f4a17b9347fd5722a6336c94c10412..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,7 +16,6 @@ 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;
@@ -38,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;
@@ -62,326 +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;
+	@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);
+			}
+		});
 
-		protected ObserverListenOperationByPredicatePage(final String pageName) {
-			super(pageName, getObserver());
-		}
+		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));
+			}
+		});
 
-		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()) {
-			//
-			// String attribute = obj.getAttribute();
-			// Object value = obj.getValue();
-			// control.setAttributeValue(attribute, value,
-			// true, false);
-			//
-			// lastChangedAttributeID = attribute;
-			//
-			// }
-			//
-			// }
-			// }
-			//
-			// });
-
-			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));
-				}
-			});
+		return container;
 
-		}
+	}
 
-		private class AttributeObserverValueEditing extends EditingSupport {
+	private class AttributeObserverValueEditing extends EditingSupport {
 
-			private ComboBoxViewerCellEditor cellEditor = null;
+		private ComboBoxViewerCellEditor cellEditor = null;
 
-			public AttributeObserverValueEditing(TableViewer cv) {
-				super(cv);
-			}
+		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"));
-	}
-
-	@Override
-	public boolean performCancel() {
-		// getBControl().restoreDefaultValue(lastChangedAttributeID);
-		return super.performCancel();
+	public WizardObserverListenOperationByPredicate(Shell shell,
+			BControl bcontrol, Observer bobserver) {
+		super(shell, bcontrol, bobserver);
 	}
 
-	@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 be6162187aec2fd33695432d7f0d999fc13e677c..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
@@ -37,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;
@@ -62,255 +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
@@ -318,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,
@@ -413,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 88248dcb8a2870351498906122aa15234c3fad4b..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,7 +12,6 @@ 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.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
@@ -27,15 +26,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.edit.PredicateEditingSupport;
@@ -49,195 +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
@@ -256,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) {
@@ -269,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;
 		}
 
@@ -289,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 9c15caea177633be286db950970287681dfcd9d3..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,7 +12,6 @@ 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.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableColorProvider;
 import org.eclipse.jface.viewers.ITableFontProvider;
@@ -27,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;
@@ -52,177 +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
@@ -276,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 dc2f797bde2deda96d0d61270e0b35de4e5d54e3..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,6 +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.BControlPropertyConstants;
 import de.bmotionstudio.gef.editor.model.Visualization;
 import de.bmotionstudio.gef.editor.observer.IObserverListener;
 import de.bmotionstudio.gef.editor.observer.Observer;
@@ -33,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();
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/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 6f9b9044c4fc87feb207c2ff6f15b5ec5cd917f1..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;
@@ -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.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.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