anchor.diff:  	if(master_controller != src)
   		if(istype(master_controller))
   			Recover()
  -			master_controller.Del()
  +			qdel(master_controller)
   		else
   			init_subtypes(/datum/subsystem, subsystems)
   
   		master_controller = src
   	calculateGCD()
  +
  +/datum/controller/game_controller/Destroy()
  +	..()
  +	return QDEL_HINT_HARDDEL_NOW
   
   
   /*
  
positive.code: 		while(1)	//far more efficient than recursively calling ourself
  			if(processing_interval > 0)
  				++iteration
  
  				start_time = world.timeofday
  				var/SubSystemRan = 0
  				for(var/datum/subsystem/SS in subsystems)
  					if(SS.can_fire > 0)
  						if(SS.next_fire <= world.time)
  							SubSystemRan = 1
  							timer = world.timeofday
  							last_thing_processed = SS.type
  
negative.code: */
  /datum/controller/game_controller/proc/calculateGCD()
  	var/GCD
  	//shortest fire rate is the lower of two ticks or 1ds
  	var/minimumInterval = min(world.tick_lag*2,1)
  	for(var/datum/subsystem/SS in subsystems)
  		if(SS.wait)
  			GCD = Gcd(round(SS.wait*10), GCD)
  	GCD = round(GCD)
  	if(GCD < minimumInterval*10)
  		GCD = minimumInterval*10
  	processing_interval = GCD/10
  
  /datum/controller/game_controller/proc/setup(zlevel)
  