diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn
index 089403c..1c5b0af 100644
--- a/library/PCUIF_Types.ttcn
+++ b/library/PCUIF_Types.ttcn
@@ -20,7 +20,7 @@
 };
 
 const charstring PCU_SOCK_DEFAULT := "/tmp/pcu_bts";
-type integer PCUIF_Version (9); /* supported versions */
+type integer PCUIF_Version (9..10); /* supported versions */
 
 type enumerated PCUIF_MsgType {
 	PCU_IF_MSG_DATA_REQ		('00'O),
@@ -140,14 +140,38 @@
 	uint8_t		ts_nr
 } with { variant "" };
 
-type record PCUIF_InfoTrx {
+type record PCUIF_InfoTrxTs {
+	uint8_t			tsc,
+	uint8_t			hopping,
+	uint8_t			hsn,
+	uint8_t			maio,
+	bitstring		ma length(64)
+} with { variant (ma) "BYTEORDER(first), BITORDER(msb)" };
+private type record length(8) of PCUIF_InfoTrxTs PCUIF_InfoTrxTsList;
+
+/* Version >= 10 specific coding */
+private type record PCUIF_InfoV10Trx {
+	uint16_t		arfcn,
+	BIT8			pdch_mask,
+	uint32_t		hLayer1,
+	PCUIF_InfoTrxTsList	ts
+} with { variant (pdch_mask) "BITORDER(msb)" };
+private type record length(8) of PCUIF_InfoV10Trx PCUIF_InfoV10TrxList;
+
+/* Version <= 9 specific coding */
+private type record PCUIF_InfoV09Trx {
 	uint16_t	arfcn,
 	BIT8		pdch_mask,
 	OCT1		spare,
 	OCT8		tsc,
 	uint32_t	hLayer1
 } with { variant (pdch_mask) "BITORDER(msb)" };
-type record length(8) of PCUIF_InfoTrx PCUIF_InfoTrxs;
+private type record length(8) of PCUIF_InfoV09Trx PCUIF_InfoV09TrxList;
+
+type union PCUIF_InfoTrxs {
+	PCUIF_InfoV09TrxList	v09,
+	PCUIF_InfoV10TrxList	v10
+} with { variant "" };
 
 type record PCUIF_info_ind {
 	uint32_t	version,
@@ -187,7 +211,11 @@
 	record length(2) of uint16_t	local_pprt,
 	record length(2) of uint16_t	remote_port,
 	record length(2) of OCT4	remote_ip
-} with { variant "" }
+} with {
+	/* NOTE: TITAN is not smart enough to handle 'version < 10' and 'version > 9',
+	 * so we cannot support more than two versions at the same time here. Sigh. */
+	variant (trx) "CROSSTAG(v09, version = 9; v10, version = 10)"
+};
 
 type record PCUIF_act_req {
 	uint8_t		is_activate,
@@ -676,9 +704,41 @@
 	spare2 := '000'B
 };
 
