anchor.diff:  	init_order = INIT_ORDER_VIS
   
   	var/list/vis_overlay_cache
  -	var/list/unique_vis_overlays
   	var/list/currentrun
  -	var/datum/callback/rotate_cb
   
   /datum/controller/subsystem/vis_overlays/Initialize()
   	vis_overlay_cache = list()
  -	unique_vis_overlays = list()
  -	rotate_cb = CALLBACK(src, .proc/rotate_vis_overlay)
   	return ..()
   
   /datum/controller/subsystem/vis_overlays/fire(resumed = FALSE)
  
positive.code: 		return
  	thing.managed_vis_overlays -= overlays
  	if(!length(thing.managed_vis_overlays))
  		thing.managed_vis_overlays = null
  		UnregisterSignal(thing, COMSIG_ATOM_DIR_CHANGE)
  
  /datum/controller/subsystem/vis_overlays/proc/rotate_vis_overlay(atom/thing, old_dir, new_dir)
  	if(old_dir == new_dir)
  		return
  	var/rotation = dir2angle(old_dir) - dir2angle(new_dir)
  	var/list/overlays_to_remove = list()
  	for(var/i in thing.managed_vis_overlays - unique_vis_overlays)
  		var/obj/effect/overlay/vis/overlay = i
  		add_vis_overlay(thing, overlay.icon, overlay.icon_state, overlay.layer, overlay.plane, turn(overlay.dir, rotation), overlay.alpha, overlay.appearance_flags)
  		overlays_to_remove += overlay
  	for(var/i in thing.managed_vis_overlays & unique_vis_overlays)
  		var/obj/effect/overlay/vis/overlay = i
  		overlay.dir = turn(overlay.dir, rotation)
  	remove_vis_overlay(thing, overlays_to_remove)
  
negative.code: 		overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
  		overlay.cache_expiration = -1
  		var/cache_id = "\ref[overlay]@{[world.time]}"
  		vis_overlay_cache[cache_id] = overlay
  		. = overlay
  	thing.vis_contents += overlay
  