diff --git a/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
index 37b4bac..d7ed418 100644
--- a/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.equinox.region
-Bundle-Version: 1.1.100.qualifier
+Bundle-Version: 1.1.101.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.management,
  org.eclipse.osgi.service.resolver;version="1.5.0";resolution:=optional,
diff --git a/bundles/org.eclipse.equinox.region/pom.xml b/bundles/org.eclipse.equinox.region/pom.xml
index 70485db..7da9aba 100644
--- a/bundles/org.eclipse.equinox.region/pom.xml
+++ b/bundles/org.eclipse.equinox.region/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.equinox</groupId>
   <artifactId>org.eclipse.equinox.region</artifactId>
-  <version>1.1.100-SNAPSHOT</version>
+  <version>1.1.101-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/RegionManager.java b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/RegionManager.java
index 8a33295..e16591f 100644
--- a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/RegionManager.java
+++ b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/RegionManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2011 VMware Inc.
+ * Copyright (c) 2008, 2013 VMware Inc.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -57,10 +57,31 @@
 			this.domain = REGION_DOMAIN_PROP;
 		digraph = loadRegionDigraph();
 		registerRegionHooks(digraph);
+		// after registering the region hooks we need to verify no ophans exist
+		// if they do then we assume the need to be in the kernel region
+		checkForOrphans(digraph);
 		digraphMBean = registerDigraphMbean(digraph);
 		registerRegionDigraph(digraph);
 	}
 
+	private void checkForOrphans(StandardRegionDigraph regionDigraph) {
+		// we assume the system bundle is in the root region.
+		Region rootRegion = regionDigraph.getRegion(0);
+		if (rootRegion != null) {
+			Bundle[] bundles = bundleContext.getBundles();
+			for (Bundle bundle : bundles) {
+				if (regionDigraph.getRegion(bundle) == null) {
+					// we have an orphan; add it to the root region
+					try {
+						rootRegion.addBundle(bundle.getBundleId());
+					} catch (BundleException e) {
+						// ignore, someone added the bundle to another region since we checked
+					}
+				}
+			}
+		}
+	}
+
 	public void stop(BundleContext bc) throws IOException {
 		digraphMBean.unregisterMbean();
 		for (ServiceRegistration<?> registration : registrations)
diff --git a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
index 1c45f29..544d1ae 100644
--- a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
+++ b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 IBM Corporation and others.
+ * Copyright (c) 2011, 2013 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -113,7 +113,7 @@
 		// read the number of regions
 		int numRegions = in.readInt();
 		for (int i = 0; i < numRegions; i++) {
-			readRegion(in, digraph);
+			readRegion(in, digraph, bundleContext);
 		}
 		// read each edge
 		// read number of tail regions
@@ -129,7 +129,7 @@
 		return digraph;
 	}
 
-	private static Region readRegion(DataInputStream in, RegionDigraph digraph) throws IOException, BundleException {
+	private static Region readRegion(DataInputStream in, RegionDigraph digraph, BundleContext context) throws IOException, BundleException {
 		// read region name
 		String name = in.readUTF();
 		Region region = digraph.createRegion(name);
@@ -137,7 +137,9 @@
 		// read number of bundles
 		int numIds = in.readInt();
 		for (int i = 0; i < numIds; i++) {
-			region.addBundle(in.readLong());
+			long id = in.readLong();
+			if (context == null || context.getBundle(id) != null)
+				region.addBundle(id);
 		}
 		return region;
 	}
