diff --git a/bsc-nat/BSC_MS_Simulation.ttcn b/bsc-nat/BSC_MS_Simulation.ttcn
index d4e37a4..5feaf0e 100644
--- a/bsc-nat/BSC_MS_Simulation.ttcn
+++ b/bsc-nat/BSC_MS_Simulation.ttcn
@@ -31,9 +31,7 @@
 	/* test port to SCCP emulation */
 	port SCCPasp_PT SCCP;
 
-	var SCCP_PAR_Address g_sccp_addr_own;
-	var SCCP_PAR_Address g_sccp_addr_remote;
-	var boolean g_use_osmux;
+	var BSC_MS_TestHdlrParams g_pars;
 
 	var charstring g_bsc_num_str;
 }
@@ -42,21 +40,41 @@
 	integer mp_num_iterations := 10;
 }
 
+/* helper function to create and connect a BSC_MS_ConnHdlr component */
+private function f_connect_handler(inout BSC_MS_ConnHdlr vc_conn) runs on BSC_CT {
+	/* connect client BSSAP port to BSSAP dispatcher */
+	connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT);
+}
+
+private function f_start_handler(void_fn_bsc_ms fn, charstring id, template (omit) BSC_MS_TestHdlrParams pars := omit)
+runs on BSC_CT return BSC_MS_ConnHdlr {
+	var BSC_MS_ConnHdlr vc_conn;
+	vc_conn := BSC_MS_ConnHdlr.create(id);
+	f_connect_handler(vc_conn);
+	vc_conn.start(f_handler_init(fn, id, pars));
+	return vc_conn;
+}
+
+/* first function inside ConnHdlr component; sets g_pars + starts function */
+private function f_handler_init(void_fn_bsc_ms fn, charstring id, template (omit) BSC_MS_TestHdlrParams pars := omit)
+runs on BSC_MS_ConnHdlr {
+	if (isvalue(pars)) {
+		g_pars := valueof(pars);
+	}
+	fn.apply(id);
+}
+
 function main(charstring remote_ip, PortNumber remote_port,
 		charstring local_ip, PortNumber local_port,
 		MSC_SCCP_MTP3_parameters sccp_pars,
-		SCCP_PAR_Address sccp_addr_own,
-		SCCP_PAR_Address sccp_addr_remote,
-		boolean use_osmux, charstring id) runs on BSC_CT
+		BSC_MS_TestHdlrParams pars,
+		void_fn_bsc_ms fn, charstring id) runs on BSC_CT
 {
 	var integer i := 0;
 	timer T := 1.0;
 	var IPA_CCM_Parameters ccm_pars := IPA_Emulation.c_IPA_default_ccm_pars;
 	ccm_pars.name := id;
-
-	g_sccp_addr_own := sccp_addr_own;
-	g_sccp_addr_remote := sccp_addr_remote;
-	g_use_osmux := use_osmux;
+	g_pars := pars;
 
 	/* create components for IPA/SCCP/BSS[M]AP stack */
 	vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
@@ -84,7 +102,7 @@
 	T.timeout;
 
 	for (i := 0; i < mp_num_iterations; i := i+1) {
-		f_start_BSC_MS(id & "-MS-" & int2str(i));
+		f_start_BSC_MS(fn, id & "-MS-" & int2str(i));
 	}
 
 	/* explicitly stop all components that we started above */
@@ -93,15 +111,10 @@
 	vc_SCCP.stop;
 }
 
-function f_start_BSC_MS(charstring id) runs on BSC_CT {
+function f_start_BSC_MS(void_fn_bsc_ms fn, charstring id) runs on BSC_CT {
 	var BSC_MS_ConnHdlr vc_conn;
-
-	/* start new component */
-	vc_conn := BSC_MS_ConnHdlr.create(id);
-	/* connect client BSSAP port to BSSAP dispatcher */
-	connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT);
 	/* start component */
-	vc_conn.start(BSC_MS_ConnectionHandler.main(g_sccp_addr_own, g_sccp_addr_remote, g_use_osmux));
+	vc_conn := f_start_handler(fn, id, g_pars);
 	/* blocking wait until component terminates.  If you want to start MSs in parallel,
 	 * you have to remove this statement here */
 	vc_conn.done;
