diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
index 1c3bf97..e4970bc 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
@@ -91,6 +91,7 @@
             launchBar.close();
             launchBar = null;
         }
+		IntroLaunchBar.destroyAll(getWorkbench());
     }
 
     public void setLaunchBar(IntroLaunchBar launchBar) {
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
index 3ceaa87..29891fd 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
@@ -9,6 +9,7 @@
  **************************************************************************************************/
 package org.eclipse.ui.internal.intro.impl.presentations;
 
+import java.util.List;
 import java.util.Map;
 
 import javax.annotation.PostConstruct;
@@ -16,6 +17,7 @@
 import javax.inject.Inject;
 
 import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
 import org.eclipse.e4.ui.model.application.ui.SideValue;
 import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
@@ -45,6 +47,7 @@
 import org.eclipse.swt.widgets.Layout;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.AnimationEngine;
@@ -188,7 +191,7 @@
 			IntroLaunchBarElement element) {
 		EModelService modelService = (EModelService) window.getService(EModelService.class);
 		MTrimmedWindow trimmedWindow = (MTrimmedWindow) window.getService(MTrimmedWindow.class);
-
+		
 		MToolControl trimControl = modelService.createModelElement(MToolControl.class);
 		trimControl.setElementId(LAUNCHBAR_ID);
 		trimControl.setContributionURI(BUNDLECLASS_URI);
@@ -205,6 +208,27 @@
 		return (IntroLaunchBar) trimControl.getObject();
 	}
 
+	/**
+	 * Remove all traces of any launch bars found in the model. Required on startup as the
+	 * {@linkplain IntroLaunchBar} instances may not be have been rendered yet and so are
+	 * disconnected from the {@link IntroPlugin}'s state.
+	 * 
+	 * @param workbench
+	 *            the workbench to process
+	 */
+	public static void destroyAll(IWorkbench workbench) {
+		EModelService modelService = workbench.getService(EModelService.class);
+		MApplication application = workbench.getService(MApplication.class);
+		List<MToolControl> candidates = modelService.findElements(application, MToolControl.class,
+				EModelService.IN_TRIM, toolControl -> LAUNCHBAR_ID.equals(toolControl.getElementId())
+						&& BUNDLECLASS_URI.equals(((MToolControl) toolControl).getContributionURI()));
+		for (MToolControl trimControl : candidates) {
+			if (trimControl.getParent() != null) {
+				trimControl.getParent().getChildren().remove(trimControl);
+			}
+		}
+	}
+
 	private static SideValue determineLocation(IntroLaunchBarElement element) {
 		// Try restoring to the same location if moved previously
 		IDialogSettings settings = IntroPlugin.getDefault().getDialogSettings();
