diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 0b2344f..0eace36 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -7,7 +7,7 @@
 import from IPL4asp_Types all;
 import from SCCPasp_Types all;
 import from BSSAP_Types all;
-import from BSSMAP_Emulation all;
+import from RAN_Emulation all;
 import from BSSMAP_Templates all;
 
 import from GSUP_Types all;
@@ -42,7 +42,7 @@
 import from SGsAP_Emulation all;
 
 /* this component represents a single subscriber connection */
-type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr, CTRL_Adapter_CT, SGsAP_ConnHdlr {
+type component BSC_ConnHdlr extends RAN_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr, CTRL_Adapter_CT, SGsAP_ConnHdlr {
 	var BSC_ConnHdlrPars g_pars;
 	timer g_Tguard := 60.0;
 	port TELNETasp_PT MSCVTY;
@@ -155,10 +155,10 @@
 }
 
 
-/* Callback function from general BSSMAP_Emulation whenever a connectionless
+/* Callback function from general RAN_Emulation whenever a connectionless
  * BSSMAP message arrives. Canreturn a PDU_BSSAPthat should be sent in return */
 private function BscUnitdataCallback(PDU_BSSAP bssap)
-runs on BSSMAP_Emulation_CT return template PDU_BSSAP {
+runs on RAN_Emulation_CT return template PDU_BSSAP {
 	var template PDU_BSSAP resp := omit;
 
 	log("BSSMAP_BscUnitdataCallback");
@@ -172,9 +172,9 @@
 	return resp;
 }
 
-const BssmapOps BSC_BssmapOps := {
+const RanOps BSC_RanOps := {
 	/* Create call-back for inbound connections from MSC (hand-over) */
-	create_cb := refers(BSSMAP_Emulation.ExpectedCreateCallback),
+	create_cb := refers(RAN_Emulation.ExpectedCreateCallback),
 	unitdata_cb := refers(BscUnitdataCallback),
 	decode_dtap := true,
 	role_ms := true,
@@ -196,7 +196,7 @@
 
 
 
-/* Encode 'l3' and ask BSSMAP_Emulation to create new connection with COMPL L3 INFO */
+/* Encode 'l3' and ask RAN_Emulation to create new connection with COMPL L3 INFO */
 function f_bssap_compl_l3(PDU_ML3_MS_NW l3)
 runs on BSC_ConnHdlr {
 	log("Sending COMPL L3: ", l3);
@@ -204,8 +204,8 @@
 	BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own,
 				     valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, l3_enc))));
 	alt {
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {}
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {}
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
 			setverdict(fail, "DISC.ind from SCCP");
 			mtc.stop;
 		}
@@ -386,12 +386,12 @@
 	/* FIXME: there could be pending SMS or other common procedures by the MSC, let's ignore them */
 	BSSAP.receive(tr_BSSMAP_ClearCommand);
 	BSSAP.send(ts_BSSMAP_ClearComplete);
-	BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+	BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
 	setverdict(pass);
 }
 
 function f_foo() runs on BSC_ConnHdlr{
-	/* SCCP CC handled by BSSMAP_Emulation_CT.main() */
+	/* SCCP CC handled by RAN_Emulation_CT.main() */
 	/* Expect auth, if enabled */
 
 	/* TODO: ISD */
@@ -484,7 +484,7 @@
 	var MNCC_PDU mncc;
 	var MgcpCommand mgcp_cmd;
 
-	f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+	f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 
 	f_establish_fully(EST_TYPE_PAG_RESP);
 
@@ -560,7 +560,7 @@
 	f_mt_call_initate(cpars);
 
 	/* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */
-	f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+	f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi));
 
 	/* Complete the call via BSSAP */
