Refectoring
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartViewPart.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartViewPart.java
index dfbb746..5db9f91 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartViewPart.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartViewPart.java
@@ -25,37 +25,43 @@
  * The Class ChartViewPart.
  */
 public class ChartViewPart extends EditPartViewPart {
-    CachedColorProvider seriesColorProvider = new CachedColorProvider();
 
-    public RootEditPart createRoot() {
-        return new ScalableRootEditPart() {
-            public void refresh() {
-                ((EditPart) getChildren().get(0)).refresh();
-            }
-        };
-    }
+	public static final String VIEW_ID = "org.eclipse.amp.view.ChartView";
 
-    /**
-     * 
-     * @see org.eclipse.amp.agf.gef.EditPartViewPart#createModelListeners()
-     */
-    public void createModelListeners() {
-        // super.createModelListeners();
-        // getRootListener().setWaitForUpdate(false);
-    }
+	CachedColorProvider seriesColorProvider = new CachedColorProvider();
 
-    @Override
-    public EditPartFactory createFactory(Object contents) {
-        return new EditPartFactory() {
-            public EditPart createEditPart(EditPart context, Object object) {
-                ChartEditPart chartPart = new ChartEditPart();
+	@Override
+	public RootEditPart createRoot() {
+		return new ScalableRootEditPart() {
+			@Override
+			public void refresh() {
+				((EditPart) getChildren().get(0)).refresh();
+			}
+		};
+	}
 
-                chartPart.setSeriesColorProvider(seriesColorProvider);
+	/**
+	 * 
+	 * @see org.eclipse.amp.agf.gef.EditPartViewPart#createModelListeners()
+	 */
+	@Override
+	public void createModelListeners() {
+		// super.createModelListeners();
+		// getRootListener().setWaitForUpdate(false);
+	}
 
-                chartPart.setModel(getModel());
-                return chartPart;
-            };
-        };
-    }
+	@Override
+	public EditPartFactory createFactory(Object contents) {
+		return new EditPartFactory() {
+			public EditPart createEditPart(EditPart context, Object object) {
+				ChartEditPart chartPart = new ChartEditPart();
+
+				chartPart.setSeriesColorProvider(seriesColorProvider);
+
+				chartPart.setModel(getModel());
+				return chartPart;
+			}
+		};
+	}
 
 }
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
index 6c5e909..4eef267 100644
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
@@ -3,8 +3,7 @@
 Bundle-Name: Test AXF IDE
 Bundle-SymbolicName: org.eclipse.amp.axf.ide.test;singleton:=true
 Bundle-Version: 0.9.0
-Bundle-Activator: org.eclipse.amp.axf.ide.test.Activator
-Bundle-Vendor: eclipse.org
+Fragment-Host: org.eclipse.amp.axf.ide
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.amp.axf.ide,
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties
index d16ffb7..62a7813 100644
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties
@@ -3,5 +3,6 @@
 bin.includes = META-INF/,\
                .,\
                res/,\
