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 {
