anchor.diff:  	if(!on || !is_operational || selected_recipe == null)
   		return
   
  -	if(!check_gas_requirements())
  -		return
  -
  -	inject_gases()
  +	if(check_gas_requirements())
  +		inject_gases()
   
   	if(!internal.total_moles())
   		update_parents()
   		return
  +
  +	heat_conduction()
   
   	if(internal_check())
   		if(check_temp_requirements())
  
positive.code: 			internal.temperature = max(internal.temperature + cooling_heat_amount / internal_heat_capacity, TCMB)
  		update_parents()
  
  	if(	(internal.temperature >= (selected_recipe.min_temp * MIN_DEVIATION_RATE) && internal.temperature <= selected_recipe.min_temp) || \
  		(internal.temperature >= selected_recipe.max_temp && internal.temperature <= (selected_recipe.max_temp * MAX_DEVIATION_RATE)))
  		quality_loss = min(quality_loss + 1.5, 100)
  
  	var/median_temperature = (selected_recipe.max_temp - selected_recipe.min_temp) * 0.5
  	if(internal.temperature >= (median_temperature * MIN_DEVIATION_RATE) && internal.temperature <= (median_temperature * MAX_DEVIATION_RATE))
  		quality_loss = max(quality_loss - 5.5, -100)
  
  	if(selected_recipe.reaction_type == "endothermic")
  		internal.temperature = max(internal.temperature - (selected_recipe.energy_release / internal.heat_capacity()), TCMB)
  	else if(selected_recipe.reaction_type == "exothermic")
  		internal.temperature = max(internal.temperature + (selected_recipe.energy_release / internal.heat_capacity()), TCMB)
  
  ///Calculate the total moles needed for the recipe
  /obj/machinery/atmospherics/components/binary/crystallizer/proc/moles_calculations()
  	var/amounts = 0
  
negative.code: 
  ///Calculation for the heat of the various gas mixes and controls the quality of the item
  /obj/machinery/atmospherics/components/binary/crystallizer/proc/heat_calculations()
  	if(	(internal.temperature >= (selected_recipe.min_temp * MIN_DEVIATION_RATE) && internal.temperature <= selected_recipe.min_temp) || \
  		(internal.temperature >= selected_recipe.max_temp && internal.temperature <= (selected_recipe.max_temp * MAX_DEVIATION_RATE)))
  		quality_loss = min(quality_loss + 1.5, 100)
  
  	var/median_temperature = (selected_recipe.max_temp - selected_recipe.min_temp) * 0.5
  	if(internal.temperature >= (median_temperature * MIN_DEVIATION_RATE) && internal.temperature <= (median_temperature * MAX_DEVIATION_RATE))
  		quality_loss = max(quality_loss - 5.5, -100)
  
  	if(selected_recipe.reaction_type == "endothermic")
  		internal.temperature = max(internal.temperature - (selected_recipe.energy_release / internal.heat_capacity()), TCMB)
  	else if(selected_recipe.reaction_type == "exothermic")
  		internal.temperature = max(internal.temperature + (selected_recipe.energy_release / internal.heat_capacity()), TCMB)
  
  ///Conduction between the internal gasmix and the moderating (cooling/heating) gasmix.
  /obj/machinery/atmospherics/components/binary/crystallizer/proc/heat_conduction()
  	var/datum/gas_mixture/cooling_port = airs[1]
  	if(cooling_port.total_moles() > MINIMUM_MOLE_COUNT)
  		if(internal.total_moles() > 0)
  