-               about.html
+               about.html,\
+               fragment.xml
 src.includes = res/
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/fragment.xml b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/fragment.xml
new file mode 100644
index 0000000..2812aef
--- /dev/null
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/fragment.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            allowMultiple="true"
+            class="org.eclipse.amp.axf.ide.EmtyView"
+            id="org.eclipse.amp.axf.ide.EmtyView"
+            name="EmtyView"
+            restorable="true">
+      </view>
+   </extension>
+
+</fragment>
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EmtyView.java b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EmtyView.java
new file mode 100644
index 0000000..1a8662a
--- /dev/null
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EmtyView.java
@@ -0,0 +1,7 @@
+package org.eclipse.amp.axf.ide;
+
+import org.eclipse.amp.axf.view.ModelViewPart;
+
+public class EmtyView extends ModelViewPart {
+	public final static  String VIEW_ID = "org.eclipse.amp.axf.ide.EmtyView";
+}
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/ModelViewManagerTest.java b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/ModelViewManagerTest.java
new file mode 100644
index 0000000..1f6f9d2
--- /dev/null
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/ModelViewManagerTest.java
@@ -0,0 +1,82 @@
+package org.eclipse.amp.axf.ide;
+
+import static org.junit.Assert.fail;
+
+import org.ascape.model.Scape;
+import org.eclipse.amp.agf.gef.ModelEditPartInput;
+import org.eclipse.amp.axf.core.IEngine;
+import org.eclipse.amp.axf.core.IModel;
+import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;
+import org.eclipse.amp.escape.ide.EclipseEscapeRunner;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ModelViewManagerTest {
+
+	private ModelViewManager classToTest;
+
+	private ModelEditPartInput modelInput;
+
+	@Before
+	public void setUp() throws Exception {
+		classToTest = ModelViewManager.createNewInstance();
+		EclipseEscapeRunner runner = new EclipseEscapeRunner() {
+			@Override
+			public void close() {
+				//
+			}
+		};
+		SimpleModel model = new SimpleModel(new Scape());
+		model.engine = runner;
+		classToTest.register(model, runner);
+		modelInput = new ModelEditPartInput(model, null);
+	}
+
+	/**
+	 * The Method should also be callable if the main Thread is the caller Bug: The Application has a deadlock if the main
+	 * Thread call the method
+	 */
+	@Test
+	public void testCreateViewPart() {
+		ObserverThread thread = new ObserverThread();
+		thread.mainThread = Thread.currentThread();
+		thread.start();
+		classToTest.createViewPart(EmtyView.VIEW_ID, modelInput, "viewName");
+		if(thread.mainThreadInterrupted){
+			fail("Deadlock in createViewPart?");
+		}
+		thread.interrupt();
+	}
+
+	private class ObserverThread extends Thread{
+		Thread mainThread;
+		boolean mainThreadInterrupted = false;
+		public ObserverThread() {
+			// 
+		}
+		@Override
+		public void run() {
+			try {
+				sleep(10000);
+				mainThreadInterrupted = true;
+				mainThread.interrupt();
+			} catch (InterruptedException e) {
+				//
+			}
+		}
+	}
+	
+	private class SimpleModel extends ScapeWrapperModel implements IModel {
+		IEngine engine;
+
+		public SimpleModel(Scape scape) {
+			super(scape);
+		}
+
+		@Override
+		public IEngine getEngine() {
+			return engine;
+		}
+
+	}
+}
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
index 0ad3359..5545dd6 100644
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
@@ -148,6 +148,7 @@
 		}
 
 		public void addModelListener(ILifeCycleListener listener) {
+			//
 		}
 
 		public Collection<ILifeCycleListener> getModelListeners() {
@@ -155,6 +156,7 @@
 		}
 
 		public void removeModelListener(ILifeCycleListener listener) {
+			//
 		}
 
 		public String getTimeDescription() {
@@ -180,58 +182,52 @@
 		public IEngine getEngine() {
 			return new IEngine() {
 
-				@Override
 				public void stop() {
+					//
 				}
 
-				@Override
 				public void setUpdateGranularity(ITimeGranularity granularity) {
+					//
 				}
 
-				@Override
 				public void observationComplete(ILifeCycleListener observer) {
+					//
 				}
 
-				@Override
 				public boolean isThreadAlive() {
 					return false;
 				}
 
-				@Override
 				public boolean isRunning() {
 					return false;
 				}
 
-				@Override
 				public boolean isPaused() {
 					return false;
 				}
 
-				@Override
 				public boolean isCloseRequested() {
 					return false;
 				}
 
-				@Override
 				public ITimeGranularity getUpdateGranularity() {
 					return null;
 				}
 
-				@Override
 				public IObservationProvider getModel() {
 					return DummyModel.this;
 				}
 
-				@Override
 				public void control(EngineControl ModelControl) {
+					//
 				}
 
-				@Override
 				public void closeFinally() {
+					//
 				}
 
-				@Override
 				public void close() {
+					//
 				}
 			};
 		}
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/src/org/eclipse/amp/axf/ide/ModelViewManager.java b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/src/org/eclipse/amp/axf/ide/ModelViewManager.java
index 5fe76e2..6411f28 100644
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/src/org/eclipse/amp/axf/ide/ModelViewManager.java
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/src/org/eclipse/amp/axf/ide/ModelViewManager.java
@@ -56,8 +56,6 @@
 
 	private static ModelViewManager instance;
 
-	boolean updated;
-
 	String priorPerspectiveID;
 
 	Map<IModel, List<IViewPart>> viewsForModel;
@@ -107,6 +105,16 @@
 		return instance;
 	}
 
