diff --git a/bsc-nat/BSC_MS_ConnectionHandler.ttcn b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
index 27e1b58..63d0451 100644
--- a/bsc-nat/BSC_MS_ConnectionHandler.ttcn
+++ b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
@@ -5,7 +5,7 @@
 import from SCCPasp_Types all;
 import from BSSAP_Types all;
 import from BSSAP_CodecPort all;
-import from BSSMAP_Emulation all;
+import from RAN_Emulation all;
 import from BSSMAP_Templates all;
 
 import from MobileL3_Types all;
@@ -17,9 +17,9 @@
 import from SDP_Types all;
 
 /* this component represents a single subscriber connection at the MSC.
- * There is a 1:1 mapping between SCCP connections and BSSAP_ConnHdlr components.
- * We inherit all component variables, ports, functions, ... from BSSAP_ConnHdlr */
-type component BSC_MS_ConnHdlr extends BSSAP_ConnHdlr {
+ * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components.
+ * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */
+type component BSC_MS_ConnHdlr extends RAN_ConnHdlr {
 	/* SCCP Connecction Identifier for the underlying SCCP connection */
 	var integer g_sccp_conn_id;
 	var MgcpConnectionId g_mgcp_conn_id;
@@ -27,18 +27,18 @@
 	var BSC_State g_state;
 }
 
-/* Callback function from general BSSMAP_Emulation whenever a new incoming
+/* 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)
-runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr {
+runs on RAN_Emulation_CT return RAN_ConnHdlr {
 	log("Incoming SCCP Connection on BSC ?!?");
 	self.stop;
 }
 
-/* Callback function from general BSSMAP_Emulation whenever a connectionless
+/* Callback function from general RAN_Emulation whenever a connectionless
  * BSSMAP message arrives.  Can retunr a PDU_BSSAP that should be sent in return */
 private function UnitdataCallback(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;
 
 	if (match(bssap, tr_BSSMAP_Reset)) {
@@ -48,7 +48,7 @@
 	return resp;
 }
 
-const BssmapOps BSC_MS_BssmapOps := {
+const RanOps BSC_MS_RanOps := {
 	create_cb := refers(CreateCallback),
 	unitdata_cb := refers(UnitdataCallback),
 	decode_dtap := false,
@@ -154,16 +154,16 @@
 			log("Unhandled DTAP ", l3);
 			}
 
-		[g_state == BSC_STATE_WAIT_DISC_IND] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
+		[g_state == BSC_STATE_WAIT_DISC_IND] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
 			setverdict(pass);
 			self.stop;
 			}
 
-		[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {
+		[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {
 			}
 
 		/* disconnect in invalid state */
-		[] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
+		[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
 			setverdict(fail);
 			self.stop;
 			}
