diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 6cacff7..1189112 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -53,7 +53,8 @@
 	BSSMAP_IE_ClassmarkInformationType2 cm2,
 	BSSMAP_IE_ClassmarkInformationType3 cm3 optional,
 	AuthVector vec optional,
-	BSC_ConnHdlrNetworkPars net
+	BSC_ConnHdlrNetworkPars net,
+	boolean send_early_cm
 };
 
 /* get a one-octet bitmaks of supported algorithms based on Classmark information */
@@ -278,7 +279,7 @@
 	}
 }
 
-function f_perform_lu(boolean send_early_cm)
+function f_perform_lu()
 runs on BSC_ConnHdlr {
 	var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
 	var PDU_DTAP_MT dtap_mt;
@@ -289,7 +290,7 @@
 	/* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */
 	f_bssap_compl_l3(l3_lu);
 
-	if (send_early_cm) {
+	if (g_pars.send_early_cm) {
 		BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
 	}
 
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 4bf385a..7347caf 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -359,7 +359,8 @@
 		cm2 := valueof(ts_CM2_default),
 		cm3 := omit,
 		vec := omit,
-		net := net_pars
+		net := net_pars,
+		send_early_cm := true
 	};
 
 	vc_conn := BSC_ConnHdlr.create(id);
@@ -384,7 +385,7 @@
 
 private function f_tc_lu_imsi_noauth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_noauth_tmsi() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -397,7 +398,7 @@
 private function f_tc_lu_imsi_noauth_notmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	pars.net.expect_tmsi := false;
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_noauth_notmsi() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -464,7 +465,7 @@
 private function f_tc_lu_imsi_auth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	pars.net.expect_auth := true;
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_auth_tmsi() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -518,7 +519,7 @@
 	cpars.mgcp_connection_id_bss := '22222'H;
 	cpars.mgcp_connection_id_mss := '33333'H;
 
-	f_perform_lu(true);
+	f_perform_lu();
 	f_mo_call(cpars);
 }
 testcase TC_lu_and_mo_call() runs on MTC_CT {
@@ -835,7 +836,7 @@
 private function f_tc_emerg_call_imsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	f_init_handler(pars);
 	/* First perform location update to ensure subscriber is known */
-	f_perform_lu(true);
+	f_perform_lu();
 	/* Then issue emergency call identified by IMSI */
 	f_emerg_call(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
 }
@@ -852,7 +853,7 @@
 	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
-	f_perform_lu(true);
+	f_perform_lu();
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VGCS, mi));
@@ -873,7 +874,7 @@
 	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
-	f_perform_lu(true);
+	f_perform_lu();
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VBS, mi));
@@ -894,7 +895,7 @@
 	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
-	f_perform_lu(true);
+	f_perform_lu();
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_LCS, mi));
@@ -915,7 +916,7 @@
 	f_init_handler(pars);
 
 	/* First perform location update to ensure subscriber is known */
-	f_perform_lu(true);
+	f_perform_lu();
 
 	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_REEST_REQ(0, mi));
@@ -976,7 +977,7 @@
 	pars.net.expect_auth := true;
 	pars.net.expect_ciph := true;
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_auth_tmsi_encr_13_13() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1061,7 +1062,7 @@
 private function f_tc_establish_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
 	f_init_handler(pars);
 
-	f_perform_lu(true);
+	f_perform_lu();
 
 	f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
 	f_expect_clear();
@@ -1080,7 +1081,7 @@
 
 	var CallParameters cpars := valueof(t_CallParams('12345'H, 0));
 
-	f_perform_lu(true);
+	f_perform_lu();
 
 	f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
 	f_create_mncc_expect(hex2str(cpars.called_party));
@@ -1105,7 +1106,7 @@
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
 
-	f_perform_lu(true);
+	f_perform_lu();
 
 	f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
 	f_create_mncc_expect(hex2str(cpars.called_party));
@@ -1139,7 +1140,7 @@
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
 
-	f_perform_lu(true);
+	f_perform_lu();
 
 	f_establish_fully(valueof(ts_MI_IMSI_LV(g_pars.imsi)));
 	f_create_mncc_expect(hex2str(cpars.called_party));
@@ -1207,7 +1208,7 @@
 	var MgcpCommand mgcp_cmd;
 	var OCT4 tmsi;
 
-	f_perform_lu(true);
+	f_perform_lu();
 	if (isvalue(g_pars.tmsi)) {
 		tmsi := g_pars.tmsi;
 	} else {
@@ -1351,7 +1352,7 @@
 	cpars.mgcp_connection_id_mss := '33333'H;
 
 	/* Location Update to make subscriber known */
-	f_perform_lu(true);
+	f_perform_lu();
 
 	/* First MO call should succeed */
 	f_mo_call(cpars);
@@ -1393,7 +1394,7 @@
 	pars.net.expect_ciph := true;
 	pars.net.kc_support := '02'O;	/* A5/1 only */
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_auth_tmsi_encr_1_13() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1411,7 +1412,7 @@
 	pars.net.expect_ciph := true;
 	pars.net.kc_support := '08'O;	/* A5/3 only */
 	f_init_handler(pars);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_auth_tmsi_encr_3_13() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1510,7 +1511,7 @@
 	pars.cm2.classmarkInformationType2_oct5.a5_3 := '0'B;
 	pars.cm2.classmarkInformationType2_oct5.a5_2 := '1'B;
 	f_init_handler(pars, 15.0);
-	f_perform_lu(true);
+	f_perform_lu();
 }
 testcase TC_lu_imsi_auth_tmsi_encr_013_2() runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn;
@@ -1531,7 +1532,7 @@
 	cpars.mgcp_connection_id_bss := '10004'H;
 	cpars.mgcp_connection_id_mss := '10005'H;
 
-	f_perform_lu(true);
+	f_perform_lu();
 	f_mt_call(cpars);
 }
 testcase TC_lu_and_mt_call() runs on MTC_CT {
@@ -1550,7 +1551,7 @@
 	cpars.mgcp_connection_id_bss := '22222'H;
 	cpars.mgcp_connection_id_mss := '33333'H;
 
-	f_perform_lu(true);
+	f_perform_lu();
 	f_mo_seq_dtmf_dup(cpars);
 }
 testcase TC_mo_setup_and_dtmf_dup() runs on MTC_CT {
