diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index 1becddd..39f240b 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -284,7 +284,7 @@
 		pwr_ctrl := *
 	};
 
-	template EgprsAckNackDescriptionIE ts_EgprsAckNackDescriptionIE(template EgprsAckNackDescription andesc) := {
+	template (value) EgprsAckNackDescriptionIE ts_EgprsAckNackDescriptionIE(template (value) EgprsAckNackDescription andesc) := {
 		len_present := '1'B,
 		len := 0, /* Overwritten by RAW encoder */
 		acknack_desc := andesc
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
index 6b5fb9f..e398491 100644
--- a/library/RLCMAC_Templates.ttcn
+++ b/library/RLCMAC_Templates.ttcn
@@ -369,7 +369,7 @@
 	}
 
 	/* Send Template for Downlink ACK/NACK */
-	template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK(template uint5_t tfi, AckNackDescription andesc, boolean retry := false,
+	template (value) RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK(template (value) uint5_t tfi, AckNackDescription andesc, boolean retry := false,
 						     template (omit) ChannelReqDescription chreq_desc := omit) := {
 		ctrl := {
 			mac_hdr := {
@@ -393,8 +393,10 @@
 	}
 
 	/* Send Template for Egprs Downlink ACK/NACK */
-	template RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK_EGPRS(template uint5_t tfi, EgprsAckNackDescription andesc, boolean retry := false,
-							   template (omit) ChannelReqDescription chreq_desc := omit) := {
+	template (value) RlcmacUlBlock ts_RLCMAC_DL_ACK_NACK_EGPRS(template (value) uint5_t tfi,
+								   EgprsAckNackDescription andesc,
+								   boolean retry := false,
+								   template (omit) ChannelReqDescription chreq_desc := omit) := {
 		ctrl := {
 			mac_hdr := {
 				payload_type := MAC_PT_RLCMAC_NO_OPT,
@@ -762,7 +764,8 @@
 	}
 
 	/* Template for Uplink MAC Control Header */
-	template UlMacCtrlHeader t_RLCMAC_UlMacCtrlH(template MacPayloadType pt, template boolean retry := false) := {
+	template (value) UlMacCtrlHeader t_RLCMAC_UlMacCtrlH(template (value) MacPayloadType pt,
+							     template (value) boolean retry := false) := {
 		payload_type := pt,
 		spare := '00000'B,
 		retry := retry
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index 830f8d3..34b7e79 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -424,7 +424,7 @@
 
 function f_dltbf_ts_RLCMAC_DL_ACK_NACK(DlTbf dl_tbf, boolean use_egprs := false,
 				       template (omit) ChannelReqDescription chreq_desc := omit)
-runs on MS_BTS_IFACE_CT return template RlcmacUlBlock  {
+runs on MS_BTS_IFACE_CT return template (value) RlcmacUlBlock  {
 	if (use_egprs) {
 		return ts_RLCMAC_DL_ACK_NACK_EGPRS(dl_tbf.tfi, dl_tbf.egprs_acknack_desc, false, chreq_desc);
 	} else {
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 8c9b469..5f75992 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -310,7 +310,7 @@
 		/* Send a random block, so this TBF becomes "active" */
 		if (do_activate) {
 			/* FIXME: use the new APU by Pau to get correct TRX/TS here */
-			var template TsTrxBtsNum nr := ts_TsTrxBtsNum(7, i mod 8);
+			var template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum(7, i mod 8);
 			var octetstring dummy := f_rnd_octstring(12);
 			var RlcmacDlBlock dl_block;
 			var uint32_t poll_fn;
@@ -353,8 +353,8 @@
 		pkt_res_req := ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, omit);
 	}
 
-	f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(pkt_res_req), 0, nr := f_ms_tx_TsTrxBtsNum(ms));
-	/* Store 1st UlTBF context before receiving next one, will will
+	f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(valueof(pkt_res_req)), 0, nr := f_ms_tx_TsTrxBtsNum(ms));
+	/* Store 1st UlTBF context before receiving next one, will
 	 * overwrite the TS allocation on MS with info from new UL TBF:
 	 */
 	pollctx.tstrxbts := f_ms_tx_TsTrxBtsNum(ms);
@@ -986,7 +986,7 @@
 }
 
 /* Verify scheduling of multiple Downlink data blocks, enough to reach CS4 */
-function f_dl_data_exp_cs(template CodingScheme exp_final_cs := ?, template MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {
+function f_dl_data_exp_cs(template (present) CodingScheme exp_final_cs := ?, template (omit) MSRadioAccessCapabilityV_BSSGP ms_racap := omit) runs on RAW_PCU_Test_CT {
 	var octetstring data := f_rnd_octstring(1400);
 	var RlcmacDlBlock prev_dl_block, dl_block;
 	var uint32_t ack_fn;
@@ -996,7 +996,7 @@
 	var integer bsn := 0;
 	var boolean using_egprs := f_rlcmac_cs_mcs_is_mcs(valueof(exp_final_cs));
 	var integer bsn_mod;
-	var template CodingScheme exp_tmp_csmcs;
+	var template (present) CodingScheme exp_tmp_csmcs;
 
 	if (using_egprs) {
 		exp_tmp_csmcs := mcs_egprs_any;
@@ -1640,7 +1640,7 @@
  * answered, so TBFs for uplink and later for downlink are created.
  */
 testcase TC_mo_ping_pong() runs on RAW_PCU_Test_CT {
-	var template CodingScheme exp_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_cs_mcs := cs_gprs_any;
 	f_TC_mo_ping_pong_1phase_access(exp_cs_mcs);
 }
 
@@ -1712,15 +1712,15 @@
 }
 
 testcase TC_mo_ping_pong_with_ul_racap() runs on RAW_PCU_Test_CT {
-	var template CodingScheme exp_ul_cs_mcs := cs_gprs_any;
-	var template CodingScheme exp_dl_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_ul_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_dl_cs_mcs := cs_gprs_any;
 
 	f_TC_mo_ping_pong_2phase_access(c_PCUIF_Flags_noMCS, ms_racap_gprs_def, exp_ul_cs_mcs, exp_dl_cs_mcs);
 }
 
 testcase TC_mo_ping_pong_with_ul_racap_egprs_only() runs on RAW_PCU_Test_CT {
-	var template CodingScheme exp_ul_cs_mcs := mcs_egprs_any;
-	var template CodingScheme exp_dl_cs_mcs := mcs_egprs_any;
+	var template (present) CodingScheme exp_ul_cs_mcs := mcs_egprs_any;
+	var template (present) CodingScheme exp_dl_cs_mcs := mcs_egprs_any;
 
 	f_TC_mo_ping_pong_2phase_access(c_PCUIF_Flags_default, ms_racap_egprs_def, exp_ul_cs_mcs, exp_dl_cs_mcs);
 }
@@ -1730,7 +1730,7 @@
 	g_force_two_phase_access := true;
 
 	var CodingScheme exp_ul_cs_mcs := f_rlcmac_block_int2cs_mcs(g_mcs_initial_ul, false);
-	var template CodingScheme exp_dl_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_dl_cs_mcs := cs_gprs_any;
 
 	f_TC_mo_ping_pong_2phase_access(c_PCUIF_Flags_noMCS, ms_racap_gprs_def, exp_ul_cs_mcs, exp_dl_cs_mcs);
 }
@@ -1790,14 +1790,14 @@
 }
 
 testcase TC_mt_ping_pong() runs on RAW_PCU_Test_CT {
-	var template CodingScheme exp_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_cs_mcs := cs_gprs_any;
 	f_TC_mt_ping_pong(omit, exp_cs_mcs);
 }
 
 /* TC_mt_ping_pong, but DL-UNITDATA contains RA Access capability with (M)CS
 /* information about the MS */
 testcase TC_mt_ping_pong_with_dl_racap() runs on RAW_PCU_Test_CT {
-	var template CodingScheme exp_cs_mcs := cs_gprs_any;
+	var template (present) CodingScheme exp_cs_mcs := cs_gprs_any;
 	f_TC_mt_ping_pong(bssgp_ms_racap_gprs_def, exp_cs_mcs);
 }
 
@@ -2963,7 +2963,7 @@
 
 /* Make sure that Immediate (UL EGPRS TBF) Assignment contains hopping parameters */
 testcase TC_pcuif_fh_imm_ass_ul_egprs() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
@@ -2984,7 +2984,7 @@
 
 /* Make sure that Immediate (UL TBF) Assignment contains hopping parameters */
 testcase TC_pcuif_fh_imm_ass_ul() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
@@ -3002,7 +3002,7 @@
 
 /* Make sure that Immediate (DL TBF) Assignment contains hopping parameters */
 testcase TC_pcuif_fh_imm_ass_dl() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS)
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
@@ -3063,7 +3063,7 @@
 
 /* Make sure that Packet Uplink Assignment contains hopping parameters */
 testcase TC_pcuif_fh_pkt_ass_ul() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
 	var GprsMS ms := valueof(t_GprsMS_def);
 	var uint32_t poll_fn;
 
@@ -3103,7 +3103,7 @@
 
 /* Make sure that Packet Downlink Assignment contains hopping parameters */
 testcase TC_pcuif_fh_pkt_ass_dl() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS);
 	var octetstring data := f_rnd_octstring(10);
 	var GprsMS ms := valueof(t_GprsMS_def);
 	var RlcmacDlBlock dl_block;
@@ -3151,7 +3151,7 @@
 
 /* Check if the IUT handles subsequent INFO.ind messages */
 testcase TC_pcuif_info_ind_subsequent() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
 	var BTS_PDTCH_Block data_msg;
 
 	/* Initialize the PCU interface abstraction */
@@ -3647,9 +3647,9 @@
 									    423),
 								     2),
 							      5));
-		var template RIM_Routing_Address src_addr := t_RIM_Routing_Address_cid(src);
-		var template RIM_Routing_Address dst_addr := t_RIM_Routing_Address_cid(dst);
-		var template RAN_Information_RIM_Container res_cont;
+		var RIM_Routing_Address src_addr := valueof(t_RIM_Routing_Address_cid(src));
+		var RIM_Routing_Address dst_addr := valueof(t_RIM_Routing_Address_cid(dst));
+		var template (value) RAN_Information_RIM_Container res_cont;
 		res_cont := ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),
 							     ts_RIM_Sequence_Number(2),
 							     ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_SING_REP),
@@ -4147,16 +4147,16 @@
 	BTS.send(si16_data_ind);
 	f_sleep(1.0);
 
-	var template RIM_Routing_Address dst_addr;
-	var template RIM_Routing_Address src_addr;
-	var template RAN_Information_Request_RIM_Container req_cont;
-	var template PDU_BSSGP bssgp_rim_pdu;
+	var RIM_Routing_Address dst_addr;
+	var RIM_Routing_Address src_addr;
+	var template (value) RAN_Information_Request_RIM_Container req_cont;
+	var template (value) PDU_BSSGP bssgp_rim_pdu;
 	var template PDU_BSSGP bssgp_rim_pdu_expect;
 	var template RAN_Information_RIM_Container rim_cont_expect;
 
 	var BssgpCellId src_cid := {ra_id := { lai := { mcc_mnc := '262F42'H, lac := 12345}, rac := 0 }, cell_id := 20962 };
-	src_addr := t_RIM_Routing_Address_cid(src_cid);
-	dst_addr := t_RIM_Routing_Address_cid(mp_gb_cfg.bvc[0].cell_id);
+	src_addr := valueof(t_RIM_Routing_Address_cid(src_cid));
+	dst_addr := valueof(t_RIM_Routing_Address_cid(mp_gb_cfg.bvc[0].cell_id));
 
 
 	var octetstring si_expect := si1_expect & si3_expect & si13_expect;
@@ -4201,7 +4201,7 @@
  * has no system information available. We expect getting a response back but
  * with no system information inside. */
 testcase TC_rim_ran_info_req_single_rep_no_si() runs on RAW_PCU_Test_CT {
-	var template PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
+	var template (value) PCUIF_info_ind info_ind := ts_PCUIF_INFO_default;
 	var PCUIF_Message pcu_msg;
 	timer T := 2.0;
 
@@ -4223,16 +4223,16 @@
 	BTS.send(si16_data_ind);
 	f_sleep(1.0);
 
-	var template RIM_Routing_Address dst_addr;
-	var template RIM_Routing_Address src_addr;
-	var template RAN_Information_Request_RIM_Container req_cont;
-	var template PDU_BSSGP bssgp_rim_pdu;
+	var RIM_Routing_Address dst_addr;
+	var RIM_Routing_Address src_addr;
+	var template (value) RAN_Information_Request_RIM_Container req_cont;
+	var template (value) PDU_BSSGP bssgp_rim_pdu;
 	var template PDU_BSSGP bssgp_rim_pdu_expect;
 	var template RAN_Information_RIM_Container rim_cont_expect;
 
 	var BssgpCellId src_cid := {ra_id := { lai := { mcc_mnc := '262F42'H, lac := 12345}, rac := 0 }, cell_id := 20962 };
-	src_addr := t_RIM_Routing_Address_cid(src_cid);
-	dst_addr := t_RIM_Routing_Address_cid(mp_gb_cfg.bvc[0].cell_id);
+	src_addr := valueof(t_RIM_Routing_Address_cid(src_cid));
+	dst_addr := valueof(t_RIM_Routing_Address_cid(mp_gb_cfg.bvc[0].cell_id));
 
 	req_cont := ts_RAN_Information_Request_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC),
 							     ts_RIM_Sequence_Number(1),
