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

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

		override public function overlapsPoint(p:FlxPoint, _:Boolean=false, __:FlxCamera=null):Boolean {
			if (!link.exists) return false;
			
			if (!link.deployed)
				return false; //? not implemented
			
			//could check bbox here?
			//check wires
			for each (var line:FlxSprite in cachedLines)
				if (line.overlapsPoint(p, _, __))
					return true;
			return false;
		}
		
		override public function overlaps(o:FlxBasic, _:Boolean=false, __:FlxCamera=null):Boolean {
			if (!link.exists) return false;
			
			if (!link.deployed)
				return false; //? not implemented
			
			//could check bbox here?
			//check wires
			for each (var line:FlxSprite in cachedLines)
				if (line.overlaps(o, _, __))
					return true;
			return false;
		}
		
