         }
     }
     
-    private function disableConstraint(name:String):void
-    {
-        var value:* = target.getStyle(name);
-        if (value !== undefined)
+    // TODO (chaase): Use IConstraintClient for this
+    private function cacheConstraint(name:String, disable:Boolean):void
+    {
+        var isProperty:Boolean = (name in target);
+        var value:*;
+        if (isProperty)
+            value = target[name];
+        else
+            value = target.getStyle(name);
+        if (!isNaN(value))
         {
             if (!constraintsHolder)
                 constraintsHolder = new Object();
             constraintsHolder[name] = value;
-            target.setStyle(name, undefined);
+            if (disable)
+            {
+                if (isProperty)
+                    target[name] = NaN;
+                else if (target is IStyleClient)
+                    target.setStyle(name, undefined);
+            }
         }        
     }
-    private function disableConstraints():void
-    {
-        if (target is IStyleClient)
-        {
-            disableConstraint("left");
-            disableConstraint("right");
-            disableConstraint("top");
-            disableConstraint("bottom");
-            disableConstraint("verticalCenter");
-            disableConstraint("horizontalCenter");
-            disableConstraint("baseline");
-        }
-    }
+    
+    private function cacheConstraints(disable:Boolean):void
+    {
+        cacheConstraint("left", disable);
+        cacheConstraint("right", disable);
+        cacheConstraint("top", disable);
+        cacheConstraint("bottom", disable);
+        cacheConstraint("verticalCenter", disable);
+        cacheConstraint("horizontalCenter", disable);
+        cacheConstraint("baseline", disable);
+    }
+
     /**
      * Utility function to handle situation where values may be queried or
      * set on the target prior to completely setting up the effect's

package mx.effects.effectClasses
{
import flash.events.TimerEvent;
import flash.utils.Timer;

import mx.components.Group;
import mx.effects.Animation;
import mx.effects.PropertyValuesHolder;
import mx.effects.fxEasing.IEaser;
import mx.effects.interpolation.IInterpolator;
import mx.events.AnimationEvent;

import mx.core.UIComponent;
import mx.effects.EffectInstance;
import mx.effects.EffectManager;
import mx.styles.IStyleClient;

/**


    private var constraintsHolder:Object;
    
    // TODO (chaase): Use IConstraintClient for this
    private function reenableConstraint(name:String):void
    {
        var value:* = constraintsHolder[name];
        if (value !== undefined)
        {
            if (name in target)
                target[name] = value;
            else
                target.setStyle(name, value);
            delete constraintsHolder[name];
        }
    }
