       this.ns = ev.data.ns;
       ev.data.ns.bufferTime = config.buffer;
       ev.data.ns.client = this;
+      this.onXMPData = onXMPDataHandler;
+      this.onCuePoint = onCuePointHandler;
+      this.onImageData = onImageDataHandler;
+      this.onSeekPoint = onSeekPointHandler;
+      this.onTextData = onTextDataHandler;
       this.ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
       this.ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
       this.ns.addEventListener(DRMErrorEvent.DRM_ERROR, onDRMError);

      this.videoResize();
    }

    private function onXMPData(event:Event):void {
      Logger.log('XMPData received');
    }

    private function onCuePoint(cuePoint:Object):void {
      Logger.log('CuePoint received: ' + cuePoint.name);
    }

    private function onImageData(imageData:Object):void {
      Logger.log('ImageData received');
    }

    private function onSeekPoint(event:Event):void {
      Logger.log('SeekPoint received');
    }

    private function onTextData(textData:Object):void {
      Logger.log('TextData received');
    }


    private var streamHasAudio:Boolean = false;
    private var streamHasVideo:Boolean = false;

    public var onXMPData:Function = null;
    public var onCuePoint:Function = null;
    public var onImageData:Function = null;
    public var onSeekPoint:Function = null;
    public var onTextData:Function = null;

    public function Player() {
      var self:Player = this;

