Index: /IBBoard.WarFoundry.GUI.GTK/trunk/FrmMainWindow.cs
===================================================================
--- /IBBoard.WarFoundry.GUI.GTK/trunk/FrmMainWindow.cs	(revision 147)
+++ /IBBoard.WarFoundry.GUI.GTK/trunk/FrmMainWindow.cs	(revision 149)
@@ -131,5 +131,4 @@
 			FailedUnitRequirementMethod = new FailedUnitRequirementDelegate(OnFailedUnitRequirement);
 			UnitNameChangedMethod = new StringValChangedDelegate(OnUnitNameChanged);
-			logger.Debug("Initialising complete - trying to load default army or system");
 			
 			//FIXME: Temporary hack to add paths and factories
@@ -148,4 +147,6 @@
 				WarFoundryLoader.GetDefault().RegisterNonNativeFactory((INonNativeWarFoundryFactory)factory);
 			}
+			
+			logger.Debug("Initialising complete - seeing if we can load default army or system");
 								
 			if (args.Length == 1)
@@ -919,4 +920,5 @@
 					logger.Debug("Adding page for "+unit.Name);
 					unitToWidgetMap[unit] = widget;
+					widget.Destroyed+= new EventHandler(UnitWidgetDestroyed);
 					int pageNum = NotebookUtil.AddPageToNotebookWithCloseButton(unitsNotebook, widget, unit.Name);
 					logger.Debug("Page added at index "+pageNum);
@@ -926,4 +928,12 @@
 			}
 		}
+
+		private void UnitWidgetDestroyed(object sender, EventArgs e)
+		{
+			if (sender is UnitDisplayWidget)
+			{
+				unitToWidgetMap.Remove(((UnitDisplayWidget)sender).Unit);
+			}
+		}
 	}
 }
Index: /IBBoard.WarFoundry.GUI.GTK/trunk/Widgets/UnitDisplayWidget.cs
===================================================================
--- /IBBoard.WarFoundry.GUI.GTK/trunk/Widgets/UnitDisplayWidget.cs	(revision 145)
+++ /IBBoard.WarFoundry.GUI.GTK/trunk/Widgets/UnitDisplayWidget.cs	(revision 149)
@@ -83,4 +83,9 @@
 			}
 		}
+
+		public IBBoard.WarFoundry.API.Objects.Unit Unit
+		{
+			get { return unit; }
+		}
 		
 		private void UnitNameChanged(WarFoundryObject obj, string oldValue, string newValue)
