     {
         if (instance == videoElement)
         {
+            videoElement.addEventListener(spark.events.VideoEvent.CLOSE, dispatchEvent);
+            videoElement.addEventListener(spark.events.VideoEvent.COMPLETE, dispatchEvent);
+            videoElement.addEventListener(spark.events.VideoEvent.METADATA_RECEIVED, videoElement_metaDataReceivedHandler);
+            videoElement.addEventListener(spark.events.VideoEvent.PLAYHEAD_UPDATE, videoElement_playHeadUpdateHandler);
+            videoElement.addEventListener(ProgressEvent.PROGRESS, videoElement_progressHandler);
+            videoElement.addEventListener(spark.events.VideoEvent.READY, dispatchEvent);
+            videoElement.addEventListener(fl.video.VideoEvent.STATE_CHANGE, videoElement_stateChangeHandler);
+            videoElement.addEventListener("playingChanged", videoElement_playingChangedHandler);
+            
+            // just strictly for binding purposes
+            videoElement.addEventListener("sourceChanged", dispatchEvent);
+            videoElement.addEventListener("volumeChanged", videoElement_volumeChangedHandler);
+            
             // copy proxied values from videoProperties (if set) to video
             
             var newVideoProperties:uint = 0;

     */
    public function get source():Object
    {
        return (videoElement) ? videoElement.source : videoElementProperties.source;
    }

    /**

     *  videoElementProperties stores booleans as to whether these properties 
     *  have been explicitely set or not.
     */
    private var videoElementProperties:Object;
    
    //--------------------------------------------------------------------------
    //
