anchor.diff:  
   /datum/timedevent/Destroy()
   	SStimer.processing -= src
  -	return ..()
  +	SStimer.hashes -= hash
  +	return QDEL_HINT_IWILLGC
   
  -/proc/addtimer(thingToCall, procToCall, wait, argList = list())
  +/proc/addtimer(thingToCall, procToCall, wait, unique = FALSE, ...)
   	if (!SStimer) //can't run timers before the mc has been created
   		return
   	if (!thingToCall || !procToCall || wait <= 0)
  
positive.code: 	priority = 1
  
  	var/list/datum/timedevent/processing
  
  
  /datum/subsystem/timer/New()
  	NEW_SS_GLOBAL(SStimer)
  	processing = list()
  
  
  /datum/subsystem/timer/stat_entry(msg)
  	..("P:[processing.len]")
  
  /datum/subsystem/timer/fire()
  	if (!processing.len)
  		can_fire = 0 //nothing to do, lets stop firing.
  		return
  	for (var/datum/timedevent/event in processing)
  		//                    hacky i know, but its the only way to ensure this works with clients
  		if (!event.thingToCall || qdeleted(event.thingToCall))
  			qdel(event)
  		if (event.timeToRun <= world.time)
  			spawn(-1)
  				call(event.thingToCall,event.procToCall)(arglist(event.argList))
  			qdel(event)
  
  /datum/timedevent
  	var/thingToCall
  
negative.code: 	var/timeToRun
  	var/argList
  	var/id
  	var/hash
  	var/static/nextid = 1
  
  /datum/timedevent/New()
  