anchor.diff:  	var/list/qdel_list = list()	// list of all types that have been qdel()eted
   #endif
   
  -/datum/controller/subsystem/garbage_collector/New()
  +/datum/controller/subsystem/garbage/New()
   	NEW_SS_GLOBAL(SSgarbage)
   
  -/datum/controller/subsystem/garbage_collector/stat_entry(msg)
  +/datum/controller/subsystem/garbage/stat_entry(msg)
   	msg += "Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|"
   	msg += "GR:"
   	if (!(delslasttick+gcedlasttick))
  
positive.code: 		msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%"
  	..(msg)
  
  /datum/controller/subsystem/garbage_collector/fire()
  	HandleToBeQueued()
  	if(state == SS_RUNNING)
  		HandleQueue()
  
  //If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond.
  //Don't attempt to optimize, not worth the effort.
  /datum/controller/subsystem/garbage_collector/proc/HandleToBeQueued()
  	var/list/tobequeued = src.tobequeued
  	var/starttime = world.time
  	var/starttimeofday = world.timeofday
  
negative.code: 			++gcedlasttick
  			++totalgcs
  
  /datum/controller/subsystem/garbage/proc/QueueForQueuing(datum/A)
  	if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
  		tobequeued += A
  		A.gc_destroyed = GC_QUEUED_FOR_QUEUING
  
  /datum/controller/subsystem/garbage/proc/Queue(datum/A)
  	if (!istype(A) || (!isnull(A.gc_destroyed) && A.gc_destroyed >= 0))
  		return
  	if (A.gc_destroyed == GC_QUEUED_FOR_HARD_DEL)
  