anchor.diff:  /datum/component
  -	var/enabled = TRUE      					// Enables or disables the components
  -	var/dupe_mode = COMPONENT_DUPE_HIGHLANDER	// How components of the same type are handled in the same parent
  -	var/list/signal_procs						// list of signals -> callbacks
  -	var/datum/parent							// parent datum
  +	var/enabled = TRUE
  +	var/dupe_mode = COMPONENT_DUPE_HIGHLANDER
  +	var/list/signal_procs
  +	var/datum/parent
   
   /datum/component/New(datum/P, ...)
   	var/dm = dupe_mode
  
positive.code: 	
  	procs[sig_type] = CALLBACK(src, proc_on_self)    
  
  /datum/var/list/datum_components //list of /datum/component
  
  // Send a signal to all other components in the container.
  /datum/proc/SendSignal(sigtype, list/sig_args, async = FALSE)
  	var/list/comps = datum_components
  	. = FALSE
  	for(var/I in comps)
  		var/datum/component/C = I
  		if(!C.enabled)
  			continue
  		var/list/sps = C.signal_procs
  		var/datum/callback/CB = LAZYACCESS(sps, sigtype)
  		if(!CB)
  			continue
  		if(!async)
  			. |= CB.Invoke(sig_args)
  		else
  			. |= CB.InvokeAsync(sig_args)
  
  /datum/proc/GetComponent(c_type)
  	for(var/I in datum_components)
  		if(istype(I, c_type))
  			return I
  
  /datum/proc/GetExactComponent(c_type)
  	for(var/I in datum_components)
  		var/datum/component/C = I
  		if(C.type == c_type)
  			return I
  
  /datum/proc/GetComponents(c_type)
  	. = list()
  	for(var/I in datum_components)
  		if(istype(I, c_type))
  			. += I
  
  /datum/proc/AddComponents(list/new_types)
  	for(var/new_type in new_types)
  		AddComponent(new_type)
  
  /datum/proc/AddComponent(new_type, ...)
  	var/nt = new_type
  
negative.code: 	var/datum/component/C = new nt(arglist(args))
  	return QDELING(C) ? GetComponent(new_type) : C
  
  /datum/proc/TakeComponent(datum/component/C)
  	if(!C)
  		return
  	var/datum/helicopter = C.parent
  	if(helicopter == src)
  		//wat
  		return
  	C._RemoveNoSignal()
  	helicopter.SendSignal(COMSIG_COMPONENT_REMOVING, C)
  	C.OnTransfer(src)
  	C.parent = src
  	SendSignal(COMSIG_COMPONENT_ADDED, C)
  