 			notifyFilterChanged();
 		}
 	}
-	
-	public function clone():BitmapFilter
+		
+	//----------------------------------
+    //  knockout
+    //----------------------------------
+	
+	private var _knockout:Boolean = false;
+	
+	/**
+	 *  Specifies whether the object has a knockout effect. A knockout effect
+	 *  makes the object's fill transparent and reveals the background color 
+	 *  of the document. The value true specifies a knockout effect; the 
+	 *  default value is false (no knockout effect).
+	 */
+	public function get knockout():Boolean
+	{
+		return _knockout;
+	}
+	
+	public function set knockout(value:Boolean):void
+	{
+		if (value != _knockout)
+		{
+			_knockout = value;
+			notifyFilterChanged();
+		}
+	}
+	
+	//----------------------------------
+    //  quality
+    //----------------------------------
+	
+	private var _quality:int = BitmapFilterQuality.LOW;
+	
+	/**
+	 *  The number of times to apply the filter. The default value is 
+	 *  BitmapFilterQuality.LOW, which is equivalent to applying the filter 
+	 *  once. The value BitmapFilterQuality.MEDIUM  applies the filter twice; 
+	 *  the value BitmapFilterQuality.HIGH applies it three times. Filters 
+	 *  with lower values are rendered more quickly. 
+	 * 
+	 *  For most applications, a quality value of low, medium, or high is 
+	 *  sufficient. Although you can use additional numeric values up to 15 
+	 *  to achieve different effects, higher values are rendered more slowly. 
+	 *  Instead of increasing the value of quality, you can often get a similar 
+	 *  effect, and with faster rendering, by simply increasing the values of 
+	 *  the blurX and blurY properties.
+	 */
+	public function get quality():int
+	{
+		return _quality;
+	}
+	
+	public function set quality(value:int):void
+	{
+		if (value != _quality)
+		{
+			_quality = value;
+			notifyFilterChanged();
+		}
+	}
+	
+	//----------------------------------
+    //  strength
+    //----------------------------------
+	
+	private var _strength:Number = 1;
+	
+	/**
+	 *  The strength of the imprint or spread. The higher the value, the more 
+	 *  color is imprinted and the stronger the contrast between the glow and 
+	 *  the background. Valid values are 0 to 255. A value of 0 means that the 
+	 *  filter is not applied. The default value is 1. 
+	 */
+	public function get strength():Number
+	{
+		return _strength;
+	}
+	
+	public function set strength(value:Number):void
+	{
+		if (value != _strength)
+		{
+			_strength = value;
+			notifyFilterChanged();
+		}
+	}	
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+   	/**
+     * @private
+     * Notify of a change to our filter, so that filter stack is ultimately 
+     * re-applied by the framework.
+     */ 
+	private function notifyFilterChanged():void
+	{
+		dispatchEvent(new Event(Event.CHANGE));
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  IFlexBitmapFilter 
+	//
+	//--------------------------------------------------------------------------
+	
+	/**
+	 *  Creates a flash.filters.DropShadowFilter instance using the current 
+	 *  property values. 
+	 * 
+	 *  @return flash.filters.DropShadowFilter instance
+	 */		
+	public function createBitmapFilter():BitmapFilter 
 	{
 		return new flash.filters.DropShadowFilter(distance, angle, color, alpha, blurX, 
 												  blurY, strength, quality, inner, 

									 knockout:Boolean = false, 
									 hideObject:Boolean = false)
	 {
	 	this.distance = distance;
	 	this.angle = angle;
	 	this.color = color;

	 	this.knockout = knockout;
	 	this.hideObject = hideObject;
	 }

	//--------------------------------------------------------------------------
	//
	//  Properties
	//
	//--------------------------------------------------------------------------
	
	//----------------------------------
    //  alpha
