anchor.diff:  	if(!(source.slot_flags & slot)) //If EQUIPPED TO HANDS FOR EXAMPLE
   		return
   	is_worn = TRUE
  +	if(wearer && wearer != equipper)
  +		UnregisterSignal(wearer, COMSIG_PARENT_QDELETING)
  +		wearer.remove_fov_trait(src, fov_angle)
  +	wearer = equipper
  +	RegisterSignal(wearer, COMSIG_PARENT_QDELETING, .proc/on_wearer_deleted)
   	if(visor_up)
   		return
  -	equipper.add_fov_trait(source.type, fov_angle)
  +	equipper.add_fov_trait(src, fov_angle)
   	equipper.update_fov()
  +
  +/datum/component/clothing_fov_visor/proc/on_wearer_deleted(datum/source)
  +	SIGNAL_HANDLER
  +	wearer.remove_fov_trait(src, fov_angle)
  +	wearer = null
   
   /// On toggling the visor, we may want to add or remove FOV trait from the wearer.
   /datum/component/clothing_fov_visor/proc/on_visor_toggle(datum/source, visor_state)
  
positive.code: 
  /datum/component/clothing_fov_visor/UnregisterFromParent()
  	UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED, COMSIG_CLOTHING_VISOR_TOGGLE))
  	return ..()
  
  /// On dropping the item, remove the FoV trait if visor was down.
  /datum/component/clothing_fov_visor/proc/on_drop(datum/source, mob/living/dropper)
  	SIGNAL_HANDLER
  	is_worn = FALSE
  	if(visor_up)
  		return
  	dropper.remove_fov_trait(source.type, fov_angle)
  	dropper.update_fov()
  
  /// On equipping the item, add the FoV trait if visor isn't up.
  
negative.code: 	if(!is_worn)
  		return
  	var/obj/item/clothing/clothing_parent = parent
  	var/mob/living/current_wearer = clothing_parent.loc //This has to be the case due to equip/dropped keeping track.
  	if(visor_up)
  		current_wearer.remove_fov_trait(src, fov_angle)
  		current_wearer.update_fov()
  	else
  		current_wearer.add_fov_trait(src, fov_angle)
  		current_wearer.update_fov()
  