diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index f64329a..969dbce 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -109,7 +109,7 @@
  * Client Component for a single dedicated channel
  ***********************************************************************/
 
-private function f_rx_or_fail(template RSL_Message exp_rx) runs on RSL_DchanHdlr return RSL_Message
+private function f_rx_or_fail(template RSL_Message exp_rx, RSL_DCHAN_PT rsl_pt := RSL) runs on RSL_DchanHdlr return RSL_Message
 {
 	var RSL_Message rx_rsl;
 	timer T := 10.0;
@@ -117,11 +117,11 @@
 	/* request a channel to be established */
 	T.start;
 	alt {
-		[] RSL.receive(exp_rx) -> value rx_rsl {
+		[] rsl_pt.receive(exp_rx) -> value rx_rsl {
 			T.stop;
 			return rx_rsl;
 		}
-		[] RSL.receive {
+		[] rsl_pt.receive {
 			setverdict(fail, "Unexpected RSL message on DCHAN");
 			mtc.stop;
 		}
@@ -136,16 +136,16 @@
 
 /* establish a dedicated channel using 'ra' */
 function f_chan_est(OCT1 ra, octetstring est_l3, template RslLinkId link_id, GsmFrameNumber fn := 23,
-		    template uint3_t tsc := ?)
+		    template uint3_t tsc := ?, RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC)
 runs on RSL_DchanHdlr {
 	var RSL_Message rx_rsl;
 	var GsmRrMessage rr;
 
 	/* request a channel to be established */
-	RSL.send(ts_RSLDC_ChanRqd(ra, fn));
+	rsl_pt.send(ts_RSLDC_ChanRqd(ra, fn));
 	/* At this point the BSC sends a CHAN ACTIV which we always ACK. Checking it below. */
 	/* expect immediate assignment */
-	rx_rsl := f_rx_or_fail(tr_RSL_IMM_ASSIGN);
+	rx_rsl := f_rx_or_fail(tr_RSL_IMM_ASSIGN, rsl_pt := rsl_pt);
 	rr := dec_GsmRrMessage(rx_rsl.ies[1].body.full_imm_ass_info.payload);
 	if (not match(rr.payload.imm_ass.chan_desc.tsc, tsc)) {
 		setverdict(fail, "Immediate Assignment: unexpected TSC in Channel Description: expected ", tsc, " got ",
@@ -153,10 +153,10 @@
 		mtc.stop;
 	}
 	g_chan_nr := rr.payload.imm_ass.chan_desc.chan_nr;
-	RSL.send(ts_RSL_EST_IND(g_chan_nr, valueof(link_id), est_l3));
+	rsl_pt.send(ts_RSL_EST_IND(g_chan_nr, valueof(link_id), est_l3));
 
 	/* Check above CHAN ACTIV */
-	var RSL_Message chan_act := f_rslem_get_last_act(RSL_PROC, 0, g_chan_nr);
+	var RSL_Message chan_act := f_rslem_get_last_act(rsl_proc_pt, 0, g_chan_nr);
 	var RSL_IE_Body ie;
 	if (f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, ie)) {
 		var uint3_t got_tsc := ie.chan_ident.ch_desc.v.tsc;
