diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn
index 497ff80..548c0c1 100644
--- a/bsc/BSC_Tests_CBSP.ttcn
+++ b/bsc/BSC_Tests_CBSP.ttcn
@@ -79,14 +79,14 @@
 	log("g_cbsp_msg_id=", g_cbsp_msg_id, "  g_cbsp_ser_no=", g_cbsp_ser_no);
 }
 
-private altstep as_IgnRSL(template RSL_Message tr) runs on cbsp_test_CT {
+private altstep as_IgnRSL(template (present) RSL_Message tr) runs on cbsp_test_CT {
 [] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
 [] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) { repeat; }
 [] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) { repeat; }
 }
 
 private altstep as_FailRSL() runs on cbsp_test_CT {
-var template RSL_Message tr := (tr_RSL_SMSCB_CMD);
+var template (present) RSL_Message tr := (tr_RSL_SMSCB_CMD);
 var ASP_RSL_Unitdata rx;
 [] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
 	setverdict(fail, "Received unexpected RSL ", rx);
@@ -334,7 +334,7 @@
                             template (present) integer expect_blocks := ?)
 return template (present) RSL_Message
 {
-	var template RSL_Message tr;
+	var template (present) RSL_Message tr;
 	var integer len;
 	var integer num_blocks;
 	var octetstring payload;
@@ -407,7 +407,7 @@
 	f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
 		     success_list:=tr_BSSMAP_CIL_CGI({?,?,?}), fail_list:={?});
 
-	var template RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no, expect_blocks := expect_blocks);
+	var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no, expect_blocks := expect_blocks);
 	log("RSL[0,1,2] EXPECTING ", tr_ASP_RSL_UD(tr));
 	interleave {
 	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) { log("Got SMSCB CMD on RSL[0]"); }
@@ -453,7 +453,7 @@
 	f_cbsp_init_server(2001, 2501);
 	f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
 		     success_list:=cell_list, fail_list:=omit);
-	var template RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
+	var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
 	IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
 	f_sleep(5.0);
 }
@@ -528,7 +528,7 @@
 	f_cbsp_init_server(8001, 8501);
 	f_cbsp_write(g_cbsp_msg_id, g_cbsp_ser_no, cell_list, content:=pages,
 		     success_list:=?, fail_list:=omit);
-	var template RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
+	var template (present) RSL_Message tr := f_page2rsl(pages[0], g_cbsp_msg_id, g_cbsp_ser_no);
 	interleave {
 	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
 	[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr));