-template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrx(template (value) uint16_t arfcn := 871,
-						template (value) BIT8 pdch_mask := '00000001'B,
-						OCT1 tsc := '07'O) := {
+template (value) PCUIF_InfoTrxTs ts_PCUIF_InfoTrxTsH0(template (value) uint3_t tsc := 7) := {
+	tsc := tsc,
+	hopping := 0,
+	hsn := 0, maio := 0,
+	ma := f_pad_bit(''B, 64, '0'B)
+};
+
+template (value) PCUIF_InfoTrxTs ts_PCUIF_InfoTrxTsH1(template (value) uint3_t tsc := 7,
+						      template (value) uint6_t hsn := 0,
+						      template (value) uint6_t maio := 0,
+						      template (value) bitstring ma := ''B) := {
+	tsc := tsc,
+	hopping := 1,
+	hsn := hsn,
+	maio := maio,
+	ma := f_pad_bit(valueof(ma), 64, '0'B)
+};
+
+template (value) PCUIF_InfoV10Trx ts_PCUIF_InfoV10Trx(template (value) uint16_t arfcn := 871,
+						      template (value) BIT8 pdch_mask := '00000001'B,
+						      template (value) uint3_t tsc := 7) := {
+	arfcn := arfcn,
+	pdch_mask := pdch_mask,
+	hLayer1 := 0,
+	ts := {
+		ts_PCUIF_InfoTrxTsH0(tsc), ts_PCUIF_InfoTrxTsH0(tsc),
+		ts_PCUIF_InfoTrxTsH0(tsc), ts_PCUIF_InfoTrxTsH0(tsc),
+		ts_PCUIF_InfoTrxTsH0(tsc), ts_PCUIF_InfoTrxTsH0(tsc),
+		ts_PCUIF_InfoTrxTsH0(tsc), ts_PCUIF_InfoTrxTsH0(tsc)
+	}
+};
+
+template (value) PCUIF_InfoV09Trx ts_PCUIF_InfoV09Trx(template (value) uint16_t arfcn := 871,
+						      template (value) BIT8 pdch_mask := '00000001'B,
+						      OCT1 tsc := '07'O) := {
 	arfcn := arfcn,
 	pdch_mask := pdch_mask,
 	spare := '00'O,
@@ -686,11 +746,25 @@
 	hLayer1 := 0
 }
 
-template (value) PCUIF_InfoTrx ts_PCUIF_InfoTrxNULL := ts_PCUIF_InfoTrx(0, '00000000'B, '00'O);
+template (value) PCUIF_InfoV09Trx ts_PCUIF_InfoV09TrxNULL := ts_PCUIF_InfoV09Trx(0, '00000000'B, '00'O);
 
-template (value) PCUIF_InfoTrxs ts_PCUIF_InfoTrxs_def := {
-		ts_PCUIF_InfoTrx, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL,
-		ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL, ts_PCUIF_InfoTrxNULL };
+template (value) PCUIF_InfoTrxs ts_PCUIF_InfoV09Trxs_def := {
+	v09 := {
+		ts_PCUIF_InfoV09Trx, ts_PCUIF_InfoV09TrxNULL,
+		ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL,
+		ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL,
+		ts_PCUIF_InfoV09TrxNULL, ts_PCUIF_InfoV09TrxNULL
+	}
+};
+
+template (value) PCUIF_InfoTrxs ts_PCUIF_InfoV10Trxs_def := {
+	v10 := {
+		ts_PCUIF_InfoV10Trx, ts_PCUIF_InfoV10Trx,
+		ts_PCUIF_InfoV10Trx, ts_PCUIF_InfoV10Trx,
+		ts_PCUIF_InfoV10Trx, ts_PCUIF_InfoV10Trx,
+		ts_PCUIF_InfoV10Trx, ts_PCUIF_InfoV10Trx
+	}
+};
 
 template (value) PCUIF_Message ts_PCUIF_INFO_IND(template (value) uint8_t bts_nr,
 						 template (value) PCUIF_info_ind info_ind) := {
@@ -830,4 +904,24 @@
 }
 
 
+/* TODO: remove this as soon as we drop version 9 support */
+function f_PCUIF_ver_INFO_Trxs()
+return PCUIF_InfoTrxs {
+	if (PCUIF_Types.mp_pcuif_version >= 10) {
+		return valueof(ts_PCUIF_InfoV10Trxs_def);
+	} else {
+		return valueof(ts_PCUIF_InfoV09Trxs_def);
+	}
+}
+
+function f_PCUIF_ver_INFO_PDCHMask(in PCUIF_info_ind info, uint8_t trx_nr)
+return bitstring {
+	if (PCUIF_Types.mp_pcuif_version >= 10) {
+		return info.trx.v10[trx_nr].pdch_mask;
+	} else {
+		return info.trx.v09[trx_nr].pdch_mask;
+	}
+}
+
+
 } with { encode "RAW" variant "BYTEORDER(first)" };
