 					return U.UNCONNECTED_COLOR;
 				return 0xff000000;
 			}
+			
+			if (overlapsPoint(FlxG.mouse))
+				return U.HIGHLIGHTED_COLOR;
 			return 0xff000000; //TODO
 		}
 		

		override public function overlapsPoint(p:FlxPoint, _:Boolean=false, __:FlxCamera=null):Boolean {
			if (!link.exists) return false;
			
			//TODO: implement
			return false;
		}
		
		override public function overlaps(o:FlxBasic, _:Boolean=false, __:FlxCamera=null):Boolean {
			if (!link.exists) return false;
			
			//TODO: implement
			return false;
		}
		

										   Math.floor((source.y + dest.y) / 2));
			var primaryHorizontal:Boolean = Math.abs(source.x - dest.x) >= Math.abs(source.y - dest.y);
			
			//TODO: split up very long wires
			if (primaryHorizontal) {
				cachedLines.push(makeCachedLine(Math.min(source.x, midpoint.x), source.y, Math.abs(source.x - midpoint.x), true));
				cachedLines.push(makeCachedLine(midpoint.x, Math.min(source.y, dest.y), Math.abs(source.y - dest.y), false));
				cachedLines.push(makeCachedLine(Math.min(midpoint.x, dest.x), dest.y, Math.abs(dest.x - midpoint.x), true));
			} else {
				cachedLines.push(makeCachedLine(source.x, Math.min(source.y, midpoint.y), Math.abs(source.y - midpoint.y), false));
				cachedLines.push(makeCachedLine(Math.min(source.x, dest.x), midpoint.y, Math.abs(source.x - dest.x), true));
				cachedLines.push(makeCachedLine(dest.x, Math.min(midpoint.y, dest.y), Math.abs(dest.y - midpoint.y), true));
			}
			
			cachedZoom = U.zoom;
			cachedStart = link.source.Loc.clone();
			cachedEnd = link.destination.Loc.clone();
		}
		
		private function makeCachedLine(X:int, Y:int, Length:int, Horizontal:Boolean):FlxSprite {
			X *= U.GRID_DIM;
			Y *= U.GRID_DIM;
			Length *= U.GRID_DIM;
			var thickness:int = getWidth();
			var fullThickness:int = thickness + EXTRA_WIDTH;
			
			var line:FlxSprite = new FlxSprite(X - fullThickness/2, Y - fullThickness/2);
			
			var width:int, height:int;
			if (Horizontal) {
				width = Length + thickness;
				height = thickness;
				
			} else {
				height = Length + thickness;
				width = thickness;
			}
			
			line.makeGraphic(width, height, 0xffffffff, true);
			
			line.height += EXTRA_WIDTH / 2;
			line.offset.y = - EXTRA_WIDTH / 2;
			line.width += EXTRA_WIDTH / 2;
			line.offset.x = - EXTRA_WIDTH / 2;
			
			return line;
		}
		
		protected function drawCached():void {
