diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 2e9176f..c241d74 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -437,10 +437,7 @@
 			self.stop;
 		}
 	}
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_imsi_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -467,10 +464,7 @@
 			self.stop;
 		}
 	}
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_imsi_timeout_gsup() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -520,13 +514,7 @@
 	[] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); }
 	}
 
-	alt {
-	[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
-		setverdict(pass);
-		}
-	[] BSSAP.receive { setverdict(fail, "Received unexpected BSSAP"); }
-	[] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); }
-	}
+	f_expect_clear();
 }
 testcase TC_cmserv_imsi_unknown() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -573,10 +561,7 @@
 	/* The HLR would normally return an auth vector here, but we fail to do so. */
 
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_auth_sai_timeout() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -607,10 +592,7 @@
 	GSUP.send(ts_GSUP_SAI_ERR(g_pars.imsi, 13));
 
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_auth_sai_err() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -704,10 +686,7 @@
 	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req)) { repeat; }
 	}
 	/* wait for normal teardown */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_by_imei() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -753,10 +732,7 @@
 	}
 
 	/* wait for normal teardown */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_by_tmsi_noauth_unknown() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -780,10 +756,7 @@
 	BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 
 	/* wait for normal teardown */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_imsi_detach_by_imsi() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -806,10 +779,7 @@
 	BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 
 	/* wait for normal teardown */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_imsi_detach_by_tmsi() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -832,10 +802,7 @@
 	BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 
 	/* wait for normal teardown */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_imsi_detach_by_imei() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -885,11 +852,7 @@
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(tid)));
 
 	/* clearing of radio channel */
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-
-	f_sleep(5.0);
+	f_expect_clear();
 }
 
 /* establish an emergency call by IMEI, no SIM inserted (and hence no IMSI) */
@@ -900,10 +863,7 @@
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
 	f_bssap_compl_l3(l3_info);
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ('05'O)));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_emerg_call_imei_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -940,10 +900,7 @@
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VGCS, mi));
 	f_bssap_compl_l3(l3_info);
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_cm_serv_req_vgcs_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -964,10 +921,7 @@
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VBS, mi));
 	f_bssap_compl_l3(l3_info);
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_cm_serv_req_vbs_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -988,10 +942,7 @@
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_LCS, mi));
 	f_bssap_compl_l3(l3_info);
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_cm_serv_req_lcs_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1012,10 +963,7 @@
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_REEST_REQ(0, mi));
 	f_bssap_compl_l3(l3_info);
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_cm_reest_req_reject() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1054,10 +1002,7 @@
 
 	/* Expect LU REJECT with Cause == Illegal MS */
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej('03'O)));
-	BSSAP.receive(tr_BSSMAP_ClearCommand);
-	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-	setverdict(pass);
+	f_expect_clear();
 }
 testcase TC_lu_auth_2G_fail() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1146,20 +1091,7 @@
 	f_perform_lu(false, true, true, false);
 
 	f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)), false, false);
-	timer T := 30.0;
-	T.start;
-	alt {
-	[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
-	[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
-		BSSAP.send(ts_BSSMAP_ClearComplete);
-		BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-		setverdict(pass);
-		}
-	[] BSSAP.receive { repeat; }
-	[] MNCC.receive { repeat; }
-	[] GSUP.receive { repeat; }
-	[] MGCP.receive { repeat; }
-	}
+	f_expect_clear();
 }
 testcase TC_establish_and_nothing() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1183,20 +1115,7 @@
 
 	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
 
-	timer T := 30.0;
-	T.start;
-	alt {
-	[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
-	[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
-		BSSAP.send(ts_BSSMAP_ClearComplete);
-		BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-		setverdict(pass);
-		}
-	[] BSSAP.receive { repeat; }
-	[] MNCC.receive { repeat; }
-	[] GSUP.receive { repeat; }
-	[] MGCP.receive { repeat; }
-	}
+	f_expect_clear(30.0);
 }
 testcase TC_mo_setup_and_nothing() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1230,20 +1149,7 @@
 	cpars.mgcp_ep := mgcp_cmd.line.ep;
 	/* never respond to this */
 
-	timer T := 30.0;
-	T.start;
-	alt {
-	[] T.timeout { setverdict(fail, "Timeout waiting for channel release"); self.stop; }
-	[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
-		BSSAP.send(ts_BSSMAP_ClearComplete);
-		BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
-		setverdict(pass);
-		}
-	[] BSSAP.receive { repeat; }
-	[] MNCC.receive { repeat; }
-	[] GSUP.receive { repeat; }
-	[] MGCP.receive { repeat; }
-	}
+	f_expect_clear(30.0);
 }
 testcase TC_mo_crcx_ran_timeout() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
