 											  priority:int = 0,
 											  useWeakReference:Boolean = false):void
 	{
-		if (!dispatchEvent(new EventListenerRequest(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, false, true,
-						type, listener, useCapture, priority, useWeakReference)))
-			return;
+        if (hasEventListener("addEventListener"))
+        {
+            var request:DynamicEvent = new DynamicEvent("addEventListener", false, true);
+            request.eventType = type;
+            request.listener = listener;
+            request.useCapture = useCapture;
+            request.priority = priority;
+            request.useWeakReference = useWeakReference;
+		    if (!dispatchEvent(request))
+			    return;
+        }
 		
 		// These two events will dispatched to applications in sandboxes.
 		if (type == FlexEvent.RENDER || type == FlexEvent.ENTER_FRAME)

	override public function removeEventListener(type:String, listener:Function,
												 useCapture:Boolean = false):void
	{
		if (!dispatchEvent(new EventListenerRequest(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, false, true,
						type, listener, useCapture)))
			return;

		// These two events will dispatched to applications in sandboxes.
		if (type == FlexEvent.RENDER || type == FlexEvent.ENTER_FRAME)

     */
    public function getVisibleApplicationRect(bounds:Rectangle = null):Rectangle
    {
        if (hasEventListener("getVisibleApplicationRect"))
        {
		    var request:Request = new Request("getVisibleApplicationRect", false, true);
		    if (!dispatchEvent(request)) 
			    return Rectangle(request.value);
        }
        
        if (!bounds)
        {
            bounds = getBounds(DisplayObject(this));
