diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 057906f..8ab77cf 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1405,8 +1405,9 @@
 type function void_fn(charstring id) runs on MSC_ConnHdlr;
 
 /* helper function to create, connect and start a MSC_ConnHdlr component */
-function f_start_handler(void_fn fn, charstring id, template (omit) TestHdlrParams pars := omit)
+function f_start_handler(void_fn fn, template (omit) TestHdlrParams pars := omit)
 runs on test_CT return MSC_ConnHdlr {
+	var charstring id := testcasename();
 	var MSC_ConnHdlr vc_conn;
 
 	vc_conn := MSC_ConnHdlr.create(id);
@@ -1453,7 +1454,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_0), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_0));
 	vc_conn.done;
 }
 
@@ -1480,7 +1481,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1));
 	vc_conn.done;
 }
 
@@ -1502,7 +1503,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1_codec_missing), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_1_codec_missing));
 	vc_conn.done;
 }
 
@@ -1527,7 +1528,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_3), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_3));
 	vc_conn.done;
 }
 
@@ -1553,7 +1554,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_4), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_fr_a5_4));
 	vc_conn.done;
 }
 
@@ -1573,7 +1574,7 @@
 	f_init(1, true);
 	f_sleep(1.0);
 
-	vc_conn := f_start_handler(refers(f_tc_assignment_sign), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_assignment_sign));
 	vc_conn.done;
 }
 
@@ -1742,7 +1743,7 @@
 	f_sleep(1.0);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
-	vc_conn := f_start_handler(refers(f_TC_assignment_codec), testcasename(), pars);
+	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 }
 
@@ -1754,7 +1755,7 @@
 	f_sleep(1.0);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecHR}));
-	vc_conn := f_start_handler(refers(f_TC_assignment_codec), testcasename(), pars);
+	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 }
 
@@ -1766,7 +1767,7 @@
 	f_sleep(1.0);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecEFR}));
-	vc_conn := f_start_handler(refers(f_TC_assignment_codec), testcasename(), pars);
+	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 }
 
@@ -1778,7 +1779,7 @@
 	f_sleep(1.0);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_F}));
-	vc_conn := f_start_handler(refers(f_TC_assignment_codec), testcasename(), pars);
+	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 }
 
@@ -1790,7 +1791,7 @@
 	f_sleep(1.0);
 
 	pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_H}));
-	vc_conn := f_start_handler(refers(f_TC_assignment_codec), testcasename(), pars);
+	vc_conn := f_start_handler(refers(f_TC_assignment_codec), pars);
 	vc_conn.done;
 }
 
@@ -1811,7 +1812,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_classmark), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_classmark));
 	vc_conn.done;
 }
 
@@ -1849,7 +1850,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail));
 	vc_conn.done;
 }
 
@@ -1863,7 +1864,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_unsol_ass_compl), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_unsol_ass_compl));
 	vc_conn.done;
 }
 
@@ -1877,7 +1878,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_unsol_ho_fail), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_unsol_ho_fail));
 	vc_conn.done;
 }
 
@@ -1897,7 +1898,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_err_82_short_msg), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_err_82_short_msg));
 	vc_conn.done;
 }
 
@@ -1918,7 +1919,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(1, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_err_84_unknown_msg), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_err_84_unknown_msg));
 	vc_conn.done;
 }
 
@@ -1992,7 +1993,7 @@
 	var MSC_ConnHdlr vc_conn;
 	f_init(2, true);
 	f_sleep(1.0);
-	vc_conn := f_start_handler(refers(f_tc_ho_int), testcasename());
+	vc_conn := f_start_handler(refers(f_tc_ho_int));
 	vc_conn.done;
 }
 
