diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 0fec42b..b530db2 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -39,8 +39,6 @@
 import from L3_Templates all;
 import from GSM_RR_Types all;
 
-import from RSL_Tests all;
-
 const integer NUM_BTS := 3;
 const float T3101_MAX := 12.0;
 
diff --git a/bsc/BTS_Simulation.ttcn b/bsc/BTS_Simulation.ttcn
deleted file mode 100644
index de78231..0000000
--- a/bsc/BTS_Simulation.ttcn
+++ /dev/null
@@ -1,44 +0,0 @@
-module BTS_Simulation {
-
-/* Start an IPA client and bind the RSL Emulation on top; we assume that OML
- * is handled elsewhere! */
-
-import from IPL4asp_Types all;
-import from IPA_Emulation all;
-import from RSL_Emulation all;
-import from RSL_Tests all;
-
-type component BTS_CT {
-	var IPA_Emulation_CT vc_IPA;
-	var RSL_Emulation_CT vc_RSL;
-	var IPA_CCM_Parameters ccm_pars;
-}
-
-function main(charstring bsc_host, PortNumber bsc_port, charstring id) runs on BTS_CT
-{
-	vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
-	vc_RSL := RSL_Emulation_CT.create(id & "-RSL");
-	ccm_pars := c_IPA_default_ccm_pars;
-	ccm_pars.name := "Osmocom TTCN-3 BTS Simulator";
-	ccm_pars.unit_id := "1234/0/0";
-
-	map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
-	connect(vc_IPA:IPA_RSL_PORT, vc_RSL:IPA_PT);
-
-	vc_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1, ccm_pars));
-	vc_RSL.start(RSL_Emulation.main());
-
-	var RSL_Tests_CT vc_DCHAN;
-	vc_DCHAN := RSL_Tests_CT.create(id & "-DCHAN");
-	connect(vc_DCHAN:RSL, vc_RSL:CLIENT_PT);
-	vc_DCHAN.start(RSL_Tests.test_mahlzeit('901700123456789'H));
-
-
-	/* wait until termination of respective component */
-	vc_RSL.done;
-	vc_IPA.done;
-}
-
-
-
-}
diff --git a/bsc/RSL_Tests.ttcn b/bsc/RSL_Tests.ttcn
deleted file mode 100644
index 7c0cf7d..0000000
--- a/bsc/RSL_Tests.ttcn
+++ /dev/null
@@ -1,40 +0,0 @@
-module RSL_Tests {
-
-import from GSM_Types all;
-import from RSL_Types all;
-import from MobileL3_Types all;
-import from MobileL3_CommonIE_Types all;
-import from L3_Templates all;
-import from RSL_Emulation all;
-
-type component RSL_Tests_CT extends RSL_DchanHdlr {
-}
-
-private function f_rx_l3(PDU_ML3_NW_MS l3) runs on RSL_Tests_CT {
-	log("L3 received ", l3);
-	if (ischosen(l3.msgs.rrm.channelRelease)) {
-	}
-}
-
-function test_mahlzeit(hexstring imsi) runs on RSL_Tests_CT {
-
-	var RSL_Message rsl;
-	var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0));
-	var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(imsi));
-	var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ('0001'B, mi));
-	timer T := 1.0;
-
-	f_chan_est('23'O, enc_PDU_ML3_MS_NW(l3_info), link_id, 23);
-	/* if we reach here, we have established a dedicated channel */
-
-	alt {
-	[] RSL.receive(tr_RSL_MsgTypeR(RSL_MT_DATA_REQ)) -> value rsl {
-		var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[2].body.l3_info.payload);
-		f_rx_l3(l3);
-		}
-	}
-}
-
-
-
-}
