     {
         dispatchEvent(event);
         finishEffect();
-    }
-    
+        if (affectsConstraints)
+            reenableConstraints();
+    }
+    
+    private var constraintsHolder:Object;
+    
+    private function reenableConstraint(name:String):void
+    {
+        var value:* = constraintsHolder[name];
+        if (value !== undefined)
+        {
+            target.setStyle(name, value);
+            delete constraintsHolder[name];
+        }
+    }
+    
+    private function reenableConstraints():void
+    {
+        // Only bother if constraintsHolder is non-null; otherwise
+        // there must have been no constraints to worry about
+        if (constraintsHolder)
+        {
+            reenableConstraint("left");
+            reenableConstraint("right");
+            reenableConstraint("top");
+            reenableConstraint("bottom");
+            reenableConstraint("horizontalCenter");
+            reenableConstraint("verticalCenter");
+            reenableConstraint("baseline");
+            constraintsHolder = null;
+        }
+    }
+    
+    private function disableConstraint(name:String):void
+    {
+        var value:* = target.getStyle(name);
+        if (value !== undefined)
+        {
+            if (!constraintsHolder)
+                constraintsHolder = new Object();
+            constraintsHolder[name] = value;
+            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");
+        }
+    }
     /**
      * Utility function to handle situation where values may be queried or
      * set on the target prior to completely setting up the effect's

     */
    protected var roundValues:Boolean;

    private var _easer:IEaser;    
    public function set easer(value:IEaser):void
    {

        dispatchEvent(event);
    }
    
    private function noopAnimationHandler(event:TimerEvent):void
    {
        finishEffect();
    }

    /**
     * Handles the end event from the animation. The value here is an Array of
     * values, one for each 'property' in our propertyValuesList.