@@ -690,7 +690,7 @@
 	interleave {
 	[] BSSAP.receive(t_clear) {
 		BSSAP.send(ts_BSSMAP_ClearComplete);
-		BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+		BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
 		}
 	[] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd {
 		if (respond_to_dlcx) {
@@ -790,7 +790,7 @@
 	[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
 		BSSAP.send(ts_BSSMAP_ClearComplete);
 		alt {
-		[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
+		[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
 			setverdict(pass);
 			}
 		[] BSSAP.receive {
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index df088bc..a9eb316 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -36,10 +36,10 @@
 import from IPA_Emulation all;
 
 import from BSSAP_Types all;
-import from BSSAP_Adapter all;
+import from RAN_Adapter all;
 import from BSSAP_CodecPort all;
 import from BSSMAP_Templates all;
-import from BSSMAP_Emulation all;
+import from RAN_Emulation all;
 import from BSC_ConnectionHandler all;
 
 import from SGsAP_Templates all;
@@ -66,7 +66,7 @@
 import from TCCConversion_Functions all;
 
 const integer NUM_BSC := 2;
-type record of BSSAP_Configuration BSSAP_Configurations;
+type record of RAN_Configuration RAN_Configurations;
 
 /* Needed for SGsAP SMS */
 import from MobileL3_SMS_Types all;
@@ -74,7 +74,7 @@
 type component MTC_CT extends CTRL_Adapter_CT {
 	var boolean g_initialized := false;
 
-	var BSSAP_Adapter g_bssap[NUM_BSC];
+	var RAN_Adapter g_bssap[NUM_BSC];
 
 	/* no 'adapter_CT' for MNCC or GSUP */
 	var MNCC_Emulation_CT vc_MNCC;
@@ -121,7 +121,7 @@
 	charstring mp_mme_name := "mmec01.mmegi0001.mme.epc.mnc070.mcc901.3gppnetwork.org";
 	charstring mp_vlr_name := "vlr.example.net";
 
-	BSSAP_Configurations mp_bssap_cfg := {
+	RAN_Configurations mp_bssap_cfg := {
 		{
 			sccp_service_type := "mtp3_itu",
 			sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" },
@@ -277,7 +277,7 @@
 
 	for (var integer i := 0; i < num_bsc; i := i + 1) {
 		if (isbound(mp_bssap_cfg[i])) {
-			f_bssap_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_BssmapOps);
+			f_bssap_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_RanOps);
 			f_bssap_start(g_bssap[i]);
 		} else {
 			testcase.stop("missing BSSAP configuration");
@@ -522,8 +522,8 @@
 
 	vc_conn := BSC_ConnHdlr.create(id);
 	/* BSSMAP part / A interface */
-	connect(vc_conn:BSSAP, g_bssap[0].vc_BSSMAP:CLIENT);
-	connect(vc_conn:BSSAP_PROC, g_bssap[0].vc_BSSMAP:PROC);
+	connect(vc_conn:BSSAP, g_bssap[0].vc_RAN:CLIENT);
+	connect(vc_conn:BSSAP_PROC, g_bssap[0].vc_RAN:PROC);
 	/* MNCC part */
 	connect(vc_conn:MNCC, vc_MNCC:MNCC_CLIENT);
 	connect(vc_conn:MNCC_PROC, vc_MNCC:MNCC_PROC);
@@ -804,7 +804,7 @@
 			mtc.stop;
 			repeat;
 		}
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
 	}
 	setverdict(pass);
 }
@@ -834,7 +834,7 @@
 
 	f_sleep(1.0);
 	/* send clear request in the middle of the LU */
-	BSSAP.send(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ);
+	BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ);
 	setverdict(pass);
 	f_sleep(1.0);
 }
@@ -1197,10 +1197,10 @@
 	timer T := 5.0;
 	T.start;
 	alt {
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
 	/* Expect LU REJECT with Cause == Illegal MS */
 	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; }
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; }
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; }
 	[] as_clear_cmd_compl_disc();
 	[] T.timeout {
 		setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release");
@@ -1236,9 +1236,9 @@
 	T.start;
 	alt {
 	/* Immediate disconnect */
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
 	[] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; }
-	[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; }
+	[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; }
 	[] as_clear_cmd_compl_disc();
 	[] T.timeout {
 		setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release");
@@ -1435,7 +1435,7 @@
 	} else {
 		tmsi := 'FFFFFFFF'O;
 	}
-	f_bssmap_register_imsi(g_pars.imsi, tmsi);
+	f_ran_register_imsi(g_pars.imsi, tmsi);
 
 	/* Allocate call reference and send SETUP via MNCC to MSC */
 	cpars.mncc_callref := f_rnd_int(2147483648);
@@ -2017,7 +2017,7 @@
 	} else {
 		tmsi := 'FFFFFFFF'O;
 	}
-	f_bssmap_register_imsi(g_pars.imsi, tmsi);
+	f_ran_register_imsi(g_pars.imsi, tmsi);
 
 	f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS");
 
@@ -2055,7 +2055,7 @@
 	} else {
 		tmsi := 'FFFFFFFF'O;
 	}
-	f_bssmap_register_imsi(g_pars.imsi, tmsi);
+	f_ran_register_imsi(g_pars.imsi, tmsi);
 
 	f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS");
 
@@ -2311,9 +2311,9 @@
 
 	/* Register an 'expect' for given IMSI (+TMSI) */
 	if (isvalue(g_pars.tmsi)) {
-		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+		f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	} else {
-		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+		f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
 	}
 
 	var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES(
@@ -2375,9 +2375,9 @@
 
 	/* Register an 'expect' for given IMSI (+TMSI) */
 	if (isvalue(g_pars.tmsi)) {
-		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+		f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	} else {
-		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+		f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
 	}
 
 	var template GSUP_PDU mt_forwardSM_err := tr_GSUP_MT_FORWARD_SM_ERR(
@@ -2441,9 +2441,9 @@
 
 	/* Register an 'expect' for given IMSI (+TMSI) */
 	if (isvalue(g_pars.tmsi)) {
-		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+		f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	} else {
-		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+		f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
 	}
 
 	/* Submit the 1st MT SMS on GSUP */
@@ -2553,9 +2553,9 @@
 
 	/* Register an 'expect' for given IMSI (+TMSI) */
 	if (isvalue(g_pars.tmsi)) {
-		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+		f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	} else {
-		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+		f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
 	}
 
 	/* Send CM Service Request for MO SMMA */
@@ -2656,9 +2656,9 @@
 
 	/* Register an 'expect' for given IMSI (+TMSI) */
 	if (isvalue(g_pars.tmsi)) {
-		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+		f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	} else {
-		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+		f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
 	}
 
 	var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES(
@@ -2813,7 +2813,7 @@
 	} else {
 		tmsi := 'FFFFFFFF'O;
 	}
-	f_bssmap_register_imsi(g_pars.imsi, tmsi);
+	f_ran_register_imsi(g_pars.imsi, tmsi);
 
 	var SmsParameters spars := valueof(t_SmsPars);
 	/* TODO: test with more intelligent user data; test different coding schemes */
@@ -2964,7 +2964,7 @@
 	/* Perform location update */
 	f_perform_lu();
 
-	f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+	f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 
 	/* We need to inspect GSUP activity */
 	f_create_gsup_expect(hex2str(g_pars.imsi));
@@ -3577,7 +3577,7 @@
 	/* Trigger a paging request and expect the paging on BSSMAP, this is
 	 * to make sure that pagings are sent throught the A-Interface again
 	 * and not throught the SGs interface.*/
-	f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+	f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
 	f_vty_transceive(MSCVTY, "subscriber imsi " & hex2str(g_pars.imsi) & " paging");
 
 	alt {
diff --git a/msc/gen_links.sh b/msc/gen_links.sh
index 117564e..a29118a 100755
--- a/msc/gen_links.sh
+++ b/msc/gen_links.sh
@@ -89,7 +89,7 @@
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "
 FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Common.ttcn "
-FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn "
+FILES+="RAN_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn RAN_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn "
 FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc "
 FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc "
 FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc SMPP_Emulation.ttcn SMPP_Templates.ttcn "
