anchor.diff:  /obj/item/pda/AltClick()
   	..()
   
  -	if(issilicon(usr))
  -		return
  -
  -	if(usr.canUseTopic(src))
  -		if(id)
  -			remove_id()
  -		else
  -			remove_pen()
  +	if(id)
  +		remove_id()
  +	else
  +		remove_pen()
   
   /obj/item/pda/CtrlClick()
   	..()
   
  -	if(issilicon(usr))
  -		return
  -
  -	if(usr.canUseTopic(src) && !isturf(loc))
  -		remove_pen()
  +	if(isturf(loc)) //stops the user from dragging the PDA by ctrl-clicking it.
  +		return
  +
  +	remove_pen()
   
   /obj/item/pda/verb/verb_remove_id()
   	set category = "Object"
   	set name = "Eject ID"
   	set src in usr
   
  -	if(issilicon(usr))
  -		return
  -
  -	if (usr.canUseTopic(src))
  -		if(id)
  -			remove_id()
  -		else
  -			to_chat(usr, "<span class='warning'>This PDA does not have an ID in it!</span>")
  +	if(id)
  +		remove_id()
  +	else
  +		to_chat(usr, "<span class='warning'>This PDA does not have an ID in it!</span>")
   
   /obj/item/pda/verb/verb_remove_pen()
   	set category = "Object"
   	set name = "Remove Pen"
   	set src in usr
   
  -	if(issilicon(usr))
  -		return
  -
  -	if (usr.canUseTopic(src))
  -		remove_pen()
  +	remove_pen()
   
   /obj/item/pda/proc/remove_pen()
  +
  +	if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
  +		return
  +
   	if(inserted_item)
  -		if(ismob(loc))
  -			var/mob/M = loc
  -			M.put_in_hands(inserted_item)
  -		else
  -			inserted_item.forceMove(drop_location())
  -		to_chat(usr, "<span class='notice'>You remove \the [inserted_item] from \the [src].</span>")
  +		usr.put_in_hands(inserted_item)
  +		to_chat(usr, "<span class='notice'>You remove [inserted_item] from [src].</span>")
   		inserted_item = null
   		update_icon()
   	else
  
positive.code: 	var/list/plist = list()
  	var/list/namecounts = list()
  
  	if(src.aiPDA.toff)
  		to_chat(user, "Turn on your receiver in order to send messages.")
  		return
  
  	for (var/obj/item/pda/P in get_viewable_pdas())
  		if (P == src)
  			continue
  		else if (P == src.aiPDA)
  			continue
  
  		plist[avoid_assoc_duplicate_keys(P.owner, namecounts)] = P
  
negative.code: 					if("1")		// Configure pAI device
  						pai.attack_self(U)
  					if("2")		// Eject pAI device
  						var/turf/T = get_turf(loc)
  						if(T)
  							pai.forceMove(T)
  
  