     public function SimpleVideoDisplay (player :VideoPlayer)
     {
         _player = player;
-        _player.addEventListener(MediaPlayerCodes.STATE, handlePlayerState);
         _player.addEventListener(MediaPlayerCodes.SIZE, handlePlayerSize);
-        _player.addEventListener(MediaPlayerCodes.DURATION, handlePlayerDuration);
-        _player.addEventListener(MediaPlayerCodes.POSITION, handlePlayerPosition);
-        _player.addEventListener(MediaPlayerCodes.ERROR, handlePlayerError);
 
         addChild(_player.getDisplay());
 
         var masker :Shape = new Shape();
         this.mask = masker;
         addChild(masker);
-
-        addEventListener(MouseEvent.ROLL_OVER, handleRollOver);
-        addEventListener(MouseEvent.ROLL_OUT, handleRollOut);
-
-        _hud = new Sprite();
-        _hud.addEventListener(MouseEvent.CLICK, handleClick);
-        redrawHUD();
 
         // create the mask...
         var g :Graphics = masker.graphics;

        g.drawRect(0, 0, NATIVE_WIDTH, NATIVE_HEIGHT);
        g.endFill();

        // and update the HUD location (even if not currently showing)
        _hud.x = NATIVE_WIDTH/2;
        _hud.y = NATIVE_HEIGHT/2;

        _track = new Sprite();
        _track.x = PAD - _hud.x;
        _track.y = NATIVE_HEIGHT - PAD - TRACK_HEIGHT - _hud.y;
        g = _track.graphics;
        g.beginFill(0x000000, .7);
        g.drawRect(0, 0, TRACK_WIDTH, TRACK_HEIGHT);
        g.endFill();
        g.lineStyle(2, 0xFFFFFF);
        g.drawRect(0, 0, TRACK_WIDTH, TRACK_HEIGHT);
        // _track is not added to _hud until we know the duration

        const trackMask :Shape = new Shape();
        g = trackMask.graphics;
        g.beginFill(0xFFFFFF);
        g.drawRect(0, 0, TRACK_WIDTH, TRACK_HEIGHT);
        _track.addChild(trackMask);
        _track.mask = trackMask;

        _knob = new Sprite();
        _knob.y = TRACK_HEIGHT / 2;
        g = _knob.graphics;
        g.lineStyle(1, 0xFFFFFF);
        g.beginFill(0x000099);
        g.drawCircle(0, 0, TRACK_HEIGHT/2 - 1);
        // _knob is not added to _track until we know the position

        _track.addEventListener(MouseEvent.CLICK, handleTrackClick);
        _knob.addEventListener(MouseEvent.MOUSE_DOWN, handleKnobDown);
    }

    override public function get width () :Number

import flash.display.Shape;
import flash.display.Sprite;

import flash.events.MouseEvent;

import flash.geom.Point;

import com.threerings.util.ValueEvent;

/**
 * An extremely simple video display. Click to pause/play.
 */
public class SimpleVideoDisplay extends Sprite
{
