diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 725c11e..311591c 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -73,6 +73,7 @@
 import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
 import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
 import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
 import org.eclipse.graphiti.mm.pictograms.Diagram;
@@ -140,7 +141,7 @@
 	
 	private Bpmn2Preferences preferences;
 	private TargetRuntime targetRuntime;
-	private Hashtable<BPMNDiagram, GraphicalViewer> mapDiagramToViewer = new Hashtable<BPMNDiagram, GraphicalViewer>();
+//	private Hashtable<BPMNDiagram, GraphicalViewer> mapDiagramToViewer = new Hashtable<BPMNDiagram, GraphicalViewer>();
 
 	protected DiagramEditorAdapter editorAdapter;
 	
@@ -549,37 +550,42 @@
 		if (bpmnDiagram==null)
 			bpmnDiagram = getModelHandler().getDefinitions().getDiagrams().get(0);
 
-		if (bpmnDiagram!=null) {
-			GraphicalViewer viewer = getGraphicalViewer();
-			mapDiagramToViewer.put(bpmnDiagram, viewer);
-		}
+//		if (bpmnDiagram!=null) {
+//			GraphicalViewer viewer = getGraphicalViewer();
+//			mapDiagramToViewer.put(bpmnDiagram, viewer);
+//		}
 		return bpmnDiagram;
 	}
 	
 	public void setBpmnDiagram(final BPMNDiagram bpmnDiagram) {
-//		if (this.bpmnDiagram == bpmnDiagram)
-//			return;
+		IDiagramTypeProvider dtp = getDiagramTypeProvider();
 		
-		GraphicalViewer viewer = mapDiagramToViewer.get(bpmnDiagram);
 		// do we need to create a new Diagram or is this already in the model?
 		Diagram oldDiagram = null;
 		Diagram diagram = null;
-		final Resource resource = getDiagramTypeProvider().getDiagram().eResource();
-		for (EObject o : resource.getContents()) {
-			if (o instanceof Diagram) {
-				Diagram d = (Diagram)o;
-				if (BusinessObjectUtil.getFirstElementOfType(d, BPMNDiagram.class) == bpmnDiagram) {
-					oldDiagram = d;
-					break;
+		ResourceSet resourceSet = getResourceSet();
+		if (resourceSet!=null) {
+			for (Resource r : resourceSet.getResources()) {
+				for (EObject o : r.getContents()) {
+					if (o instanceof Diagram) {
+						Diagram d = (Diagram)o;
+						if (BusinessObjectUtil.getFirstElementOfType(d, BPMNDiagram.class) == bpmnDiagram) {
+							oldDiagram = d;
+							break;
+						}
+					}
 				}
+				if (oldDiagram!=null)
+					break;
 			}
 		}
 		
 		if (oldDiagram==null) {
 			// create a new one
-			String typeId = getDiagramTypeProvider().getDiagram().getDiagramTypeId();
+			String typeId = dtp.getDiagram().getDiagramTypeId();
 			final Diagram newDiagram = Graphiti.getCreateService().createDiagram(typeId, bpmnDiagram.getName(), true);
-			final IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
+			final IFeatureProvider featureProvider = dtp.getFeatureProvider();
+			final Resource resource = dtp.getDiagram().eResource();
 			TransactionalEditingDomain domain = getEditingDomain();
 			domain.getCommandStack().execute(new RecordingCommand(domain) {
 				protected void doExecute() {
@@ -598,7 +604,7 @@
 		// set the new Diagram in the DTP and refresh graphical viewer
 		getRefreshBehavior().initRefresh();
 		setPictogramElementsForSelection(null);
-		getDiagramTypeProvider().init(diagram, this);
+		dtp.init(diagram, this);
 //		if (viewer!=null)
 //			setGraphicalViewer(viewer);
 		getGraphicalViewer().setContents(diagram);
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
index c9335a3..9194362 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
@@ -22,6 +22,7 @@
 import org.eclipse.bpmn2.Definitions;
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.modeler.ui.util.PropertyUtil;
 import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.command.Command;
@@ -55,11 +56,13 @@
 import org.eclipse.swt.custom.CTabFolder2Listener;
 import org.eclipse.swt.custom.CTabFolderEvent;
 import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.part.EditorPart;
 import org.eclipse.ui.part.FileEditorInput;
@@ -314,6 +317,8 @@
 
 			this.setActivePage(pageIndex);
 			updateTabs();
+			
+//			dumpTabWidgets();
 		}
 		catch (Exception e) {
 			e.printStackTrace();
@@ -323,13 +328,21 @@
 	protected void removeDesignPage(BPMNDiagram bpmnDiagram) {
 		int pageIndex = bpmnDiagrams.indexOf(bpmnDiagram);
 		if (pageIndex>0) {
+			// go back to "Design" page - the only page that can't be removed
+			setActivePage(0);
+			
 			IEditorPart editor = getEditor(pageIndex);
 			if (editor instanceof DesignEditor) {
 				((DesignEditor)editor).disposeBpmnDiagram(bpmnDiagram);
 			}
-			CTabItem item = tabFolder.getItem(pageIndex);
-			item.setControl(null);
+			
+			// need to manage this ourselves so that the CTabFolder doesn't
+			// dispose our editor site (a child of the CTabItem.control)
+			tabFolder.getItem(pageIndex).setControl(null);
+			
 			removePage(pageIndex);
+			
+			tabFolder.getSelection().getControl().setVisible(true);
 		}
 	}
 	
