     {
         if (value)
         {
-            super.addChild(value);
+			overlay.addDisplayObject(value, OverlayDepth.FOCUS_DEPTH);
 
             value.x = 0;
             value.y = 0;

        if (!layout)
            layout = new BasicLayout();
    }
    
    /**
     *  @private
     */

        }
    }

	//----------------------------------
	//  overlay
	//----------------------------------

	/**
	 *  @private
	 *  Storage for the overlay property 
	 */
	mx_internal var _overlay:DisplayPlane;

	[Inspectable(category="General")]

	/**
	 *  The overlay plane for this Group.
	 *  All objects of the overlay plane render on top of the Group elements.
	 *  Don't hold on to this object, as Group destroys and creates it on demand.
	 *   
	 *  @langversion 3.0
	 *  @playerversion Flash 10
	 *  @playerversion AIR 1.5
	 *  @productversion Flex 4
	 */
	public function get overlay():DisplayPlane
	{
		if (!_overlay)
		{
			_overlay = new DisplayPlane();
			_overlay.addEventListener(DisplayPlaneObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
			_overlay.addEventListener(DisplayPlaneObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
			
			// Invalidate properties, so that if nothing was actually added to the
			// overlay object, we'll clean it up:
			invalidateProperties();
		}
		return _overlay;
	}
	
	/**
	 *  @private
	 *  Event listener to add overlay objects when added to the overlay DisplayPlane property.
	 */
	private function overlay_objectAdd(event:DisplayPlaneObjectExistenceEvent):void
	{
		super.addChildAt(event.object, event.index + numChildren - _overlay.numDisplayObjects + 1);
	}
	
	/**
	 *  @private
	 *  Event listener to remove overlay objects when removed from the overlay
	 *  DisplayPlane property.
	 */
	private function overlay_objectRemove(event:DisplayPlaneObjectExistenceEvent):void
	{
		// Remove the object from the display list
		super.removeChild(event.object);
		
		// Is this the last display object?
		if (_overlay.numDisplayObjects == 1)
			invalidateProperties();
	}
	
	/**
	 *  Destroys the overlay object. This method gets called on commitProperties
	 *  when the overlay doesn't contain any objects. 
	 */
	private function destroyOverlay():void
	{
		_overlay.removeEventListener(DisplayPlaneObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
		_overlay.removeEventListener(DisplayPlaneObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
		_overlay = null;
	}

	//----------------------------------
    //  resizeMode
    //----------------------------------
    
