diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index f0175c2..caf4c66 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -601,7 +601,7 @@
 type function void_fn(charstring id) runs on BSSGP_ConnHdlr;
 
 /* helper function to create, connect and start a BSSGP_ConnHdlr component */
-function f_start_handler(void_fn fn, charstring id, GbInstances pcu, GbInstances sgsn, integer imsi_suffix,
+function f_start_handler(void_fn fn, charstring id, integer imsi_suffix,
 			 float t_guard := 30.0, integer sgsn_idx := 0, integer nri_idx := 0)
 runs on test_CT return BSSGP_ConnHdlr {
 	var BSSGP_ConnHdlr vc_conn;
@@ -617,8 +617,8 @@
 		tlli := f_gprs_tlli_from_tmsi(p_tmsi, TLLI_LOCAL),
 		tlli_old := omit,
 		ra := omit,
-		pcu := pcu,
-		sgsn := sgsn,
+		pcu := g_pcu,
+		sgsn := g_sgsn,
 		sgsn_idx := sgsn_idx,
 		t_guard := t_guard
 	};
@@ -629,8 +629,7 @@
 	return vc_conn;
 }
 
-function f_start_handlers(void_fn fn, charstring id, GbInstances pcu, GbInstances sgsn,
-			  integer imsi_suffix, float t_guard := 30.0)
+function f_start_handlers(void_fn fn, charstring id, integer imsi_suffix, float t_guard := 30.0)
 runs on test_CT
 {
 	var integer sgsn_idx, nri_idx;
@@ -638,7 +637,7 @@
 		for (nri_idx := 0; nri_idx < lengthof(mp_sgsn_nri[sgsn_idx]); nri_idx:=nri_idx+1) {
 			var integer extd_imsi_suffix := 1000*sgsn_idx + 100*nri_idx;
 			var BSSGP_ConnHdlr vc_conn;
-			vc_conn := f_start_handler(fn, id, pcu, sgsn, extd_imsi_suffix, t_guard,
+			vc_conn := f_start_handler(fn, id, extd_imsi_suffix, t_guard,
 						   sgsn_idx, nri_idx);
 			/* Idea: we could also run them in parallel ? */
 			vc_conn.done;
@@ -901,7 +900,7 @@
 
 testcase TC_BVC_bringup() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_BVC_bringup), testcasename(), g_pcu, g_sgsn, 51);
+	f_start_handlers(refers(f_TC_BVC_bringup), testcasename(), 51);
 	f_cleanup();
 }
 
@@ -967,7 +966,7 @@
 testcase TC_ul_unitdata() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_ul_unitdata), testcasename(), g_pcu, g_sgsn, 1);
+	f_start_handlers(refers(f_TC_ul_unitdata), testcasename(), 1);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -993,7 +992,7 @@
 testcase TC_dl_unitdata() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_dl_unitdata), testcasename(), g_pcu, g_sgsn, 2);
+	f_start_handlers(refers(f_TC_dl_unitdata), testcasename(), 2);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -1013,7 +1012,7 @@
 testcase TC_ra_capability() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_ra_capability), testcasename(), g_pcu, g_sgsn, 3);
+	f_start_handlers(refers(f_TC_ra_capability), testcasename(), 3);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -1040,7 +1039,7 @@
 testcase TC_ra_capability_upd() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_ra_capability_upd), testcasename(), g_pcu, g_sgsn, 4);
+	f_start_handlers(refers(f_TC_ra_capability_upd), testcasename(), 4);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -1060,7 +1059,7 @@
 testcase TC_radio_status() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_radio_status), testcasename(), g_pcu, g_sgsn, 5);
+	f_start_handlers(refers(f_TC_radio_status), testcasename(), 5);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -1198,7 +1197,7 @@
 
 	/* start parallel components generating DL-UNITDATA from the SGSN side */
 	for (var integer i:= 0; i < num_ue; i := i+1) {
-		vc_conn[i] := f_start_handler(refers(f_TC_dl_ud_unidir), testcasename(), g_pcu, g_sgsn,
+		vc_conn[i] := f_start_handler(refers(f_TC_dl_ud_unidir), testcasename(),
 						5+i, 30.0, sgsn_idx);
 	}
 
@@ -1366,7 +1365,7 @@
 }
 testcase TC_paging_ps_ptp_bss() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_bss), testcasename(), g_pcu, g_sgsn, 9);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_bss), testcasename(), 9);
 	f_cleanup();
 }
 
@@ -1380,7 +1379,7 @@
 }
 testcase TC_paging_ps_ptp_lac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_lac), testcasename(), g_pcu, g_sgsn, 10);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_lac), testcasename(), 10);
 	f_cleanup();
 }
 
@@ -1396,7 +1395,7 @@
 }
 testcase TC_paging_ps_ptp_lac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_lac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_lac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1409,7 +1408,7 @@
 }
 testcase TC_paging_ps_ptp_rac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_rac), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_rac), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1428,7 +1427,7 @@
 }
 testcase TC_paging_ps_ptp_rac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_rac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_rac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1440,7 +1439,7 @@
 }
 testcase TC_paging_ps_ptp_bvci() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_bvci), testcasename(), g_pcu, g_sgsn, 12);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_bvci), testcasename(), 12);
 	f_cleanup();
 }
 
@@ -1452,7 +1451,7 @@
 }
 testcase TC_paging_ps_ptp_bvci_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_ptp_bvci_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_ptp_bvci_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1519,7 +1518,7 @@
 }
 testcase TC_paging_ps_sig_bss() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_bss), testcasename(), g_pcu, g_sgsn, 13);
