anchor.diff:  		cell = new cell_type
   		cell.charge = start_charge * cell.maxcharge / 100 		// (convert percentage to actual value)
   
  -	var/area/A = src.loc.loc
  +	var/area/A = loc.loc
   
   	//if area isn't specified use current
   	if(areastring)
  -		src.area = get_area_instance_from_text(areastring)
  -		if(!src.area)
  -			src.area = A
  -			stack_trace("Bad areastring path for [src], [src.areastring]")
  -	else if(isarea(A) && src.areastring == null)
  -		src.area = A
  +		area = get_area_instance_from_text(areastring)
  +		if(!area)
  +			area = A
  +			stack_trace("Bad areastring path for [src], [areastring]")
  +	else if(isarea(A) && areastring == null)
  +		area = A
  +
  +	if(auto_name)
  +		name = "\improper [get_area_name(area, TRUE)] APC"
  +
   	update_icon()
   
   	make_terminal()
  
positive.code: 	var/transfer_in_progress = FALSE //Is there an AI being transferred out of us?
  	var/obj/item/clockwork/integration_cog/integration_cog //Is there a cog siphoning power?
  	var/longtermpower = 10
  	var/auto_name = 0
  	var/failure_timer = 0
  	var/force_update = 0
  	var/emergency_lights = FALSE
  
negative.code: 	// this allows the APC to be embedded in a wall, yet still inside an area
  	if (building)
  		setDir(ndir)
  	tdir = dir		// to fix Vars bug
  	setDir(SOUTH)
  
  	switch(tdir)
  		if(NORTH)
  