diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 8512d3e..f38b989 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -379,6 +379,8 @@
 	connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT);
 	connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC);
 
+	/* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have
+	 * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */
 	vc_conn.start(derefers(fn)(id, pars));
 	return vc_conn;
 }
@@ -395,7 +397,7 @@
 }
 
 private function f_tc_lu_imsi_noauth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	f_perform_lu(false, true, true);
 }
 testcase TC_lu_imsi_noauth_tmsi() runs on MTC_CT {
@@ -407,7 +409,7 @@
 }
 
 private function f_tc_lu_imsi_noauth_notmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	f_perform_lu(false, false, true);
 }
 testcase TC_lu_imsi_noauth_notmsi() runs on MTC_CT {
@@ -421,7 +423,7 @@
 
 /* Do LU by IMSI, refuse it on GSUP and expect LU REJ back to MS */
 private function f_tc_lu_imsi_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi);
 
 	f_create_gsup_expect(hex2str(g_pars.imsi));
@@ -450,7 +452,7 @@
 
 /* Do LU by IMSI, timeout on GSUP */
 private function f_tc_lu_imsi_timeout_gsup(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi);
 
 	f_create_gsup_expect(hex2str(g_pars.imsi));
@@ -479,7 +481,7 @@
 }
 
 private function f_tc_lu_imsi_auth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	f_perform_lu(true, true, true);
 }
 testcase TC_lu_imsi_auth_tmsi() runs on MTC_CT {
@@ -495,7 +497,7 @@
 /* Send CM SERVICE REQ for IMSI that has never performed LU before */
 private function f_tc_cmserv_imsi_unknown(charstring id, BSC_ConnHdlrPars pars)
 runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	var BSSMAP_IE_CellIdentifier cell_id := valueof(ts_CellId_CGI('262'H, '042'H, 23, 42));
@@ -534,7 +536,7 @@
 }
 
 private function f_tc_lu_and_mo_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
 	cpars.bss_rtp_port := 1110;
 	cpars.mgcp_connection_id_bss := '22222'H;
@@ -553,7 +555,7 @@
 
 /* Test LU (with authentication enabled), where HLR times out sending SAI response */
 private function f_tc_lu_auth_sai_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
@@ -587,7 +589,7 @@
 
 /* Test LU (with authentication enabled), where HLR rejects sending SAI error */
 private function f_tc_lu_auth_sai_err(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
@@ -621,7 +623,7 @@
 
 /* Test LU but BSC will send a clear request in the middle */
 private function f_tc_lu_clear_request(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
@@ -653,7 +655,7 @@
 
 /* Test LU but BSC will send a clear request in the middle */
 private function f_tc_lu_disconnect(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
@@ -683,7 +685,7 @@
 
 /* Test LU but with illegal mobile identity type = IMEI */
 private function f_tc_lu_by_imei(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imei(g_pars.imei)
 	var PDU_DTAP_MT dtap_mt;
@@ -717,7 +719,7 @@
 
 /* Test LU by TMSI with unknown TMSI, expect (and answer) ID REQ. */
 private function f_tc_lu_tmsi_noauth_unknown(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_tmsi('01020304'O); /* FIXME: Random */
 	var PDU_DTAP_MT dtap_mt;
@@ -767,7 +769,7 @@
 
 /* Test IMSI DETACH (MI=IMSI) */
 private function f_tc_imsi_detach_by_imsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 
@@ -793,7 +795,7 @@
 
 /* Test IMSI DETACH (MI=TMSI) */
 private function f_tc_imsi_detach_by_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var MobileIdentityLV mi := valueof(ts_MI_TMSI_LV('01020304'O));
 
@@ -819,7 +821,7 @@
 
 /* Test IMSI DETACH (MI=IMEI), which is illegal */
 private function f_tc_imsi_detach_by_imei(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMEI_LV(g_pars.imei));
 
@@ -892,7 +894,7 @@
 
 /* establish an emergency call by IMEI, no SIM inserted (and hence no IMSI) */
 private function f_tc_emerg_call_imei_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMEI_LV(g_pars.imei));
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
@@ -913,7 +915,7 @@
 
 /* establish an emergency call by IMSI, SIM inserted (and hence IMSI) */
 private function f_tc_emerg_call_imsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	/* First perform location update to ensure subscriber is known */
 	f_perform_lu(false, true, true);
 	/* Then issue emergency call identified by IMSI */
@@ -929,7 +931,7 @@
 
 /* CM Service Request for VGCS -> reject */
 private function f_tc_cm_serv_req_vgcs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
 	f_perform_lu(false, true, true);
@@ -953,7 +955,7 @@
 
 /* CM Service Request for VBS -> reject */
 private function f_tc_cm_serv_req_vbs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
 	f_perform_lu(false, true, true);
@@ -977,7 +979,7 @@
 
 /* CM Service Request for LCS -> reject */
 private function f_tc_cm_serv_req_lcs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
 	f_perform_lu(false, true, true);
@@ -1001,7 +1003,7 @@
 
 /* CM Re-Establishment Request */
 private function f_tc_cm_reest_req_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
 	f_perform_lu(false, true, true);
@@ -1025,7 +1027,7 @@
 
 /* Test LU (with authentication enabled), with wrong response from MS */
 private function f_tc_lu_auth_2G_fail(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 
@@ -1067,7 +1069,7 @@
 }
 
 private function f_tc_lu_imsi_auth_tmsi_encr_13_13(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	f_perform_lu(true, true, true, true);
 }
 testcase TC_lu_imsi_auth_tmsi_encr_13_13() runs on MTC_CT {
@@ -1082,7 +1084,7 @@
 
 /* Test Complete L3 without payload */
 private function f_tc_cl3_no_payload(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	/* Send Complete L3 Info with empty L3 frame */
 	BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own,
@@ -1108,7 +1110,7 @@
 
 /* Test Complete L3 with random payload */
 private function f_tc_cl3_rnd_payload(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	var integer len := float2int(rnd() * 256.0);
 	var octetstring payl := f_rnd_octstring(len);
@@ -1139,7 +1141,7 @@
 
 /* Test Complete L3 with random payload */
 private function f_tc_establish_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 
 	f_perform_lu(false, true, true, false);
 
@@ -1169,7 +1171,8 @@
 
 /* Test MO Call SETUP with no response from MNCC */
 private function f_tc_mo_setup_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
+
 	var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
 
 	f_perform_lu(false, true, true, false);
@@ -1205,7 +1208,7 @@
 
 /* Test MO Call with no response to RAN-side CRCX */
 private function f_tc_mo_crcx_ran_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
@@ -1252,7 +1255,7 @@
 
 /* Test MO Call with reject to RAN-side CRCX */
 private function f_tc_mo_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
@@ -1344,7 +1347,7 @@
 
 /* Test MT Call */
 private function f_tc_mt_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var CallParameters cpars := valueof(t_CallParams('123456'H, 0));
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
@@ -1402,7 +1405,7 @@
 
 /* Test MT Call T310 timer */
 private function f_tc_mt_t310(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
-	g_pars := pars;
+	f_init_handler(pars);
 	var CallParameters cpars := valueof(t_CallParams('123456'H, 0));
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
