anchor.diff:  	selected = null
   	QDEL_NULL(preview_reservation)
   
  -/datum/controller/subsystem/shuttle/proc/load_template(datum/map_template/shuttle/S)
  +/**
  + * Loads a shuttle template into the transit Z level, usually referred to elsewhere in the code as a shuttle preview.
  + * Does not register the shuttle so it can't be used yet, that's handled in action_load()
  + *
  + * Arguments:
  + * * loading_template - The shuttle template to load
  + */
  +/datum/controller/subsystem/shuttle/proc/load_template(datum/map_template/shuttle/loading_template)
   	. = FALSE
   	// Load shuttle template to a fresh block reservation.
  -	preview_reservation = SSmapping.RequestBlockReservation(S.width, S.height, SSmapping.transit.z_value, /datum/turf_reservation/transit)
  +	preview_reservation = SSmapping.RequestBlockReservation(loading_template.width, loading_template.height, SSmapping.transit.z_value, /datum/turf_reservation/transit)
   	if(!preview_reservation)
   		CRASH("failed to reserve an area for shuttle template loading")
  -	var/turf/BL = TURF_FROM_COORDS_LIST(preview_reservation.bottom_left_coords)
  -	S.load(BL, centered = FALSE, register = FALSE)
  -
  -	var/affected = S.get_affected_turfs(BL, centered=FALSE)
  +	var/turf/bottom_left = TURF_FROM_COORDS_LIST(preview_reservation.bottom_left_coords)
  +	loading_template.load(bottom_left, centered = FALSE, register = FALSE)
  +
  +	var/affected = loading_template.get_affected_turfs(bottom_left, centered=FALSE)
   
   	var/found = 0
   	// Search the turfs for docking ports
  
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))
  