diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 79221d7..d6e0aba 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -1771,25 +1771,31 @@
 
 	/* NOTE: MSC is expected to start T310 here */
 
+	interleave {
 	/* MSC->MGW: CRCX (first) */
-	MGCP.receive(tr_CRCX) -> value mgcp_cmd;
-	f_handle_crcx(cpars, mgcp_cmd); /* MSC<-MGW: OK */
+	[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
+		f_handle_crcx(cpars, mgcp_cmd); /* MSC<-MGW: OK */
+		}
 
 	/* BSC->BSC: BSSMAP ASSIGNMENT REQ */
-	BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, ?)) -> value bssap;
-	BSSAP.send(ts_BSSMAP_AssignmentComplete(omit,
-		aoip := f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port),
-		speechCodec := ts_BSSMAP_IE_SpeechCodec({ ts_CodecFR })));
+	[] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, ?)) -> value bssap {
+		BSSAP.send(ts_BSSMAP_AssignmentComplete(omit,
+			aoip := f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port),
+			speechCodec := ts_BSSMAP_IE_SpeechCodec({ ts_CodecFR })));
+		}
 
 	/* MSC->MGW: MDCX */
-	MGCP.receive(tr_MDCX) -> value mgcp_cmd;
-	MGCP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_1.mgcp_connection_id,
-		sdp := omit));
+	[] MGCP.receive(tr_MDCX) -> value mgcp_cmd {
+		MGCP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, cpars.mgw_conn_1.mgcp_connection_id,
+			sdp := omit));
+		}
 
 	/* MSC->MGW: CRCX (second) */
-	MGCP.receive(tr_CRCX) -> value mgcp_cmd;
-	f_handle_crcx(cpars, mgcp_cmd); /* MSC<-MGW: OK */
-	MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref));
+	[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
+		f_handle_crcx(cpars, mgcp_cmd); /* MSC<-MGW: OK */
+		MNCC.receive(tr_MNCC_RTP_CREATE(cpars.mncc_callref));
+		}
+	}
 
 	/* Reschedule the guard timeout */
 	g_Tguard.start(30.0 + 10.0);
