                     }
                 }
                 // Now transform it
-                var xformCenter:Vector3D = computeTransformCenterForTarget(target);
+                var xformCenter:Vector3D = 
+                    (transformCenterPerTarget[target] !== undefined) ?
+                    transformCenterPerTarget[target] :
+                    computeTransformCenterForTarget(target);
                 var tmpScale:Vector3D;
                 var tmpPosition:Vector3D;
                 var tmpRotation:Vector3D;

                if(!isNaN(transformZ))
                    computedTransformCenter.z = transformZ; 
            }
        }       
        return computedTransformCenter;
    }


                // TODO (chaase): do we really need this?
                propChanges[i].stripUnchangedValues = false;
                
                var computedTransformCenter:Vector3D;
                // cache transform center at captureStartValues time; this will
                // force captureEndValues to use the transform center
                if (!setStartValues && transformCenterPerTarget[target] !== undefined)
                {
                    computedTransformCenter = transformCenterPerTarget[target];
                }
                else
                {
                    computedTransformCenter = computeTransformCenterForTarget(target);
                    if (setStartValues)
                        transformCenterPerTarget[target] = computedTransformCenter;
                }
                target.transformPointToParent(computedTransformCenter, xformPosition,
                    null);               
                valueMap.translationX = xformPosition.x;
