         var value:Object = _source;
         var bitmapData:BitmapData;
         var tmpSprite:DisplayObject;
-		
+        
         // Clear the previous scaleGrid properties
         _scaleGridLeft = NaN;
         _scaleGridRight = NaN;
         _scaleGridTop = NaN;
         _scaleGridBottom = NaN;
         var currentBitmapCreated:Boolean = false;
-        
-		// Clear any previously loaded content.
-		loadedContent = null;
-		
-		// Reset byte counts and _trustedSource
-		_bytesLoaded = NaN;
-		_bytesTotal = NaN;
-		_trustedSource = true;
-		
-		// We'll need to reconsider display object sharing.
-		invalidateDisplayObjectSharing();
-		
+                
+        // Clear any previously loaded content.
+        loadedContent = null;
+        
+        // Reset byte counts and _trustedSource
+        _bytesLoaded = NaN;
+        _bytesTotal = NaN;
+        _trustedSource = true;
+        
+        // We'll need to reconsider display object sharing.
+        invalidateDisplayObjectSharing();
+                
         if (value is Class)
         {
             var cls:Class = Class(value);
             value = new cls();
             currentBitmapCreated = true;
         }
-        else if (value is String)
-        {
-            loadExternal(value as String);
+        else if (value is String || value is URLRequest)
+        {
+            loadExternal(value);
         }
         
         if (value is BitmapData)

        {
            handleSecurityError(error);
        } 
		
		dispatchEvent(event);
    }
    
    /**
     *  @private
     */
	private function loader_ioErrorHandler(error:IOErrorEvent):void
    {
        // clear any current image 
        setBitmapData(null);
		
		// forward the event, only in the case of a listener, else
		// an RTE will occur.
		if (hasEventListener(error.type))
			dispatchEvent(error);
    }
    
    /**
     *  @private
     */
	private function loader_securityErrorHandler(error:SecurityErrorEvent):void
    {
        // clear any current image and forward the error.
        setBitmapData(null);
        dispatchEvent(error);
    }
    
    /**
     *  @private
     */
	private function loader_progressHandler(progressEvent:ProgressEvent):void
    {   
        _bytesLoaded = progressEvent.bytesLoaded;
        _bytesTotal = progressEvent.bytesTotal;

     * @private
     * Returns true if are to consider aspect ratio while scaling.
     */  
    private function get maintainAspectRatio():Boolean
    {
        return (_scaleMode == BitmapScaleMode.LETTERBOX && _fillMode == BitmapFillMode.SCALE);
    }
    
    /**
     * @private
     * Returns true if are to consider aspect ratio while scaling.
     */  
    private function removeLoadedContent():void
    {
        if (loadedContent && loadedContent.parent)
        {
            displayObjectSharingMode = DisplayObjectSharingMode.USES_SHARED_OBJECT;
            invalidateDisplayObjectSharing();
            loadedContent.parent.removeChild(loadedContent);
            loadedContent = null;
            setDisplayObject(null);
            imageWidth = imageHeight = 0;
        }
    }
    
    /**
     *  @private
     */
    private function clearLoadingContent():void
    {
        removeLoadingListeners();
        loadingContent = null;
    }
    
    /**
     *  @private
     */
    private function attachLoadingListeners():void
    {
        if (loadingContent)
        {
            loadingContent.addEventListener(Event.COMPLETE, 
                loader_completeHandler, false, 0, true);
            loadingContent.addEventListener(IOErrorEvent.IO_ERROR, 
                loader_ioErrorHandler, false, 0, true);
            loadingContent.addEventListener(ProgressEvent.PROGRESS, 
                loader_progressHandler, false, 0, true);
            loadingContent.addEventListener(SecurityErrorEvent.SECURITY_ERROR, 
                loader_securityErrorHandler, false, 0, true);
            loadingContent.addEventListener(HTTPStatusEvent.HTTP_STATUS, 
                dispatchEvent, false, 0, true);
        }
    }
    
    /**
     *  @private
     */
    private function removeLoadingListeners():void
    {
        if (loadingContent)
        {
            loadingContent.removeEventListener(Event.COMPLETE, 
                loader_completeHandler);
            loadingContent.removeEventListener(IOErrorEvent.IO_ERROR, 
                loader_ioErrorHandler);
            loadingContent.removeEventListener(ProgressEvent.PROGRESS, 
                loader_progressHandler);
            loadingContent.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, 
                loader_securityErrorHandler);
            loadingContent.removeEventListener(HTTPStatusEvent.HTTP_STATUS, 
                dispatchEvent);
        }
    }
    
    //--------------------------------------------------------------------------
