 			// asset from library
 			if (m_url.indexOf('attach://') == 0)
 			{
-				//remove protocol
-				var symbolId:String = m_url.substr(9);
-				m_attachMode = true;
-
-				//get FQCN name of assets class that contains the requested symbol
-				var pieces:Array = symbolId.split('/');
-				var className : String = pieces.shift();
-	            try
-	            {
-	                var symbol : Object = getDefinitionByName(className);
-	            }
-				catch (e : Error)
-				{
-					log('w Unable to use attach:// procotol. Symbol ' + symbolId + ' not found or not of type Class');
-					onData(false);
-	            }
-				
-				//iterate over remaining path parts, getting nested symbols from the assets class
-				for (var i:int = 0; i < pieces.length; i++)
-				{
-					symbol = symbol[pieces[i]];
-					if (!symbol)
-					{
-						log('w Unable to use attach:// procotol! Static property ' + pieces.join('/') +
-								' not found on Class ' + className);
-						onData(false);
-						return;
-					}
-				}
-				if (!(symbol is Class))
-				{
-					log('w Unable to use attach:// procotol. Static property ' + pieces.join('/') +
-							' on Class ' + className + ' is not of type Class.');
+				var symbol : Class = resolveAttachSymbol();
+				if (!symbol)
+				{
 					onData(false);
 					return;
 				}


		protected var m_loader : Loader;
		protected var m_resource : DisplayObject;
		protected var m_attachMode : Boolean;
		private var m_policyFileLoadTimer:Timer;

		

	import flash.system.Security;
	import flash.utils.ByteArray;
	import flash.utils.Timer;

	public class ImageResource extends AbstractResource
	{
