         for (i = 0; i < n; i++)
         {
             target = propChanges[i].target;
-            // TODO (chaase): should only capture values for targets of this effect.
-            // currently no easy way to determine this, since if we are
-            // running in a composite effect, that effect will create
-            // propertyChange targets for all effect children.
-            // Might want to change API of captureValues to specify the
-            // targets to iterate through
-            // For now, just make sure that we can transform the current target
-            // then go ahead and capture values for it
-            if (!(target is IUIComponent) && !(target is IGraphicElement))
-                continue;
-
-            // cache transform center at captureStartValues time; this will
-            // force captureEndValues to use the transform center
-            var computedTransformCenter:Vector3D;
-            if (!setStartValues && transformCenterPerTarget[target] !== undefined)
+            if (targetsToCapture == null || targetsToCapture.length == 0 ||
+                targetsToCapture.indexOf(target) >= 0)
             {
-                computedTransformCenter = transformCenterPerTarget[target];
-            }
-            else
-            {
-                computedTransformCenter = computeTransformCenterForTarget(target);
-                if (setStartValues)
-                    transformCenterPerTarget[target] = computedTransformCenter;
-            }
-
-            valueMap = setStartValues ? propChanges[i].start : propChanges[i].end;
-            if (valueMap.translationX === undefined ||
-                valueMap.translationY === undefined ||
-                valueMap.translationZ === undefined)
-            {
-                // TODO (chaase): do we really need this?
-                propChanges[i].stripUnchangedValues = false;
-                
-                target.transformPointToParent(computedTransformCenter, xformPosition,
-                    null);               
-                valueMap.translationX = xformPosition.x;
-                valueMap.translationY = xformPosition.y;
-                valueMap.translationZ = xformPosition.z;
-            }
-            
-            
-            // if someone has asked for the motionpaths to affect offsets, 
-            // they might not have explcitly defined any offsets.  If that's the case, 
-            // we still need to capture default start values, so let's initialize the offsets
-            // to a default set anyway.
-            if(postLayoutTransformPropertiesSet && target.offsets == null)
-            {
-                target.offsets = new TransformOffsets();
-            }
-            
-            // if the target doesn't have any offsets, there's no need to capture
-            // offset values.
-            if(target.offsets != null)
-            {
-                var offsets:TransformOffsets = target.offsets;
-                valueMap.postLayoutRotationX = offsets.rotationX;
-                valueMap.postLayoutRotationY = offsets.rotationY;
-                valueMap.postLayoutRotationZ = offsets.rotationZ;
-
-                valueMap.postLayoutScaleX = offsets.scaleX;
-                valueMap.postLayoutScaleY = offsets.scaleY;
-                valueMap.postLayoutScaleZ = offsets.scaleZ;
-
-                if (valueMap.postLayoutTranslationX === undefined ||
-                    valueMap.postLayoutTranslationY === undefined ||
-                    valueMap.postLayoutTranslationZ === undefined)
+                // TODO (chaase): should only capture values for targets of this effect.
+                // currently no easy way to determine this, since if we are
+                // running in a composite effect, that effect will create
+                // propertyChange targets for all effect children.
+                // Might want to change API of captureValues to specify the
+                // targets to iterate through
+                // For now, just make sure that we can transform the current target
+                // then go ahead and capture values for it
+                if (!(target is IUIComponent) && !(target is IGraphicElement))
+                    continue;
+    
+                // cache transform center at captureStartValues time; this will
+                // force captureEndValues to use the transform center
+                var computedTransformCenter:Vector3D;
+                if (!setStartValues && transformCenterPerTarget[target] !== undefined)
+                {
+                    computedTransformCenter = transformCenterPerTarget[target];
+                }
+                else
+                {
+                    computedTransformCenter = computeTransformCenterForTarget(target);
+                    if (setStartValues)
+                        transformCenterPerTarget[target] = computedTransformCenter;
+                }
+    
+                valueMap = setStartValues ? propChanges[i].start : propChanges[i].end;
+                if (valueMap.translationX === undefined ||
+                    valueMap.translationY === undefined ||
+                    valueMap.translationZ === undefined)
                 {
                     // TODO (chaase): do we really need this?
                     propChanges[i].stripUnchangedValues = false;
-
-                    computedTransformCenter = 
-                        computeTransformCenterForTarget(target); 
-                    target.transformPointToParent(computedTransformCenter, null,
-                        postLayoutPosition);               
-                    valueMap.postLayoutTranslationX = postLayoutPosition.x;
-                    valueMap.postLayoutTranslationY = postLayoutPosition.y;
-                    valueMap.postLayoutTranslationZ = postLayoutPosition.z;
+                    
+                    target.transformPointToParent(computedTransformCenter, xformPosition,
+                        null);               
+                    valueMap.translationX = xformPosition.x;
+                    valueMap.translationY = xformPosition.y;
+                    valueMap.translationZ = xformPosition.z;
+                }
+                
+                
+                // if someone has asked for the motionpaths to affect offsets, 
+                // they might not have explcitly defined any offsets.  If that's the case, 
+                // we still need to capture default start values, so let's initialize the offsets
+                // to a default set anyway.
+                if(postLayoutTransformPropertiesSet && target.offsets == null)
+                {
+                    target.offsets = new TransformOffsets();
+                }
+                
+                // if the target doesn't have any offsets, there's no need to capture
+                // offset values.
+                if(target.offsets != null)
+                {
+                    var offsets:TransformOffsets = target.offsets;
+                    valueMap.postLayoutRotationX = offsets.rotationX;
+                    valueMap.postLayoutRotationY = offsets.rotationY;
+                    valueMap.postLayoutRotationZ = offsets.rotationZ;
+    
+                    valueMap.postLayoutScaleX = offsets.scaleX;
+                    valueMap.postLayoutScaleY = offsets.scaleY;
+                    valueMap.postLayoutScaleZ = offsets.scaleZ;
+    
+                    if (valueMap.postLayoutTranslationX === undefined ||
+                        valueMap.postLayoutTranslationY === undefined ||
+                        valueMap.postLayoutTranslationZ === undefined)
+                    {
+                        // TODO (chaase): do we really need this?
+                        propChanges[i].stripUnchangedValues = false;
+    
+                        computedTransformCenter = 
+                            computeTransformCenterForTarget(target); 
+                        target.transformPointToParent(computedTransformCenter, null,
+                            postLayoutPosition);               
+                        valueMap.postLayoutTranslationX = postLayoutPosition.x;
+                        valueMap.postLayoutTranslationY = postLayoutPosition.y;
+                        valueMap.postLayoutTranslationZ = postLayoutPosition.z;
+                    }
                 }
             }
         }

        while (parent)
        {
            globalStartTime += parent.startDelay;
            parent = parent.mx_internal::parentCompositeEffect;
        }        
        return globalStartTime;

     * and the transform center.
     */
    override mx_internal function captureValues(propChanges:Array,
                                       setStartValues:Boolean,
                                       targetsToCapture:Array = null):Array
    {
        propChanges = super.captureValues(propChanges, setStartValues, 
            targetsToCapture);
        var valueMap:Object;
        var i:int;
        var n:int;
