diff --git a/bsc-nat/BSC_MS_ConnectionHandler.ttcn b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
index 7f2ebcd..f7126fd 100644
--- a/bsc-nat/BSC_MS_ConnectionHandler.ttcn
+++ b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
@@ -25,6 +25,8 @@
 import from MGCP_Templates all;
 import from SDP_Types all;
 
+type function void_fn_bsc_ms(charstring id) runs on BSC_MS_ConnHdlr;
+
 /* this component represents a single subscriber connection at the MSC.
  * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components.
  * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */
@@ -34,8 +36,15 @@
 	var MgcpConnectionId g_mgcp_conn_id;
 	var SDP_Message g_sdp;
 	var BSC_State g_state;
+	var BSC_MS_TestHdlrParams g_pars;
 }
 
+type record BSC_MS_TestHdlrParams {
+	SCCP_PAR_Address sccp_addr_own,
+	SCCP_PAR_Address sccp_addr_remote,
+	boolean use_osmux
+};
+
 /* Callback function from general RAN_Emulation whenever a new incoming
  * SCCP connection arrivces. Must create + start a new component */
 private function CreateCallback(BSSAP_N_CONNECT_ind conn_ind, charstring id)
@@ -90,7 +99,7 @@
 }
 
 /* main function processing various incoming events */
-function main(SCCP_PAR_Address sccp_addr_own, SCCP_PAR_Address sccp_addr_remote, boolean use_osmux)
+function bsc_ms_establish_fully(charstring id)
 runs on BSC_MS_ConnHdlr {
 	var PDU_BSSAP bssap;
 	var MgcpCommand mgcp_cmd;
@@ -104,8 +113,8 @@
 	/* generate and send the Complete Layer3 Info */
 	bssap := f_gen_cl3('901770123456789'H);
 	var BSSAP_Conn_Req creq := {
-		addr_peer := sccp_addr_remote,
-		addr_own := sccp_addr_own,
+		addr_peer := g_pars.sccp_addr_remote,
+		addr_own := g_pars.sccp_addr_own,
 		bssap := bssap
 	}
 	g_state := BSC_STATE_WAIT_ASS_REQ;
@@ -130,12 +139,12 @@
 			/* respond with CRCX_ACK */
 			g_state := BSC_STATE_WAIT_MDCX;
 
-			if (use_osmux != f_MgcpCmd_contains_par(mgcp_cmd, "X-OSMUX")) {
-				setverdict(fail, log2str("Received Osmux CID presence doesn't match presence expectancy (", use_osmux, ")"));
+			if (g_pars.use_osmux != f_MgcpCmd_contains_par(mgcp_cmd, "X-OSMUX")) {
+				setverdict(fail, log2str("Received Osmux CID presence doesn't match presence expectancy (", g_pars.use_osmux, ")"));
 				self.stop;
 			}
 
-			if (use_osmux) {
+			if (g_pars.use_osmux) {
 				osmux_cid := f_MgcpCmd_extract_osmux_cid(mgcp_cmd);
 				mgcp_resp := ts_CRCX_ACK_osmux(mgcp_cmd.line.trans_id, g_mgcp_conn_id, osmux_cid, g_sdp);
 			} else {
