      */
     public function get duration():Number
     {
-        // Instance classes like Parallel or Sequence may have something more 
-        // interesting to return for duration
-        if (_instances)
-        {
-            // Return duration of first valid instance
-            for (var i:int = 0; i < _instances.length; ++i)
-            {
-                var instance:IEffectInstance = IEffectInstance(_instances[i]);
-                if (instance)
-                    return instance.duration;
-            }
-        }
-        return _duration;
+        if (!mx_internal::durationExplicitlySet &&
+            mx_internal::parentCompositeEffect)
+        {
+            return mx_internal::parentCompositeEffect.duration;
+        }
+        else
+        {
+            return _duration;
+        }
     }
     
     /**

    }
    
    /**
     *  Called when an effect instance has finished playing. 
     *  If you override this method, ensure that you call the super method.
     *

     */
    mx_internal var propertyChangesArray:Array; 
    
    private var effectStopped:Boolean;
        
    /**
     *  @private
     *  Pointer back to the CompositeEffect that created this instance.
     *  Value is null if we are not the child of a CompositeEffect
     */
    mx_internal var parentCompositeEffect:Effect;

    //--------------------------------------------------------------------------
    //
    //  Properties
