 			end.x *= U.GRID_DIM;
 			end.y *= U.GRID_DIM;
 			
-			if (!hSeg || U.zoom != lastZoom)
-				buildSegs();
+			if (!hSeg || U.zoom != segZoom)
+				setSegs();
 			
 			var color:uint = getColor();
 			if (hSeg.color != color)

		}
		
		protected function drawCached():void {
			super.draw();
		}
		
		protected function getColor():uint {

		protected var cached:Boolean;
		protected var cachedZoom:Number;
		
		protected static const hSegs:Array = [];
		protected static const vSegs:Array = [];
		protected static var hSeg:FlxSprite;
		protected static var vSeg:FlxSprite;
		protected static var segZoom:Number;
		public function DLink(link:Link) {
			this.link = link;
		}
		
		protected function buildSegsForZoom():void {
			var w:int = getWidth();
			hSegs[zoomIndex] = new FlxSprite().makeGraphic(U.GRID_DIM, w);
			vSegs[zoomIndex] = new FlxSprite().makeGraphic(w, U.GRID_DIM);
		}
		
		protected function setSegs():void {
			if (!hSegs[zoomIndex])
				buildSegsForZoom();
			
			hSeg = hSegs[zoomIndex];
			vSeg = vSegs[zoomIndex];
			segZoom = U.zoom;
		}
		
		protected function getWidth():int {
			return 2 / U.zoom;
		}
		
		protected function get zoomIndex():int {
			return Math.round(Math.log(U.zoom) / Math.LOG2E);
		}
		
		override public function draw():void {
