 			}
 			
 			cachedZoom = U.zoom;
+			cachesByZoom[zoomIndex] = cachedLines;
+			
 			cachedStart = link.source.Loc.clone();
 			cachedEnd = link.destination.Loc.clone();
-			cachesByZoom[zoomIndex] = cachedLines;
 		}
 		
 		private function makeCachedLine(X:int, Y:int, Length:int, Horizontal:Boolean):FlxSprite {

					return;
				}
				
				buildCache();
			}
			drawCached();
		}

			return link.deployed && (cachesByZoom[zoomIndex] || cachesThisFrame < MAX_CACHES_PER_FRAME);
		}
		
		protected function fetchCache():void {
			if (!cachedStart || !link.source.Loc.equals(cachedStart) || !link.destination.Loc.equals(cachedEnd))
				cachesByZoom = [];
			
			if (!cachesByZoom[zoomIndex])
				buildCache();
				
			cachedLines = cachesByZoom[zoomIndex];
			cachedZoom = U.zoom;
		}
		
		protected function buildCache():void {
			var cachedLines:Vector.<FlxSprite> = new Vector.<FlxSprite>;
			_bounds = null;
			
			var source:Point = link.source.Loc;
