 			
 			var segColor:uint = getColor();
 			hSeg.color = vSeg.color = join.color = segColor;
-			hSeg.alpha = vSeg.alpha = join.alpha = wire.FIXED ? 0.5 : 1;
-			
-			if (wire.deployed) {
-				drawJoin(wire.path[0]);
-				drawJoin(wire.path[wire.path.length - 1]);
-			}
+			
+			drawJoins();
 			
 			iterWire(function drawWire(seg:FlxSprite):void {
 				seg.draw();

				buildSegs();
		}
		
		protected function drawJoin(current:Point):void {
			var carriersAt:Vector.<Carrier> = U.state.grid.carriersAtPoint(current);
			if (!carriersAt || carriersAt.length < 2)

		override public function overlapsPoint(p:FlxPoint, _:Boolean=false, __:FlxCamera=null):Boolean {
			if (!wire.exists) return false;
			
			//FIXME
			/*var topLeft:Point = new Point(int.MAX_VALUE, int.MAX_VALUE);
			var bottomRight:Point = new Point(int.MIN_VALUE, int.MIN_VALUE);
			for each (var pathPoint:Point in path) {
				topLeft.x = Math.min(pathPoint.x, topLeft.x);
				topLeft.y = Math.min(pathPoint.y, topLeft.y);
				bottomRight.x = Math.max(pathPoint.x, bottomRight.x);
				bottomRight.y = Math.max(pathPoint.y, bottomRight.y);
			}
			
			if (p.x < topLeft.x * U.GRID_DIM || p.y < topLeft.y * U.GRID_DIM ||
				p.x > bottomRight.x * U.GRID_DIM || p.y > topLeft.y * U.GRID_DIM)
				return false;*/
			
			willOverlap = false;
			iterWire(function checkOverlap(seg:FlxSprite):void {