+	/**
+	 * Only used for Unittests.
+	 * 
+	 * @return
+	 */
+	static ModelViewManager createNewInstance() {
+		instance = null;
+		return getInstance();
+	}
+
 	private final class PartCreator implements Runnable {
 		private final String name;
 
@@ -116,7 +124,7 @@
 
 		IViewPart part;
 
-		private PartCreator(String name, ModelInput editorInput, String id) {
+		PartCreator(String name, ModelInput editorInput, String id) {
 			this.name = name;
 			this.editorInput = editorInput;
 			this.id = id;
@@ -149,13 +157,12 @@
 						}
 					}.start();
 				} else if (part instanceof ErrorViewPart) {
+					//
 				} else {
 					throw new RuntimeException("Couldn't create model view part.");
 				}
 			} catch (org.eclipse.ui.PartInitException e) {
 				throw new RuntimeException("Couldn't instantiate model view " + this, e);
-			} finally {
-				updated = true;
 			}
 		}
 
@@ -168,7 +175,7 @@
 	 * 
 	 * @author mparker
 	 */
-	private final class ActivationListener implements IPartListener {
+	final class ActivationListener implements IPartListener {
 		private void assignPart(final IWorkbenchPart part) {
 			if (part instanceof IModelPart && ((IModelPart) part).getAdapter(IModel.class) != null) {
 				new Thread() {
@@ -201,6 +208,7 @@
 		}
 
 		public void partDeactivated(IWorkbenchPart part) {
+			//
 		}
 
 		public void partOpened(IWorkbenchPart part) {
@@ -393,16 +401,8 @@
 	 *          the name
 	 */
 	public IViewPart createViewPart(final String id, final ModelInput editorInput, final String name) {
-		updated = false;
 		PartCreator creator = new PartCreator(name, editorInput, id);
-		PlatformUI.getWorkbench().getDisplay().asyncExec(creator);
-		while (!updated) {
-			try {
-				Thread.sleep(50);
-
-			} catch (InterruptedException e) {
-			}
-		}
+		PlatformUI.getWorkbench().getDisplay().syncExec(creator);
 		return creator.getPart();
 	}
 
@@ -487,6 +487,7 @@
 
 		wb.addWorkbenchListener(new IWorkbenchListener() {
 			public void postShutdown(IWorkbench workbench) {
+				//
 			}
 
 			public boolean preShutdown(IWorkbench workbench, boolean forced) {
@@ -572,8 +573,7 @@
 	 * @param adaptableObject
 	 * @param adapterType
 	 * @return
-	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
-	 *      java.lang.Class)
+	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
 	 */
 	public Object getAdapter(Object adaptableObject, Class adapterType) {
 		if (adapterType == IEngine.class && adaptableObject instanceof IModel) {
@@ -592,6 +592,7 @@
 	 * @return
 	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
 	 */
+	@SuppressWarnings("rawtypes")
 	public Class[] getAdapterList() {
 		return new Class[] { IEngine.class, IModel.class };
 	}
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
index 34c47ff..3264fe6 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.amf.ide/src/org/eclipse/amp/escape/view/EMFDataOutputView.java
@@ -70,6 +70,7 @@
 	private ResourceSet resourceSet;
 
 	private Catalog catalog;
+
 	private Run currentRun;
 
 	Map<DataSeries, Measurement> measureForSeries = new HashMap<DataSeries, Measurement>();
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/ascape/view/vis/ChartView.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/ascape/view/vis/ChartView.java
index b670d83..234f097 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/ascape/view/vis/ChartView.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/ascape/view/vis/ChartView.java
@@ -15,6 +15,7 @@
 import org.ascape.util.data.DataSelection;
 import org.eclipse.amp.agf.chart.CachedColorProvider;
 import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartViewPart;
 import org.eclipse.amp.escape.ascape.view.EditPartScapeView;
 import org.eclipse.gef.EditPart;
 import org.eclipse.swt.graphics.Color;
@@ -29,7 +30,7 @@
     CachedColorProvider seriesColorProvider = new CachedColorProvider();
 
     public ChartView() {
-        super("org.eclipse.amp.view.ChartView", null, "Chart View");
+        super(ChartViewPart.VIEW_ID, null, "Chart View");
     }
 
     public EditPart createEditPart(EditPart context, Object model) {
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java
index 4ef6591..01a1e26 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ascape.chart/src/org/eclipse/amp/escape/ascape/chart/ChartCustomizer.java
@@ -25,8 +25,6 @@
 import org.eclipse.amp.agf.chart.ChartEditPart;
 import org.eclipse.amp.agf.chart.ChartViewPart;
 import org.eclipse.amp.escape.ascape.wrap.ScapeWrapperModel;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.draw2d.SWTGraphics;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.CheckboxCellEditor;
@@ -44,24 +42,19 @@
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
 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.Display;
 import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IPartListener;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.statushandlers.StatusManager;
 
-// TODO: Auto-generated Javadoc
-/**
- * The Class ChartCustomizer.
- */
+
 public class ChartCustomizer extends ViewPart {
+	
+	public static final String VIEW_ID = "org.eclipse.amp.view.customizer.Chart";
 
 	protected Scape scape;
 	protected DataSelection dataSelection;
@@ -148,7 +141,7 @@
 		protected CellEditor getCellEditor(final Object element) {
 			CheckboxCellEditor checkboxCellEditor = checkBoxFor.get(element);
 			if (checkboxCellEditor == null) {
-				checkboxCellEditor = new CheckboxCellEditor(selectTable
+				checkboxCellEditor = new CheckboxCellEditor(getSelectTable()
 						.getTable());
 			}
 			return checkboxCellEditor;
@@ -185,13 +178,13 @@
 				getSite().getShell().getDisplay().syncExec(new Runnable() {
 					public void run() {
 						chartEditPart.refresh();
-					};
+					}
 				});
 				getSite().getShell().getDisplay().asyncExec(new Runnable() {
 					public void run() {
-						selectTable.getTable().deselectAll();
-						selectTable.refresh(true);
-					};
+						getSelectTable().getTable().deselectAll();
+						getSelectTable().refresh(true);
+					}
 				});
 			}
 		}
@@ -222,6 +215,7 @@
 		 * @return
 		 * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object)
 		 */
+		@Override
 		public String getText(Object element) {
 			return null;
 		}
@@ -263,6 +257,7 @@
 		 * @return
 		 * @see org.eclipse.jface.viewers.ColumnLabelProvider#getBackground(java.lang.Object)
 		 */
+		@Override
 		public Color getBackground(Object element) {
 			DataSeries dataSeries = getDataSeries(element);
 			if (dataSeries == null) {
@@ -291,6 +286,7 @@
 	 * @param parent
 	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
 	 */
+	@Override
 	public void createPartControl(Composite parent) {
 		// Overall
 		control = new Composite(parent, SWT.HORIZONTAL);
@@ -370,15 +366,19 @@
 			}
 
 			public void partBroughtToTop(IWorkbenchPart part) {
+				//
 			}
 
 			public void partClosed(IWorkbenchPart part) {
+				//
 			}
 
 			public void partDeactivated(IWorkbenchPart part) {
+				//
 			}
 
 			public void partOpened(IWorkbenchPart part) {
+				//
 			}
 
 		});
@@ -403,6 +403,7 @@
 				SWT.LEFT);
 		statNameColumn.getColumn().setText("Name");
 		statNameColumn.setLabelProvider(new ColumnLabelProvider() {
+			@Override
 			public String getText(Object element) {
 				return ((StatCollector) element).getName();
 			}
@@ -466,15 +467,7 @@
 	 */
 	@Override
 	public void setFocus() {
-	}
-
-	/**
-	 * Sets the action bars.
-	 * 
-	 * @param actionBars
-	 *            the new action bars
-	 */
-	public void setActionBars(IActionBars actionBars) {
+		//
 	}
 
 	public ChartEditPart getChartEditPart() {
@@ -484,4 +477,8 @@
 	public void refresh() {
 		selectTable.refresh();
 	}
+	
+	TableViewer getSelectTable() {
+		return selectTable;
+	}
 }
\ No newline at end of file
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java
index f79165b..602f9c6 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.ide/src/org/eclipse/amp/escape/ide/EclipseEscapeRunner.java
@@ -59,19 +59,23 @@
 
 	protected IProgressMonitor modelMonitor;
 
-	IModel model;
+	private IModel model;
 
-	IProject project;
+	private IProject project;
 
 	private IStatus finishStatus = Status.OK_STATUS;
 
-	TimeGranularity updateGranularity = TimeGranularity.DEFAULT_GRANULARITY;
+	private ITimeGranularity updateGranularity = TimeGranularity.DEFAULT_GRANULARITY;
 
 	public final static long KILL_AFTER_NO_RESPONSE_TIME = 5000;
 
 	// would be nice to have this in Ascape proper but not worth IP submission
 	private boolean closeOnStop = false;
 
+	boolean modelShutdown = false;
+
+	private Job escapeRun;
+
 	/**
 	 * Open.
 	 * 
@@ -117,6 +121,26 @@
 	 *          true if this method should only return on execution completion.
 	 */
 	public void open(final IResource projectResource, final String modelClassName, String modelName, String[] args, boolean block) {
+		openNotStart(projectResource, modelClassName, modelName, args);
+		start();
+		if (block) {
+			while (!modelShutdown) {
+				try {
+					Thread.sleep(30L);
+				} catch (InterruptedException e) {
+					//
+				}
+			}
+		}
+	}
+	/**
+	 * Open all Files and initialize the Simulation, but don't run it.
+	 * @param projectResource
+	 * @param modelClassName
+	 * @param modelName
+	 * @param args
+	 */
+	public void openNotStart(final IResource projectResource, final String modelClassName, String modelName, String[] args){
 		this.project = projectResource.getProject();
 		setStartOnOpen(false);
 		setAutoRestart(false);
@@ -162,17 +186,8 @@
 				model.addModelListener(listenerWrapper);
 			}
 		}
-		start();
-		if (block) {
-			while (!modelShutdown) {
-				try {
-					Thread.sleep(30L);
-				} catch (InterruptedException e) {
-				}
-			}
-		}
 	}
-
+	
 	protected void addConsole(String modelName) {
 		final MessageConsole eclipseConsole = new MessageConsole("Run " + modelName, null);
 		getEnvironment().getConsole().setIMessageStream(new MessageAdapter(eclipseConsole));
@@ -242,10 +257,6 @@
 		escapeRun.schedule();
 	}
 
-	boolean modelShutdown = false;
-
-	private Job escapeRun;
-
 	/**
 	 * 
 	 * @see org.ascape.runtime.Runner#close()
@@ -284,6 +295,7 @@
 				elapsed += 30;
 			}
 		} catch (InterruptedException e) {
+			//
 		}
 		if (modelMonitor != null) {
 			modelMonitor.setTaskName("Closed");
@@ -439,7 +451,7 @@
 	 * @see org.eclipse.amp.axf.core.IEngine#setUpdateGranularity(org.eclipse.amp.axf.time.ITimeGranularity)
 	 */
 	public void setUpdateGranularity(ITimeGranularity granularity) {
-		this.updateGranularity = (TimeGranularity) granularity;
+		this.updateGranularity = granularity;
 	}
 
 	public IProject getExecutingProject() {
@@ -484,5 +496,8 @@
 	public boolean isThreadAlive() {
 		return isModelThreadAlive();
 	}
-
+	
+	public Job getEscapeRun() {
+		return escapeRun;
+	}
 }