anchor.diff:  		pool(obj/particle/p)
   			p.loc = null
   
  +			if(!pool) pool = list()
  +
   			if("[p.type]" in pool)
   				pool["[p.type]"] += p
   
  -				if(length(pool["[type]"]) > DECAY_SIZE)
  -					decay()
  -
  -
  +				decay()
   			else
   				pool["[p.type]"] = list(p)
   
   		decay()
  +			set waitfor = 0
   			if(decay) return
   			decay = TRUE
  -			spawn(DECAY_TIME)
  -				for(var/t in pool)
  -					for(var/p in t)
  -						t -= p
  -					pool -= t
  -				decay = FALSE
  +
  +			sleep(DECAY_TIME)
  +
  +			var/size = 0
  +			for(var/t in pool)
  +				size += length(pool[t])
  +
  +			if(size > DECAY_SIZE)
  +				pool = null
  +
  +			decay = FALSE
   
   
   
  
positive.code: 	proc
  		get_particle(ptype)
  			var/obj/particle/p
  			if(!("[ptype]" in pool))
  				p = new ptype()
  			else
  				p = pool["[ptype]"][1]
  
negative.code: 
  ParticleEmitter
  	var
  		list/pool
  
  		decay = FALSE
  		const/DECAY_TIME = 3000
  