diff --git a/core/IvmiScene.gd b/core/IvmiScene.gd
index 58a0802731929257212853dbd7f78fa1bf09ce95..9e23e8d0ee7686d13294adbe3886aa5681dd9a61 100644
--- a/core/IvmiScene.gd
+++ b/core/IvmiScene.gd
@@ -77,22 +77,7 @@ func _ready():
 				_xr_interface.connect("session_visible",_on_xr_session)
 				_is_2D = false
 				print("IVMI : Initialised OpenXR Interface")
-				if _open_xr_passthrough :
-					get_viewport().transparent_bg=true
-					var pt : bool = true
-					if _xr_interface.is_passthrough_supported():
-						if !_xr_interface.start_passthrough():
-							pt=false
-						else:
-							var modes = _xr_interface.get_supported_environment_blend_modes()
-							if _xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes:
-								_xr_interface.set_environment_blend_mode(_xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)
-							else:
-								pt=false
-					if pt :
-						print("IVMI : Activated OpenXR Passthrough")
-					else:
-						print("Error : Could not activate OpenXR Passthrough")
+				set_passthrough(_open_xr_passthrough)
 			else:
 					print("Error : Could not initialize OpenXR interface")
 
@@ -134,36 +119,6 @@ func _ready():
 	# Start network
 	_start_network()
 
-func _start_network() -> void :
-	_is_connected=false
-	
-	if _network_mode!=NetMode.None :
-		if _network_protocol==NetProto.Enet :
-			match _network_mode :
-				NetMode.Server :
-					# init server
-					var peer = ENetMultiplayerPeer.new()
-					peer.create_server(_server_port)
-					multiplayer.multiplayer_peer = peer
-					_on_network_ready()
-					print("IVMI : Starting Server")
-				NetMode.Client :
-					if _server_ip!="" :
-						_on_found_server(_server_ip, _server_port)
-						
-		#start discov
-		_network_discov = IvmiDiscov.new()
-		if _network_mode==NetMode.Server :
-			_network_discov.set_server(_server_port)
-		add_child(_network_discov)
-		_network_discov.connect("found_server",Callable(self,"_on_found_server"))
-		_network_discov.connect("timeout",Callable(self,"_on_timeout"))
-		_network_discov.start()
-
-# TODO trying to fix resume error on quest, not working yet ...
-func _on_xr_session() :
-	get_viewport().use_xr = true
-	_start_network()
 
 func _process(delta) :
 	if is_inside_tree() :
@@ -208,8 +163,71 @@ func _process(delta) :
 
 
 
+# --------XR-----------------
+
+func set_passthrough(activate : bool) -> void :
+	if  _xr_interface :
+		get_viewport().transparent_bg=true
+		var pt : bool = true
+		if _xr_interface.is_passthrough_supported():
+			if activate : 
+				if !_xr_interface.start_passthrough():
+					pt=false
+			else :
+				_xr_interface.stop_passthrough()
+		else:
+			if activate : 
+				var modes = _xr_interface.get_supported_environment_blend_modes()
+				if _xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes:
+					_xr_interface.set_environment_blend_mode(_xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)
+				else:
+					pt=false
+			else :
+				_xr_interface.set_environment_blend_mode(_xr_interface.XR_ENV_BLEND_MODE_OPAQUE)
+
+		if activate :
+			if pt :
+				print("IVMI : Activated OpenXR Passthrough")
+			else:
+				print("Error : Could not activate OpenXR Passthrough")
+		else :
+			print("IVMI : Deactivated OpenXR Passthrough")
+
+func _on_xr_session() :
+	get_viewport().use_xr = true
+	_start_network()
+
 # --------Network-----------------
 
+func _start_network() -> void :
+	_is_connected=false
+	
+	if _network_mode!=NetMode.None :
+		if _network_protocol==NetProto.Enet :
+			match _network_mode :
+				NetMode.Server :
+					# init server
+					var peer = ENetMultiplayerPeer.new()
+					peer.create_server(_server_port)
+					multiplayer.multiplayer_peer = peer
+					_on_network_ready()
+					print("IVMI : Starting Server")
+				NetMode.Client :
+					if _server_ip!="" :
+						_on_found_server(_server_ip, _server_port)
+						
+		#start discov
+		_network_discov = IvmiDiscov.new()
+		if _network_mode==NetMode.Server :
+			_network_discov.set_server(_server_port)
+		add_child(_network_discov)
+		_network_discov.connect("found_server",Callable(self,"_on_found_server"))
+		_network_discov.connect("timeout",Callable(self,"_on_timeout"))
+		_network_discov.start()
+
+
+
+
 func _on_found_server(server_ip, port) :
 	match _network_protocol :
 		NetProto.Enet :