diff --git a/lib/bsp_loader/src/bsp.rs b/lib/bsp_loader/src/bsp.rs
index 1871ccc..9c7b11b 100644
--- a/lib/bsp_loader/src/bsp.rs
+++ b/lib/bsp_loader/src/bsp.rs
@@ -576,15 +576,18 @@ impl PartialMap2<'_>{
 		}));
 
 		//calculate teleports
+		let first_stage_spawn_model_id=self.first_stage.as_ref().unwrap().spawn();
 		let mut teleport_destinations=HashMap::new();
 		let stages={
 			let mut stages=self.teleport_destinations.iter().map(|(&target,&model_id)|(target,model_id)).collect::<Vec<_>>();
 			stages.sort_by_key(|&(target,_)|target);
-			stages.into_iter().enumerate().map(|(stage_id,(target,model_id))|{
-				let stage_id=modes::StageId::new(stage_id as u32);
-				teleport_destinations.insert(target,stage_id);
-				Stage::empty(model_id)
-			}).collect()
+			self.first_stage.into_iter().chain(
+				stages.into_iter().enumerate().map(|(stage_id,(target,model_id))|{
+					let stage_id=modes::StageId::new(1+stage_id as u32);
+					teleport_destinations.insert(target,stage_id);
+					Stage::empty(model_id)
+				})
+			).collect()
 		};
 		let mut elements=HashMap::new();
 		for (teleport_model,target) in self.teleports{
@@ -605,7 +608,7 @@ impl PartialMap2<'_>{
 		}
 		let main_mode=NormalizedMode::new(Mode::new(
 			strafesnet_common::gameplay_style::StyleModifiers::default(),
-			self.first_stage.unwrap().spawn(),
+			first_stage_spawn_model_id,
 			HashMap::new(),
 			stages,
 			elements,