anchor.diff:  	QDEL_NULL(occupant)
   	open_machine()
   	name = initial(name)
  +
  +#undef CRYO_DESTROY
  +#undef CRYO_PRESERVE
  +#undef CRYO_OBJECTIVE
   
   /obj/machinery/cryopod/MouseDrop_T(mob/living/target, mob/user)
   	if(!istype(target) || user.incapacitated() || !target.Adjacent(user) || !Adjacent(user) || !ismob(target) || (!ishuman(user) && !iscyborg(user)) || !istype(user.loc, /turf) || target.buckled)
  
positive.code: 	req_one_access = list(ACCESS_HEADS, ACCESS_ARMORY) //Heads of staff or the warden can go here to claim recover items from their department that people went were cryodormed with.
  	var/mode = null
  
  	//Used for logging people entering cryosleep and important items they are carrying.
  	var/list/frozen_crew = list()
  	var/list/frozen_items = list()
  
  	var/storage_type = "crewmembers"
  	var/storage_name = "Cryogenic Oversight Control"
  	var/allow_items = TRUE
  
  /obj/machinery/computer/cryopod/attack_ai()
  	attack_hand()
  
  /obj/machinery/computer/cryopod/attack_hand(mob/user = usr)
  	if(!is_operational())
  		return
  
  	user.set_machine(src)
  	add_fingerprint(user)
  
  	var/dat
  
  	dat += "<hr/><br/><b>[storage_name]</b><br/>"
  	dat += "<i>Welcome, [user.real_name].</i><br/><br/><hr/>"
  	dat += "<a href='?src=[REF(src)];log=1'>View storage log</a>.<br>"
  	if(allow_items)
  		dat += "<a href='?src=[REF(src)];view=1'>View objects</a>.<br>"
  		dat += "<a href='?src=[REF(src)];item=1'>Recover object</a>.<br>"
  		dat += "<a href='?src=[REF(src)];allitems=1'>Recover all objects</a>.<br>"
  
  	user << browse(dat, "window=cryopod_console")
  	onclose(user, "cryopod_console")
  
  /obj/machinery/computer/cryopod/Topic(href, href_list)
  	if(..())
  
negative.code: 
  			despawn_occupant()
  
  #define CRYO_DESTROY 0
  #define CRYO_PRESERVE 1
  #define CRYO_OBJECTIVE 2
  
  /obj/machinery/cryopod/proc/should_preserve_item(obj/item/I)
  	for(var/datum/objective_item/steal/T in control_computer.theft_cache)
  		if(istype(I, T.targetitem) && T.check_special_completion(I))
  			return CRYO_OBJECTIVE
  	for(var/T in preserve_items)
  		if(istype(I, T) && !(I.type in do_not_preserve_items))
  			return CRYO_PRESERVE
  	return CRYO_DESTROY
  
  // This function can not be undone; do not call this unless you are sure
  /obj/machinery/cryopod/proc/despawn_occupant()
  	if(!control_computer)
  		find_control_computer()
  
  	var/mob/living/mob_occupant = occupant
  
  	//Handle Borg stuff first
  	if(iscyborg(mob_occupant))
  		var/mob/living/silicon/robot/R = mob_occupant
  		if(!istype(R)) return ..()
  
  		R.contents -= R.mmi
  		qdel(R.mmi)
  		for(var/obj/item/I in R.module) // the tools the borg has; metal, glass, guns etc
  			for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags
  				if(should_preserve_item(O) != CRYO_DESTROY) // Preserve important things inside the item
  					continue
  				O.forceMove(src)
  			R.module.remove_module(I, TRUE)	//delete the module itself so it doesn't transfer over.
  
  	//Drop all items into the pod.
  	for(var/obj/item/I in mob_occupant)
  		mob_occupant.doUnEquip(I)
  		I.forceMove(src)
  
  		if(I.contents.len) //Make sure we catch anything not handled by qdel() on the items.
  			if(should_preserve_item(I) != CRYO_DESTROY) // Don't remove the contents of things that need preservation
  				continue
  			for(var/obj/item/O in I.contents)
  				if(istype(O, /obj/item/tank)) //Stop eating pockets, you fuck!
  					continue
  				O.forceMove(src)
  
  	//Delete all items not on the preservation list.
  	var/list/items = contents
  	items -= occupant // Don't delete the occupant
  
  	for(var/obj/item/I in items)
  		if(istype(I, /obj/item/pda))
  			var/obj/item/pda/P = I
  			QDEL_NULL(P.id)
  			qdel(P)
  			continue
  
  		var/preserve = should_preserve_item(I)
  		if(preserve == CRYO_DESTROY)
  			qdel(I)
  		else if(control_computer && control_computer.allow_items)
  			control_computer.frozen_items += I
  			if(preserve == CRYO_OBJECTIVE)
  				control_computer.objective_items += I
  			I.loc = null
  		else
  			I.forceMove(loc)
  
  	//Update any existing objectives involving this mob.
  	for(var/datum/objective/O in GLOB.objectives)
  