diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 00143bf..267d7a3 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -225,34 +225,36 @@
 	fn.apply(id);
 }
 
-
-function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr {
-	RSL.send(ts_RSL_CHAN_ACT(g_chan_nr, mode));
+function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id)
+runs on ConnHdlr {
+	timer T := 3.0;
+	RSL.send(tx);
+	T.start;
 	alt {
-	[] RSL.receive(tr_RSL_CHAN_ACT_ACK(g_chan_nr)) {
-		g_Tmeas_exp.start;
+	[] RSL.receive(exp_rx) {
+		T.stop;
+		setverdict(pass);
 		}
-	[] RSL.receive(tr_RSL_CHAN_ACT_NACK(g_chan_nr)) {
-		setverdict(fail, "Unexpected RF CHAN ACT NACK");
+	[] T.timeout {
+		setverdict(fail, "Timeout expecting " & id);
+		self.stop;
+		}
+	[] RSL.receive {
+		setverdict(fail, "Unexpected RSL message received");
 		}
 	}
 }
 
+function f_rsl_chan_act(RSL_IE_ChannelMode mode) runs on ConnHdlr {
+	f_rsl_transceive(ts_RSL_CHAN_ACT(g_chan_nr, mode), tr_RSL_CHAN_ACT_ACK(g_chan_nr),
+			 "RSL CHAN ACT");
+}
+
 function f_rsl_chan_deact() runs on ConnHdlr {
-	timer T := 3.0;
-	RSL.send(ts_RSL_RF_CHAN_REL(g_chan_nr));
-	T.start;
-	alt {
-	[] RSL.receive(tr_RSL_RF_CHAN_REL_ACK(g_chan_nr)) {
-		g_Tmeas_exp.stop;
-		}
-	[] T.timeout {
-		setverdict(fail, "Timeout waiting for RF CHAN REL ACK");
-		}
-	}
+	f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr),
+			"RF CHAN REL");
 }
 
-
 private template ConnHdlrPars t_Pars(template RslChannelNr chan_nr,
 					template RSL_IE_ChannelMode chan_mode,
 					float t_guard := 20.0) := {
@@ -1001,20 +1003,8 @@
 
 /* Send IPA DLCX to inactive lchan */
 function f_TC_ipa_dlcx_not_active(charstring id) runs on ConnHdlr {
-	timer T := 3.0;
-	RSL.send(ts_RSL_IPA_DLCX(g_chan_nr, 0));
-	T.start;
-	alt {
-	[] RSL.receive(tr_RSL_IPA_DLCX_ACK(g_chan_nr, ?, ?)) {
-		setverdict(pass);
-		}
-	[] RSL.receive(tr_RSL_IPA_DLCX_NACK(g_chan_nr, ?)) {
-		setverdict(fail);
-		}
-	[] T.timeout {
-		setverdict(fail, "Timeout expecting RF_CHAN_REL_ACK");
-		}
-	}
+	f_rsl_transceive(ts_RSL_IPA_DLCX(g_chan_nr, 0), tr_RSL_IPA_DLCX_ACK(g_chan_nr, ?, ?),
+			 "IPA DLCX ACK");
 }
 testcase TC_ipa_dlcx_not_active() runs on test_CT {
 	var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));
