anchor.diff:  	//socks
   	init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f)
   
  -
  -
  -	var/list/paths
  -	//Surgery Steps - Initialize all /datum/surgery_step into a list
  -	paths = subtypesof(/datum/surgery_step)
  -	for(var/T in paths)
  -		var/datum/surgery_step/S = new T
  -		surgery_steps += S
  +	init_subtypes(/datum/surgery_step, surgery_steps)
   	sort_surgeries()
   
  -	//List of job. I can't believe this was calculated multiple times per tick!
  -	paths = subtypesof(/datum/job) -list(/datum/job/ai,/datum/job/cyborg)
  -	for(var/T in paths)
  -		var/datum/job/J = new T
  -		joblist[J.title] = J
  -
  -	paths = subtypesof(/datum/superheroes)
  -	for(var/T in paths)
  -		var/datum/superheroes/S = new T
  -		all_superheroes[S.name] = S
  -
  -	//Languages and species.
  -	paths = subtypesof(/datum/language)
  -	for(var/T in paths)
  -		var/datum/language/L = new T
  -		all_languages[L.name] = L
  +	init_datum_subtypes(/datum/job, joblist, list(/datum/job/ai, /datum/job/cyborg), "title")
  +	init_datum_subtypes(/datum/superheroes, all_superheroes, null, "name")
  +	init_datum_subtypes(/datum/language, all_languages, null, "name")
   
   	for (var/language_name in all_languages)
   		var/datum/language/L = all_languages[language_name]
  
positive.code: //creates every subtype of prototype (excluding prototype) and adds it to list L.
  //if no list/L is provided, one is created.
  /proc/init_subtypes(prototype, list/L)
          if(!istype(L))        L = list()
          for(var/path in typesof(prototype))
                  if(path == prototype)        continue
                  L += new path()
          return L
  
negative.code: 			language_keys[".[lowertext(L.key)]"] = L
  			language_keys["#[lowertext(L.key)]"] = L
  
  	var/list/paths = subtypesof(/datum/species)
  	var/rkey = 0
  	for(var/T in paths)
  		var/datum/species/S = new T
  		S.race_key = ++rkey //Used in mob icon caching.
  		all_species[S.name] = S
  
  		if(S.flags & IS_WHITELISTED)
  			whitelisted_species += S.name
  
  	init_subtypes(/datum/table_recipe, table_recipes)
  	return 1
  
  /* // Uncomment to debug chemical reaction list.
  