anchor.diff:  		position = 0
   
   	operated = 1
  -	update()
  +	update_icon()
   
   	// find any switches with same id as this one, and set their positions to match us
  -	for(var/obj/machinery/conveyor_switch/S in GLOB.machines)
  -		if(S.id == src.id)
  -			S.position = position
  -			S.update()
  +	for(var/obj/machinery/conveyor_switch/S in GLOB.conveyors_by_id[id])
  +		S.position = position
  +		S.update_icon()
   		CHECK_TICK
   
   /obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params)
  
positive.code: 	if(A == user.loc)
  		to_chat(user, "<span class='notice'>You cannot place a conveyor belt under yourself.</span>")
  		return
  	var/obj/machinery/conveyor/C = new/obj/machinery/conveyor(A,cdir)
  	C.id = id
  	transfer_fingerprints_to(C)
  	qdel(src)
  
  
negative.code: 
  	var/id = "" 				// must match conveyor IDs to control them
  
  	anchored = TRUE
  	speed_process = TRUE
  
  
  
  /obj/machinery/conveyor_switch/Initialize(mapload, newid)
  	. = ..()
  	if (newid)
  		id = newid
  	update_icon()
  	LAZYADD(GLOB.conveyors_by_id[id], src)
  
  /obj/machinery/conveyor_switch/Destroy()
  	LAZYREMOVE(GLOB.conveyors_by_id[id], src)
  	. = ..()
  
  /obj/machinery/conveyor_switch/vv_edit_var(var_name, var_value)
  	if (var_name == "id")
  		// if "id" is varedited, update our list membership
  		LAZYREMOVE(GLOB.conveyors_by_id[id], src)
  		. = ..()
  		LAZYADD(GLOB.conveyors_by_id[id], src)
  	else
  		return ..()
  
  // update the icon depending on the position
  
  /obj/machinery/conveyor_switch/update_icon()
  	if(position<0)
  		icon_state = "switch-rev"
  	else if(position>0)
  