diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
index 43b4a4ded8e..f6a2007482f 100755
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/MulticoreVisualizer.java
@@ -1132,12 +1132,13 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer implements IPin
 		DsfSession session = DsfSession.getSession(sessionId);
 
 		if (session != null) {
-			fDataModel = new VisualizerModel(sessionId);
+			final VisualizerModel model = new VisualizerModel(sessionId);
+			fDataModel = model;
 			fTargetData.getCPUs(m_sessionState, new DataRequestMonitor<ICPUDMContext[]>(session.getExecutor(), null) {
 				@Override
 				protected void handleCompleted() {
 					ICPUDMContext[] cpuContexts = isSuccess() ? getData() : null;
-					getCPUsDone(cpuContexts, fDataModel);
+					getCPUsDone(cpuContexts, model);
 				}
 			});
 		}
@@ -1146,8 +1147,8 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer implements IPin
 	/** Invoked when getModel() request completes. */
 	@ConfinedToDsfExecutor("getSession().getExecutor()")
 	public void getVisualizerModelDone(VisualizerModel model) {
-		fDataModel.setLoadMetersEnabled(m_loadMetersEnabled);
-		updateLoads();
+		model.setLoadMetersEnabled(m_loadMetersEnabled);
+		updateLoads(model);
 		model.sort();
 		setCanvasModel(model);
 	}
@@ -1375,10 +1376,9 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer implements IPin
 		done(1, model);
 	}
 	
-	
 	/** Updates the loads for all cpus and cores */
 	@ConfinedToDsfExecutor("getSession().getExecutor()")
-	public void updateLoads() {
+	public void updateLoads(final VisualizerModel model) {
 		if (m_cpuCoreContextsCache.isEmpty()) {
 			// not ready to get load info yet
 			return;
@@ -1388,8 +1388,6 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer implements IPin
 			return;
 		}
 		
-		final VisualizerModel model = fDataModel;
-		
 		model.getLoadTodo().dispose();
 		// keep track of how many loads we expect
 		model.getLoadTodo().add(m_cpuCoreContextsCache.size());
@@ -1470,7 +1468,8 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer implements IPin
 							executor.execute(new Runnable() {
 								@Override
 								public void run() {
-									updateLoads();
+									final VisualizerModel model = fDataModel;
+									updateLoads(model);
 								}
 							});
 						}