diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index a42f628..15b0730 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -429,7 +429,7 @@
 }
 
 /* global init function */
-function f_init() runs on test_CT {
+friend function f_init() runs on test_CT {
 	var charstring id := testcasename();
 	g_AllChannels := {
 		/* TS 1..4: TCH/F */
@@ -503,7 +503,7 @@
 }
 
 /* Attach L1CTL to master test_CT (classic tests, non-handler mode) */
-function f_init_l1ctl() runs on test_CT {
+friend function f_init_l1ctl() runs on test_CT {
 	map(self:L1CTL, system:L1CTL);
 	f_connect_reset(L1CTL);
 }
@@ -511,9 +511,9 @@
 private type function void_fn(charstring id) runs on ConnHdlr;
 
 /* create a new test component */
-function f_start_handler(void_fn fn, ConnHdlrPars pars,
-			 boolean pcu_comp := false,
-			 boolean trxc_comp := false)
+friend function f_start_handler(void_fn fn, ConnHdlrPars pars,
+				boolean pcu_comp := false,
+				boolean trxc_comp := false)
 runs on test_CT return ConnHdlr {
 	var charstring id := testcasename();
 	var ConnHdlr vc_conn;
@@ -607,14 +607,17 @@
 	return rx;
 }
 
-function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx, charstring id,
-			  boolean ignore_other := false)
+friend function f_rsl_transceive(template RSL_Message tx, template RSL_Message exp_rx,
+				 charstring id, boolean ignore_other := false)
 runs on ConnHdlr {
 	var RSL_Message rx := f_rsl_transceive_ret(tx, exp_rx, id, ignore_other);
 }
 
-function f_rsl_chan_act(RSL_IE_ChannelMode mode, boolean encr_enable := false, RSL_IE_List more_ies := {},
-			RSL_IE_ActivationType act_type := t_RSL_IE_ActType_IA) runs on ConnHdlr {
+friend function f_rsl_chan_act(RSL_IE_ChannelMode mode,
+			       boolean encr_enable := false,
+			       RSL_IE_List more_ies := {},
+			       RSL_IE_ActivationType act_type := t_RSL_IE_ActType_IA)
+runs on ConnHdlr {
 	var RSL_Message ch_act := valueof(ts_RSL_CHAN_ACT(g_chan_nr, mode, act_type));
 	if (encr_enable) {
 		/* append encryption related IEs, if requested */
@@ -627,7 +630,7 @@
 	f_rsl_transceive(ch_act, tr_RSL_CHAN_ACT_ACK(g_chan_nr), "RSL CHAN ACT");
 }
 
-function f_rsl_chan_deact() runs on ConnHdlr {
+friend function f_rsl_chan_deact() runs on ConnHdlr {
 	f_rsl_transceive(ts_RSL_RF_CHAN_REL(g_chan_nr), tr_RSL_RF_CHAN_REL_ACK(g_chan_nr),
 			"RF CHAN REL", true);
 }
