public void AttachPropertyGrid (uint socket)
		{
			Application.Invoke ( delegate {
				propGridPlug = AttachChildViaPlug (socket, propGridFrame);
			});
		}
		private Plug AttachChildViaPlug (uint socket, Gtk.Widget child)
		{
			System.Diagnostics.Trace.WriteLine ("Attaching plug to socket " + socket);
			Plug plug = new Plug (socket);
			
			//if our plugs are unrealised and reattached too quickly, parent may not have removed the child yet
			if(child.Parent != null)
				((Container) child.Parent).Remove (child);
			plug.Add (child);
			
			plug.Unrealized += RemovePlugChildWhenUnrealised;
			plug.Show ();
			return plug;
		}
		public void AttachDesigner (uint socket)
		{
			Application.Invoke ( delegate {
				designerPlug = AttachChildViaPlug (socket, designerFrame);
			});
		}