     //
     //--------------------------------------------------------------------------
     
-    /**
-     * @inheritDoc
+    // TODO (chaase): This function should be in an interface, to
+    // allow it to be called easily through an interface instead of
+    // having to import Effect just to call it
+    /**
+     * Sets the current time of an effect. Seek may be used to
+     * fast-forward or reverse to a particular point in time in an effect.
+     * 
+     * @param seekTime Number of milliseconds that the effect should
+     * play at. This number should be between 0 and the duration of the
+     * effect.
+     * 
+     * @see #duration
      */
     public function seek(seekTime:Number):void
     {
+        // If the effect is not yet playing, it should still be possible
+        // to seek into it. playing and then pausing it provides that
+        // capability
+        // TODO (chaase): Need better overall mechanism to seek into a
+        // non-playing effect. The internals of seeking in Animation
+        // are complicated and don't end up giving us the behavior we
+        // want, especially for successive seeks.
+        var started:Boolean = false;
+        if (_instances.length == 0)
+        {
+            play();
+            started = true;
+        }
         for (var i:int = 0; i < _instances.length; i++)
         {
             if (_instances[i])
-                IEffectInstance(_instances[i]).seek(seekTime);
-        }
-    }
-
-    /**
-     * @inheritDoc
+                EffectInstance(_instances[i]).seek(seekTime);
+        }
+        if (started)
+            pause();
+    }
+
+    // TODO (chaase): This property should be in an interface, to
+    // allow it to be called easily through an interface instead of
+    // having to import Effect just to call it
+    // TODO (chaase): Consider renaming this property; playheadTime
+    // is very video-specific
+    /**
+     *  Current position in time of the effect.
+     *  This property has a value between 0 and the actual duration 
+     *  (which includes the value of the <code>startDelay</code>, 
+     *  <code>repeatCount</code>, and <code>repeatDelay</code> properties).
      */
     public function get playheadTime():Number 
     {

        EventDispatcher(instance).removeEventListener(
			EffectEvent.EFFECT_START, effectStartHandler);
        EventDispatcher(instance).removeEventListener(
			EffectEvent.EFFECT_END, effectEndHandler);
        
        var n:int = _instances.length;
        for (var i:int = 0; i < n; i++)

            }
                
            EventDispatcher(newInstance).addEventListener(EffectEvent.EFFECT_START, effectStartHandler);
            EventDispatcher(newInstance).addEventListener(EffectEvent.EFFECT_STOP, effectStopHandler);
            EventDispatcher(newInstance).addEventListener(EffectEvent.EFFECT_END, effectEndHandler);
            
            _instances.push(newInstance);
