diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn
index 2a86b54..8583504 100644
--- a/library/PCUIF_Types.ttcn
+++ b/library/PCUIF_Types.ttcn
@@ -30,7 +30,7 @@
 	PCU_IF_MSG_SUSP_REQ		('03'O),
 	PCU_IF_MSG_APP_INFO_REQ		('04'O),
 	PCU_IF_MSG_RTS_REQ		('10'O),
-	PCU_IF_MSG_DATA_CNF_DT		('11'O),
+	PCU_IF_MSG_DATA_CNF_2		('11'O),
 	PCU_IF_MSG_RACH_IND		('22'O),
 	PCU_IF_MSG_INFO_IND		('32'O),
 	PCU_IF_MSG_E1_CCU_IND		('33'O),
@@ -54,7 +54,7 @@
 	PCU_IF_SAPI_PDTCH		('05'O),
 	PCU_IF_SAPI_PRACH		('06'O),
 	PCU_IF_SAPI_PTCCH		('07'O),
-	PCU_IF_SAPI_PCH_DT		('08'O)
+	PCU_IF_SAPI_PCH_2		('08'O)
 } with { variant "FIELDLENGTH(8)" };
 
 type record PCUIF_Flags {
@@ -104,7 +104,7 @@
 	int16_t		lqual_cb
 } with { variant (data) "FIELDLENGTH(162), ALIGN(left)" };
 
-type record PCUIF_data_cnf_dt {
+type record PCUIF_data_cnf {
 	PCUIF_Sapi	sapi,
 	OCT4		msg_id
 } with { variant "" };
@@ -304,8 +304,8 @@
 };
 
 /* Record to send a (confirmed) IMMEDIATE ASSIGNMENT message via PCH. The record is sent by the PCU to the BTS as a
- * data request (data_req) under SAPI PCU_IF_SAPI_PCH_DT. */
-type record PCUIF_pch_dt {
+ * data request (data_req) under SAPI PCU_IF_SAPI_PCH_2. */
+type record PCUIF_pch {
 	OCT4		msg_id,
 	charstring	imsi length(17),
 	octetstring	data length(23)
@@ -315,15 +315,15 @@
 	variant (data) "FIELDLENGTH(23)"
 };
 
-external function enc_PCUIF_pch_dt(in PCUIF_pch_dt pdu) return octetstring
+external function enc_PCUIF_pch(in PCUIF_pch pdu) return octetstring
 	with { extension "prototype(convert) encode(RAW)" };
-external function dec_PCUIF_pch_dt(in octetstring stream) return PCUIF_pch_dt
+external function dec_PCUIF_pch(in octetstring stream) return PCUIF_pch
 	with { extension "prototype(convert) decode(RAW)" };
 
 type union PCUIF_MsgUnion {
 	PCUIF_data		data_req,
 	PCUIF_data		data_cnf,
-	PCUIF_data_cnf_dt	data_cnf_dt,
+	PCUIF_data_cnf		data_cnf2,
 	PCUIF_data		data_ind,
 	PCUIF_susp_req		susp_req,
 	PCUIF_rts_req		rts_req,
@@ -347,7 +347,7 @@
 } with { variant (u) "CROSSTAG(
 				data_req, 	msg_type = PCU_IF_MSG_DATA_REQ;
 				data_cnf,	msg_type = PCU_IF_MSG_DATA_CNF;
-				data_cnf_dt,	msg_type = PCU_IF_MSG_DATA_CNF_DT;
+				data_cnf2,	msg_type = PCU_IF_MSG_DATA_CNF_2;
 				data_ind,	msg_type = PCU_IF_MSG_DATA_IND;
 				susp_req,	msg_type = PCU_IF_MSG_SUSP_REQ;
 				rts_req,	msg_type = PCU_IF_MSG_RTS_REQ;
@@ -682,27 +682,27 @@
 	}
 }
 
-template (value) PCUIF_Message ts_PCUIF_DATA_CNF_DT(template (value) uint8_t bts_nr,
-						    template (value) PCUIF_Sapi sapi,
-						    template (value) OCT4 msg_id) := {
-	msg_type := PCU_IF_MSG_DATA_CNF_DT,
+template (value) PCUIF_Message ts_PCUIF_DATA_CNF_2(template (value) uint8_t bts_nr,
+						   template (value) PCUIF_Sapi sapi,
+						   template (value) OCT4 msg_id) := {
+	msg_type := PCU_IF_MSG_DATA_CNF_2,
 	bts_nr := bts_nr,
 	spare := '0000'O,
 	u := {
-		data_cnf_dt := {
+		data_cnf2 := {
 			sapi := sapi,
 			msg_id := msg_id
 		}
 	}
 }
-template PCUIF_Message tr_PCUIF_DATA_CNF_DT(template uint8_t bts_nr,
-					    template PCUIF_Sapi sapi := ?,
-					    template OCT4 msg_id := ?) := {
-	msg_type := PCU_IF_MSG_DATA_CNF_DT,
+template PCUIF_Message tr_PCUIF_DATA_CNF_2(template uint8_t bts_nr,
+					   template PCUIF_Sapi sapi := ?,
+					   template OCT4 msg_id := ?) := {
+	msg_type := PCU_IF_MSG_DATA_CNF_2,
 	bts_nr := bts_nr,
 	spare := ?,
 	u := {
-		data_cnf_dt := {
+		data_cnf2 := {
 			sapi := sapi,
 			msg_id := msg_id
 		}
