anchor.diff:  	del_reqs return the list of parts resulting object will receive as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already
   */
   
  -/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user)
  +/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a)
   	var/list/surroundings
   	var/list/Deletion = list()
   	. = list()
  
positive.code: /datum/component/personal_crafting/Initialize()
  	if(!ismob(parent))
  		return COMPONENT_INCOMPATIBLE
  	RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
  
  /datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL)
  	var/datum/hud/H = user.hud_used
  
negative.code: 	if(user == parent)
  		ui_interact(user)
  
  //For the UI related things we're going to assume the user is a mob rather than typesetting it to an atom as the UI isn't generated if the parent is an atom
  /datum/component/personal_crafting/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.not_incapacitated_turf_state)
  	ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
  	if(!ui)
  