+	f_start_handlers(refers(f_TC_paging_ps_sig_bss), testcasename(), 13);
 	f_cleanup();
 }
 
@@ -1536,7 +1535,7 @@
 }
 testcase TC_paging_ps_sig_lac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_lac), testcasename(), g_pcu, g_sgsn, 14);
+	f_start_handlers(refers(f_TC_paging_ps_sig_lac), testcasename(), 14);
 	f_cleanup();
 }
 
@@ -1551,7 +1550,7 @@
 }
 testcase TC_paging_ps_sig_lac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_lac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_sig_lac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1570,7 +1569,7 @@
 }
 testcase TC_paging_ps_sig_rac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_rac), testcasename(), g_pcu, g_sgsn, 15);
+	f_start_handlers(refers(f_TC_paging_ps_sig_rac), testcasename(), 15);
 	f_cleanup();
 }
 
@@ -1588,7 +1587,7 @@
 }
 testcase TC_paging_ps_sig_rac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_rac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_sig_rac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1599,7 +1598,7 @@
 }
 testcase TC_paging_ps_sig_bvci() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_bvci), testcasename(), g_pcu, g_sgsn, 16);
+	f_start_handlers(refers(f_TC_paging_ps_sig_bvci), testcasename(), 16);
 	f_cleanup();
 }
 
@@ -1610,7 +1609,7 @@
 }
 testcase TC_paging_ps_sig_bvci_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_ps_sig_bvci_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_ps_sig_bvci_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1731,7 +1730,7 @@
 }
 testcase TC_paging_cs_ptp_bss() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_bss), testcasename(), g_pcu, g_sgsn, 17);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_bss), testcasename(), 17);
 	f_cleanup();
 }
 
@@ -1745,7 +1744,7 @@
 }
 testcase TC_paging_cs_ptp_lac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_lac), testcasename(), g_pcu, g_sgsn, 18);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_lac), testcasename(), 18);
 	f_cleanup();
 }
 
@@ -1761,7 +1760,7 @@
 }
 testcase TC_paging_cs_ptp_lac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_lac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_lac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1774,7 +1773,7 @@
 }
 testcase TC_paging_cs_ptp_rac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_rac), testcasename(), g_pcu, g_sgsn, 19);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_rac), testcasename(), 19);
 	f_cleanup();
 }
 
@@ -1793,7 +1792,7 @@
 }
 testcase TC_paging_cs_ptp_rac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_rac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_rac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1805,7 +1804,7 @@
 }
 testcase TC_paging_cs_ptp_bvci() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_bvci), testcasename(), g_pcu, g_sgsn, 20);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_bvci), testcasename(), 20);
 	f_cleanup();
 }
 
@@ -1817,7 +1816,7 @@
 }
 testcase TC_paging_cs_ptp_bvci_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_ptp_bvci_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_ptp_bvci_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1861,7 +1860,7 @@
 }
 testcase TC_paging_cs_sig_bss() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_bss), testcasename(), g_pcu, g_sgsn, 13);
+	f_start_handlers(refers(f_TC_paging_cs_sig_bss), testcasename(), 13);
 	f_cleanup();
 }
 
@@ -1878,7 +1877,7 @@
 }
 testcase TC_paging_cs_sig_lac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_lac), testcasename(), g_pcu, g_sgsn, 14);
+	f_start_handlers(refers(f_TC_paging_cs_sig_lac), testcasename(), 14);
 	f_cleanup();
 }
 
@@ -1893,7 +1892,7 @@
 }
 testcase TC_paging_cs_sig_lac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_lac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_sig_lac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1912,7 +1911,7 @@
 }
 testcase TC_paging_cs_sig_rac() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_rac), testcasename(), g_pcu, g_sgsn, 15);
+	f_start_handlers(refers(f_TC_paging_cs_sig_rac), testcasename(), 15);
 	f_cleanup();
 }
 
@@ -1930,7 +1929,7 @@
 }
 testcase TC_paging_cs_sig_rac_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_rac_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_sig_rac_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1941,7 +1940,7 @@
 }
 testcase TC_paging_cs_sig_bvci() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_bvci), testcasename(), g_pcu, g_sgsn, 16);
+	f_start_handlers(refers(f_TC_paging_cs_sig_bvci), testcasename(), 16);
 	f_cleanup();
 }
 
@@ -1952,7 +1951,7 @@
 }
 testcase TC_paging_cs_sig_bvci_unknown() runs on test_CT {
 	f_init();
-	f_start_handlers(refers(f_TC_paging_cs_sig_bvci_unknown), testcasename(), g_pcu, g_sgsn, 11);
+	f_start_handlers(refers(f_TC_paging_cs_sig_bvci_unknown), testcasename(), 11);
 	f_cleanup();
 }
 
@@ -1981,7 +1980,7 @@
 testcase TC_flush_ll() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_flush_ll), testcasename(), g_pcu, g_sgsn, 6);
+	f_start_handlers(refers(f_TC_flush_ll), testcasename(), 6);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -2049,7 +2048,7 @@
 testcase TC_llc_discarded() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_llc_discarded), testcasename(), g_pcu, g_sgsn, 6);
+	f_start_handlers(refers(f_TC_llc_discarded), testcasename(), 6);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
@@ -2411,7 +2410,7 @@
 testcase TC_fc_ms() runs on test_CT
 {
 	f_init();
-	f_start_handlers(refers(f_TC_fc_ms), testcasename(), g_pcu, g_sgsn, 21);
+	f_start_handlers(refers(f_TC_fc_ms), testcasename(), 21);
 	/* TODO: start multiple handlers (UEs) on various cells on same and other NSEs */
 	f_cleanup();
 }
