 		
 		
 		/**
+		 * Determines the number of road segments to draw.
+		 * 
+		 * @default 300
+		 */
+		public function get drawDistance():int
+		{
+			return _drawDistance;
+		}
+		public function set drawDistance(v:int):void
+		{
+			_drawDistance = v;
+		}
+		
+		
+		/**
+		 * Determines haze color.
+		 */
+		public function get hazeColor():uint
+		{
+			return _hazeColor;
+		}
+		public function set hazeColor(v:uint):void
+		{
+			_hazeColor = v;
+		}
+		
+		
+		/**
+		 * The exponential density of haze.
+		 * 
+		 * @default 10
+		 */
+		public function get hazeDensity():int
+		{
+			return _hazeDensity;
+		}
+		public function set hazeDensity(v:int):void
+		{
+			_hazeDensity = v;
+		}
+		
+		
+		/**
 		 * @private
 		 */
 		private function get lastY():Number

		 */
		protected function setup():void
		{
			_renderBuffer = new SoftwareRenderBuffer(_width, _height, false, 0xFF00FF);
			_bufferBitmap = new Bitmap(_renderBuffer);
			_bgScroller = new ParallaxScroller(_width, _sprites.BG_SKY.height, bgLayers);

			_speed = limit(_speed, 0, _maxSpeed);	// or exceed maxSpeed.
			
			/* Calculate scroll offsets for BG layers. */
			if (_bgLayers)
			{
				for (i = 0; i < _bgLayers.length; i++)
				{
					bgLayer = _bgLayers[i];
					bgLayer.offsetFactorX = increase(bgLayer.offsetFactorX, _bgSpeedMult * playerSegment.curve * (_position - startPosition) / _segmentLength, 1.0);
					bgLayer.offsetFactorY = _resolution * _bgSpeedMult * _playerY;
				}
			}
			
			/* Update track time stats. */
			if (_position > _playerZ)
