anchor.diff:  			pref_species = new newtype
   
   	scars_index = rand(1,5)
  -
  -	if(!S["features["mcolor"]"] || S["features["mcolor"]"] == "#000")
  -		WRITE_FILE(S["features["mcolor"]"]	, "#FFF")
  -
  -	if(!S["feature_ethcolor"] || S["feature_ethcolor"] == "#000")
  -		WRITE_FILE(S["feature_ethcolor"]	, "9c3030")
   
   	//Character
   	READ_FILE(S["real_name"], real_name)
  
positive.code: 	READ_FILE(S["all_quirks"], all_quirks)
  
  	//try to fix any outdated data if necessary
  	if(needs_update >= 0)
  		update_character(needs_update, S)		//needs_update == savefile_version if we need an update (positive integer)
  
  	//Sanitize
  
  	real_name = reject_bad_name(real_name)
  	gender = sanitize_gender(gender)
  	body_type = sanitize_gender(body_type, FALSE, FALSE, gender)
  
negative.code: 	pda_style		= sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style))
  	pda_color		= sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
  	key_bindings 	= sanitize_keybindings(key_bindings)
  	
  	if(needs_update >= 0) //save the updated version
  		var/old_default_slot = default_slot
  		var/old_max_save_slots = max_save_slots
  		
  		for (var/slot in S.dir) //but first, update all current character slots.
  			if (copytext(slot, 1, 10) != "character")
  				continue
  			var/slotnum = text2num(copytext(slot, 10))
  			if (!slotnum)
  				continue
  			max_save_slots = max(max_save_slots, slotnum) //so we can still update byond member slots after they lose memeber status
  			default_slot = slotnum
  			if (load_character())
  				save_character()
  		default_slot = old_default_slot
  		max_save_slots = old_max_save_slots
  		save_preferences()
  
  	return TRUE
  
  