anchor.diff:  		reagents.delete()
   	reagents = new/datum/reagents(max_vol)
   	reagents.my_atom = src
  +
  +//also a convenience , used to create smoke which will be used a lot in these reactions
  +datum/proc/create_smoke(var/datum/reagents/holder, var/created_volume)
  +	var/location = get_turf(holder.my_atom)
  +	var/datum/effect/effect/system/chem_smoke_spread/S = new /datum/effect/effect/system/chem_smoke_spread//yer it's stolen , don't judge
  +	S.attach(location)
  +	playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
  +	spawn(0)
  +		if(S)
  +			S.set_up(holder, 10, 0, location)
  +			S.start()
  +			sleep(10)
  +			S.start()
  +		if(holder && holder.my_atom)
  +			holder.clear_reagents()
  +	return
  
positive.code: 		var/current_reagent_transfer = current_reagent.volume * part
  		if(preserve_data)
  			trans_data = current_reagent.data
  		R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data)
  		src.remove_reagent(current_reagent.id, current_reagent_transfer)
  
  	src.update_total()
  
negative.code: 					R.reaction_obj(A, R.volume+volume_modifier)
  	return
  
  datum/reagents/proc/add_reagent(var/reagent, var/amount,var/temp = 270, var/list/data=null)
  	if(!isnum(amount)) return 1
  	update_total()
  	if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
  	//adjust temperature
  	if(total_volume > 0)
  		var/mult = amount/(total_volume + amount)
  		var/temp_dif = present_machines[1] - temp//assume it's 270 , I can't be bothered to change all the add_reagent procs atm
  		present_machines[1] -= temp_dif * mult// apply the new temperature to the current reagent holder
  	else
  		present_machines[1] = temp
  	for(var/A in reagent_list)
  
  		var/datum/reagent/R = A
  		if (R.id == reagent)
  			R.volume += amount
  
  			update_total()
  			my_atom.on_reagent_change()
  			R.on_merge(data)
  