      */
     mx_internal function childAdded(child:DisplayObject):void
     {
-        if (child is UIComponent)
-        {
-            if (!UIComponent(child).initialized)
-                UIComponent(child).initialize();
-        }
-        else if (child is IUIComponent)
-        {
-            IUIComponent(child).initialize();
-        }
+		if (!UIComponentGlobals.designMode)
+		{
+	        if (child is UIComponent)
+	        {
+	            if (!UIComponent(child).initialized)
+	                UIComponent(child).initialize();
+	        }
+	        else if (child is IUIComponent)
+	        {
+	            IUIComponent(child).initialize();
+	        }
+		}
+		else
+		{
+			try
+			{
+				if (child is UIComponent)
+				{
+					if (!UIComponent(child).initialized)
+						UIComponent(child).initialize();
+				}
+				else if (child is IUIComponent)
+				{
+					IUIComponent(child).initialize();
+				}				
+			}
+			catch (e:Error)
+			{
+				// Dispatch a initializeError dynamic event for tooling. 
+				var initializeErrorEvent:DynamicEvent = new DynamicEvent("initializeError");
+				initializeErrorEvent.error = e;
+				initializeErrorEvent.source = this; 
+				systemManager.dispatchEvent(initializeErrorEvent);
+			}
+		}
     }
 
     /**


        // This should always be the last thing that initialize() calls.
        initializationComplete();
    }

    /**
     *  Finalizes the initialization of this component.

    {
        if (initialized)
            return;
		
        // The "preinitialize" event gets dispatched after everything about this
        // DisplayObject has been initialized, and it has been attached to
        // its parent, but before any of its children have been created.
