 
 import org.osmf.display.MediaPlayerSprite;
 import org.osmf.display.ScaleMode;
-import org.osmf.events.BufferTimeChangeEvent;
-import org.osmf.events.BytesDownloadedChangeEvent;
-import org.osmf.events.DimensionChangeEvent;
-import org.osmf.events.DurationChangeEvent;
-import org.osmf.events.LoadableStateChangeEvent;
+import org.osmf.display.ScaleModeUtils;
+import org.osmf.events.AudioEvent;
+import org.osmf.events.DimensionEvent;
+import org.osmf.events.LoadEvent;
 import org.osmf.events.MediaPlayerStateChangeEvent;
-import org.osmf.events.MutedChangeEvent;
-import org.osmf.events.PlayheadChangeEvent;
 import org.osmf.events.PlayingChangeEvent;
-import org.osmf.events.SeekingChangeEvent;
-import org.osmf.events.TraitEvent;
-import org.osmf.events.VolumeChangeEvent;
-import org.osmf.media.IMediaResource;
-import org.osmf.media.MediaFactory;
+import org.osmf.events.TimeEvent;
 import org.osmf.media.MediaPlayer;
 import org.osmf.media.MediaPlayerState;
 import org.osmf.media.URLResource;
 import org.osmf.net.NetLoader;
-import org.osmf.net.NetStreamCodes;
 import org.osmf.net.dynamicstreaming.DynamicStreamingItem;
 import org.osmf.net.dynamicstreaming.DynamicStreamingNetLoader;
 import org.osmf.net.dynamicstreaming.DynamicStreamingResource;
-import org.osmf.traits.ILoadable;
-import org.osmf.traits.LoadState;
-import org.osmf.traits.MediaTraitType;
 import org.osmf.utils.FMSURL;
-import org.osmf.utils.MediaFrameworkStrings;
 import org.osmf.utils.URL;
 import org.osmf.video.VideoElement;
 
 import spark.components.mediaClasses.DynamicStreamingVideoItem;
 import spark.components.mediaClasses.DynamicStreamingVideoSource;
-import spark.events.VideoEvent;
 import spark.primitives.BitmapImage;
 
 use namespace mx_internal;

//--------------------------------------

/**
 * Dispatched when the data is received as a download operation progresses.
 *
 * @eventType flash.events.ProgressEvent
 */
[Event(name="bytesDownloadedChange",type="org.osmf.events.BytesDownloadedChangeEvent")]

/**
 * Dispatched when the MediaPlayer's state has changed.
 * 
 * @eventType org.osmf.events.PlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE
 */	
[Event(name="mediaPlayerStateChange", type="org.osmf.events.MediaPlayerStateChangeEvent")]

/**
 * Dispatched when the <code>playhead</code> property of the MediaPlayer has changed.
 * This value is updated at the interval set by 
 * the MediaPlayer's <code>playheadUpdateInterval</code> property.
 *
 * @eventType org.osmf.events.PlayheadChangeEvent.PLAYHEAD_CHANGE
 **/
[Event(name="playheadChange",type="org.osmf.events.PlayheadChangeEvent")]  

/**
 * Dispatched when the <code>duration</code> property of the media has changed.
 * 
 * @eventType org.osmf.events.DurationChangeEvent.DURATION_CHANGE
 */
[Event(name="durationChange", type="org.osmf.events.DurationChangeEvent")]

//--------------------------------------
//  Other metadata

        if (thumbnailSource && thumbnailGroup)
        {
            // get what the size of our image should be
            var newSize:Point = ScaleModeUtils.getScaledSize(scaleMode, unscaledWidth, unscaledHeight, 
                thumbnailGroup.getPreferredBoundsWidth(), thumbnailGroup.getPreferredBoundsHeight());
            
            thumbnailGroup.setLayoutBoundsSize(newSize.x, newSize.y);
