      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public var animationProperties:Array;
-    
+    public function get motionPaths():Array
+    {
+        return _motionPaths;
+    }
+    /**
+     * @private
+     */
+    public function set motionPaths(value:Array):void
+    {
+        _motionPaths = value;
+    }
+    
+    //----------------------------------
+    //  easer
+    //----------------------------------
+    /**
+     * @private
+     * Storage for the easer property. 
+     */
+    private var _easer:IEaser = defaultEaser;
     /**
      * The easing behavior for this effect. This IEaser
      * object will be used to convert the elapsed fraction of 
      * the animation into an eased fraction, which will then be used to
      * calculate the value at that eased elapsed fraction.
      * 
-     * @default mx.effects.fxEasing.Sine(.5)
-     * @see mx.effects.fxEasing.Sine
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public var easer:IEaser = defaultEaser;
-    
+     * @default spark.effects.easing.Sine(.5)
+     * @see spark.effects.easing.Sine
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get easer():IEaser
+    {
+        return _easer;
+    }
+    /**
+     * @private
+     */
+    public function set easer(value:IEaser):void
+    {
+        _easer = value;
+    }
+    
+    //----------------------------------
+    //  interpolator
+    //----------------------------------
+    /**
+     * @private
+     * Storage for the interpolator property. 
+     */
+    private var _interpolator:IInterpolator = null;
     /**
      * The interpolator used by this effect to calculate values between
      * the start and end values. By default, interpolation is handled

import mx.core.mx_internal;
import mx.effects.Effect;
import mx.effects.IEffectInstance;

import spark.effects.animation.Animation;
import spark.effects.easing.IEaser;
import spark.effects.easing.Sine;
import spark.effects.interpolation.IInterpolator;
import spark.effects.supportClasses.AnimateInstance;
import spark.events.AnimationEvent;

use namespace mx_internal;

[DefaultProperty("animationProperties")]

/**
 * Dispatched when the effect starts, which corresponds to a 
 * call to the <code>AnimateInstance.startHandler()</code> method.
 * Flex also dispatches the first <code>animationUpdate</code> event 
 * for the effect at the same time.
 *
 * <p>The <code>Effect.effectStart</code> event is dispatched 
 * before the <code>animationStart</code> event.</p>
 *
 * @eventType spark.events.AnimationEvent.ANIMATION_START
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="animationStart", type="spark.events.AnimationEvent")]

/**
 * Dispatched every time the effect updates the target.
 * This event corresponds to a call to 
 * the <code>AnimateInstance.updateHandler()</code> method.
 *
 * @eventType spark.events.AnimationEvent.ANIMATION_UPDATE
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="animationUpdate", type="spark.events.AnimationEvent")]

/**
 * Dispatched when the effect begins a new repetition, for
 * any effect that is repeated more than once.
 * This event corresponds to a call to 
 * the <code>AnimateInstance.repeatHandler()</code> method.
 * Flex also dispatches an <code>animationUpdate</code> event 
 * for the effect at the same time.
 *
 * @eventType spark.events.AnimationEvent.ANIMATION_REPEAT
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="animationRepeat", type="spark.events.AnimationEvent")]

/**
 * Dispatched when the effect ends.
 * This event corresponds to a call to 
 * the <code>AnimateInstance.endHandler()</code> method.
 * Flex also dispatches an <code>animationUpdate</code> event 
 * for the effect at the same time.
 *
 * <p>This event occurs just before an <code>effectEnd</code> event.
 * A repeating effect dispatches this event only after the 
 * final repetition.</p>
 *
 * @eventType spark.events.AnimationEvent.ANIMATION_END
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="animationEnd", type="spark.events.AnimationEvent")]

/**
 * This effect animates an arbitrary set of properties between values, as specified
 * in the <code>animationProperties</code> array. Example usage is as follows:
 * 
 * @example Using the Animate effect to move a button from (100, 100)
 * to (200, 150):
 * <listing version="3.0">
 * var button:Button = new Button();
 * var anim:Animate = new Animate(button);
 * anim.animationProperties = [
 *     new AnimationProperty("x", 100, 200),
 *     new AnimationProperty("y", 100, 150)];
 * anim.play();
 * </listing>
 *  


    /**
     * By default, the affected properties are the same as those specified
     * in the <code>motionPaths</code> array. If subclasses affect
     * or track a different set of properties, they should override this
     * method.
     *  
