diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 1d39ab4..403064b 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -188,6 +188,7 @@
 
 type enumerated EstablishType {
 	EST_TYPE_MO_CALL,
+	EST_TYPE_EMERG_CALL,
 	EST_TYPE_PAG_RESP
 };
 
@@ -199,6 +200,9 @@
 	case (EST_TYPE_MO_CALL) {
 		l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));
 		}
+	case (EST_TYPE_EMERG_CALL) {
+		l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
+		}
 	case (EST_TYPE_PAG_RESP) {
 		l3_info := valueof(ts_PAG_RESP(mi));
 		}
@@ -211,7 +215,7 @@
 	if (g_pars.net.expect_ciph) {
 		/* implicit CM SERVICE ACCEPT? */
 	} else {
-		if (etype == EST_TYPE_MO_CALL) {
+		if (etype != EST_TYPE_PAG_RESP) {
 			/* explicit CM SERVICE ACCEPT */
 			BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC));
 		}
@@ -373,6 +377,7 @@
 	hexstring called_party,				/* whom are we calling */
 	integer transaction_id optional,		/* which TS 04.08 CC transaction ID to use */
 	BearerCapability_TLV bearer_cap,		/* which bearer capabilities to claim */
+	boolean emergency,				/* is this an emergency call? */
 
 	/* MNCC related parameters */
 	uint32_t mncc_callref optional,			/* call reference on the MNCC side */
@@ -400,6 +405,7 @@
 	called_party := called,
 	transaction_id := tid,
 	bearer_cap := valueof(ts_Bcap_voice),
+	emergency := false,
 	mncc_callref := omit,
 	mncc_bearer_cap := valueof(ts_MNCC_bcap_voice),
 	bss_rtp_ip := "9.8.7.6",
@@ -432,13 +438,21 @@
 	} else {
 		mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
 	}
-	f_establish_fully(mi);
+	if (cpars.emergency) {
+		f_establish_fully(mi, EST_TYPE_EMERG_CALL);
+	} else {
+		f_establish_fully(mi, EST_TYPE_MO_CALL);
+	}
 
 	/* Create MNCC and MGCP expect */
 	f_create_mncc_expect(hex2str(cpars.called_party));
 	f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
 
-	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
+	if (cpars.emergency) {
+		BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_EMERG_SETUP(cpars.transaction_id)));
+	} else {
+		BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
+	}
 	interleave {
 	[] MNCC.receive(tr_MNCC_SETUP_ind(?, tr_MNCC_number(hex2str(cpars.called_party)))) -> value mncc {
 		cpars.mncc_callref := mncc.u.signal.callref;
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 99580f6..5fa29cd 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -831,44 +831,10 @@
 
 /* helper function for an emergency call. caller passes in mobile identity to use */
 private function f_emerg_call(MobileIdentityLV mi) runs on BSC_ConnHdlr {
+	var CallParameters cpars := valueof(t_CallParams('112'H, 0));
+	cpars.emergency := true;
 
-	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi));
-	f_bssap_compl_l3(l3_info);
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC));
-
-	var hexstring called := '112'H;
-	var integer tid := 0;
-	var MNCC_PDU mncc;
-	f_create_mncc_expect(hex2str(called));
-
-	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_EMERG_SETUP(tid)));
-	MNCC.receive(tr_MNCC_SETUP_ind(?, tr_MNCC_number(hex2str(called)))) -> value mncc;
-	/* FIXME: extract call_id */
-
-	/* Call Proceeding */
-	MNCC.send(ts_MNCC_CALL_PROC_req(mncc.u.signal.callref, ts_MNCC_bcap_voice));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(tid)));
-
-	/* Alerting */
-	MNCC.send(ts_MNCC_ALERT_req(mncc.u.signal.callref));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(tid)));
-
-	/* Answer. This causes TCH assignment in case of "late assignment" */
-	//MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
-	MNCC.send(ts_MNCC_SETUP_rsp(mncc.u.signal.callref));
-
-	f_sleep(3.0);
-
-	/* Hangup by "B" side */
-	MNCC.send(ts_MNCC_DISC_req(mncc.u.signal.callref, valueof(ts_MNCC_cause(23))));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(tid)));
-
-	/* Release of call */
-	MNCC.send(ts_MNCC_REL_req(mncc.u.signal.callref, valueof(ts_MNCC_cause(42))));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(tid)));
-
-	/* clearing of radio channel */
-	f_expect_clear();
+	f_mo_call(cpars);
 }
 
 /* establish an emergency call by IMEI, no SIM inserted (and hence no IMSI) */
