anchor.diff:  	//   the shuttle.
   	// - We need to check that no additional ports have slipped in from the
   	//   template, because that causes unintended behaviour.
  -	for(var/T in affected)
  -		for(var/obj/docking_port/P in T)
  -			if(istype(P, /obj/docking_port/mobile))
  +	for(var/affected_turfs in affected)
  +		for(var/obj/docking_port/port in affected_turfs)
  +			if(istype(port, /obj/docking_port/mobile))
   				found++
   				if(found > 1)
  -					qdel(P, force=TRUE)
  -					log_mapping("Shuttle Template [S.mappath] has multiple mobile docking ports.")
  +					qdel(port, force=TRUE)
  +					log_mapping("Shuttle Template [loading_template.mappath] has multiple mobile docking ports.")
   				else
  -					preview_shuttle = P
  -			if(istype(P, /obj/docking_port/stationary))
  -				log_mapping("Shuttle Template [S.mappath] has a stationary docking port.")
  +					preview_shuttle = port
  +			if(istype(port, /obj/docking_port/stationary))
  +				log_mapping("Shuttle Template [loading_template.mappath] has a stationary docking port.")
   	if(!found)
  -		var/msg = "load_template(): Shuttle Template [S.mappath] has no mobile docking port. Aborting import."
  -		for(var/T in affected)
  -			var/turf/T0 = T
  +		var/msg = "load_template(): Shuttle Template [loading_template.mappath] has no mobile docking port. Aborting import."
  +		for(var/affected_turfs in affected)
  +			var/turf/T0 = affected_turfs
   			T0.empty()
   
   		message_admins(msg)
   		WARNING(msg)
   		return
   	//Everything fine
  -	S.post_load(preview_shuttle)
  +	loading_template.post_load(preview_shuttle)
   	return TRUE
   
  +/**
  + * Removes the preview_shuttle from the transit Z-level
  + */
   /datum/controller/subsystem/shuttle/proc/unload_preview()
   	if(preview_shuttle)
   		preview_shuttle.jumpToNullSpace()
  
positive.code: 	// get the existing shuttle information, if any
  	var/timer = 0
  	var/mode = SHUTTLE_IDLE
  	var/obj/docking_port/stationary/D
  
  	if(istype(destination_port))
  		D = destination_port
  	else if(existing_shuttle && replace)
  		timer = existing_shuttle.timer
  		mode = existing_shuttle.mode
  		D = existing_shuttle.get_docked()
  
  	if(!D)
  		D = generate_transit_dock(preview_shuttle)
  
  	if(!D)
  		CRASH("No dock found for preview shuttle ([preview_template.name]), aborting.")
  
  	var/result = preview_shuttle.canDock(D)
  	// truthy value means that it cannot dock for some reason
  	// but we can ignore the someone else docked error because we'll
  	// be moving into their place shortly
  	if((result != SHUTTLE_CAN_DOCK) && (result != SHUTTLE_SOMEONE_ELSE_DOCKED))
  		CRASH("Template shuttle [preview_shuttle] cannot dock at [D] ([result]).")
  
  	if(existing_shuttle && replace)
  		existing_shuttle.jumpToNullSpace()
  
  	var/list/force_memory = preview_shuttle.movement_force
  	preview_shuttle.movement_force = list("KNOCKDOWN" = 0, "THROW" = 0)
  	preview_shuttle.mode = SHUTTLE_PREARRIVAL//No idle shuttle moving. Transit dock get removed if shuttle moves too long.
  	preview_shuttle.initiate_docking(D)
  	preview_shuttle.movement_force = force_memory
  
  	. = preview_shuttle
  
negative.code: 
  	QDEL_LIST(remove_images)
  
  /**
   * Loads a shuttle template and sends it to a given destination port, optionally replacing the existing shuttle
   *
   * Arguments:
   * * loading_template - The shuttle template to load
   * * destination_port - The station docking port to send the shuttle to once loaded
   * * replace - Whether to replace the shuttle or create a new one
  */
  /datum/controller/subsystem/shuttle/proc/action_load(datum/map_template/shuttle/loading_template, obj/docking_port/stationary/destination_port, replace = FALSE)
  	// Check for an existing preview
  	if(preview_shuttle && (loading_template != preview_template))
  