 		 * @param width The width of the viewport.
 		 * @param height The height of the viewport.
 		 */
-		public function Viewport(width			: Number,
-								   height		: Number,
-								   antiAliasing	: int	= 0,
-								   rendererType	: Class = null)
+		public function Viewport(width			: uint		= 0,
+								 height			: uint		= 0,
+								 autoResize		: Boolean	= false,
+								 antiAliasing	: int		= 0,
+								 rendererType	: Class 	= null)
 		{
 			this.width = width;
 			this.height = height;
 			
+			_autoResize = autoResize;
 			_aa = antiAliasing;
 			_rendererClass = rendererType || DirectRenderer;
-		}
-		
-		/**
-		 * Create a new Viewport3D object and setup the stage accordingly.
-		 * 
-		 * <ul>
-		 * <li>The resulting Viewport3D object will have the dimensions of the stage.</li>
-		 * <li>The resulting Viewport3D object listens to the Event.RESIZE event of the stage
-		 * in order to update its dimensions.</li>
-		 * <li>The stage "scaleMode" property is set to StageScaleMode.NO_SCALE.</li>
-		 * <li>The stage "align" property is set to StageAlign.TOP_LEFT.</li>
-		 * </ul>
-		 *  
-		 * @param stage
-		 * @param antiAliasing
-		 * @return 
-		 * 
-		 */
-		public static function setupOnStage(stage : Stage, antiAliasing : int = 0) : Viewport
-		{
-			var vp : Viewport = new Viewport(stage.stageWidth,
-											 stage.stageHeight,
-											 antiAliasing);
-			
-			vp.setupOnStage(stage);
-			
-			return vp;
-		}
-		
-		private function setupOnStage(stage : Stage, autoResize : Boolean = true) : void
+			
+			addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
+		}
+		
+		private function addedToStageHandler(event : Event) : void
 		{
 			stage.addChild(this);
 			stage.scaleMode = StageScaleMode.NO_SCALE;

			stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, contextCreatedHandler);
			stage.stage3Ds[0].requestContext3D(Context3DRenderMode.AUTO);
			
			if (autoResize)
				stage.addEventListener(Event.RESIZE, stageResizeHandler);
			
			width = stage.stageWidth;
			height = stage.stageHeight;
			
			showLogo();
		}

	import flash.display3D.Context3D;
	import flash.display3D.Context3DRenderMode;
	import flash.events.Event;
	import flash.events.FullScreenEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.utils.Dictionary;
	import flash.utils.getTimer;
