diff --git a/pcu/PCUIF_Components.ttcn b/pcu/PCUIF_Components.ttcn
index 27cf56d..6a24ed6 100644
--- a/pcu/PCUIF_Components.ttcn
+++ b/pcu/PCUIF_Components.ttcn
@@ -350,19 +350,18 @@
 runs on RAW_PCU_BTS_CT
 {
 	var PCUIF_Message pcu_msg;
-	var PCUIF_InfoV10TrxList trx_list := g_info_ind.trx.v10;
 
 	/* Find an active TS: */
 	for (var uint8_t ts_nr := 0; ts_nr < 8; ts_nr := ts_nr + 1) {
-		for (var integer trx_nr := 0; trx_nr < lengthof(trx_list); trx_nr := trx_nr + 1) {
-			if (trx_list[trx_nr].pdch_mask[ts_nr] == '0'B) {
+		for (var integer trx_nr := 0; trx_nr < lengthof(g_info_ind.trx); trx_nr := trx_nr + 1) {
+			if (g_info_ind.trx[trx_nr].pdch_mask[ts_nr] == '0'B) {
 				continue; /* TRX+TS not activated */
 			}
 
 			/* Send empty DATA.ind to set up FN */
 			pcu_msg := valueof(ts_PCUIF_DATA_IND(bts_nr, trx_nr, ts_nr, 0 /* FIXME */,
 							     PCU_IF_SAPI_PDTCH, ''O, start_fn,
-							     trx_list[trx_nr].arfcn,
+							     g_info_ind.trx[trx_nr].arfcn,
 							     rssi := -80, ber10k := 0,
 							     ta_offs_qbits := 0, lqual_cb := 10));
 			PCUIF.send(pcu_msg);
@@ -377,12 +376,11 @@
 {
 	var PCUIF_Message pcu_msg;
 	var boolean has_msg, use_msg;
-	var PCUIF_InfoV10TrxList trx_list := g_info_ind.trx.v10;
 
 	for (var uint8_t ts_nr := 0; ts_nr < 8; ts_nr := ts_nr + 1) {
-		for (var integer trx_nr := 0; trx_nr < lengthof(trx_list); trx_nr := trx_nr + 1) {
+		for (var integer trx_nr := 0; trx_nr < lengthof(g_info_ind.trx); trx_nr := trx_nr + 1) {
 			//var charstring prefix := "BTS=" & int2str(bts_nr) & ",TRX=" & int2str(trx_nr) & ",TS=" & int2str(ts_nr) & ",FN=" & int2str(fn) & ": ";
-			if (trx_list[trx_nr].pdch_mask[ts_nr] == '0'B) {
+			if (g_info_ind.trx[trx_nr].pdch_mask[ts_nr] == '0'B) {
 				//log(prefix, "disabled");
 				continue; /* TRX+TS not activated */
 			}
@@ -406,7 +404,7 @@
 				/* NOPE.ind: */
 				pcu_msg := valueof(ts_PCUIF_DATA_IND(bts_nr, trx_nr, ts_nr, 0 /* FIXME */,
 								     PCU_IF_SAPI_PDTCH, ''O, fn,
-								     trx_list[trx_nr].arfcn,
+								     g_info_ind.trx[trx_nr].arfcn,
 								     rssi := -80, ber10k := 0,
 								     ta_offs_qbits := 0, lqual_cb := 10));
 				//log(prefix, "DATA.ind (len=0)");
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index cac423a..bea9ddd 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -79,7 +79,7 @@
 := {
 	version := PCUIF_Types.mp_pcuif_version,
 	flags := flags,
-	trx := f_PCUIF_ver_INFO_Trxs(GPRS_Components.mp_base_arfcn),
+	trx := ts_PCUIF_InfoTrxs_def(GPRS_Components.mp_base_arfcn),
 	bsic := 7,
 	mcc := 262,
 	mnc := 42,
@@ -109,7 +109,7 @@
 	nsvci := { mp_nsconfig.nsvc[0].nsvci, 0 },
 	local_port := { mp_nsconfig.nsvc[0].provider.ip.remote_udp_port, 0 },
 	remote_port := { mp_nsconfig.nsvc[0].provider.ip.local_udp_port, 0 },
-	remote_addr := f_PCUIF_ver_INFO_RemoteAddr(
+	remote_addr := f_PCUIF_RemoteAddr(
 		f_PCUIF_AF2addr_type(mp_nsconfig.nsvc[0].provider.ip.address_family), mp_nsconfig.nsvc[0].provider.ip.local_ip)
 }
 
@@ -2644,8 +2644,8 @@
 	ms := g_ms[0]; /* We only use first MS in this test */
 
 	/* Only 1 TRX with 8 PDCH */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -2703,8 +2703,8 @@
 	ms := g_ms[0]; /* We only use first MS in this test */
 
 	/* Only 1 TRX with 8 PDCH */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -2752,8 +2752,8 @@
 	ms := g_ms[0]; /* We only use first MS in this test */
 
 	/* Only 1 TRX with 8 PDCH */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11111111'B, 0);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '11111111'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3378,8 +3378,8 @@
 	info_ind := valueof(ts_PCUIF_INFO_default);
 
 	/* Only the first TRX is enabled. */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000001'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 0);
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3425,7 +3425,7 @@
 					     in GsmRrMessage rr_msg)
 {
 	var ImmediateAssignment ia := rr_msg.payload.imm_ass;
-	var PCUIF_InfoTrxTs ts := info_ind.trx.v10[0].ts[ia.pkt_chan_desc.tn];
+	var PCUIF_InfoTrxTs ts := info_ind.trx[0].ts[ia.pkt_chan_desc.tn];
 
 	var template PacketChannelDescription tr_pkt_chan_desc := {
 		channel_Type_spare := ?,
@@ -3465,7 +3465,7 @@
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
-	info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(32);
+	info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(32);
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3486,7 +3486,7 @@
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
-	info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(32);
+	info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(32);
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3504,7 +3504,7 @@
 	var GprsMS ms := valueof(t_GprsMS_def);
 
 	/* Enable frequency hopping on TRX0/TS7 */
-	info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(16);
+	info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(16);
 
 	/* Initialize NS/BSSGP side */
 	f_init_bssgp();
@@ -3528,7 +3528,7 @@
 					     in FrequencyParameters fp)
 {
 	/* FIXME: TRX0/TS7 is a hard-coded expectation, make it configurable */
-	var PCUIF_InfoTrxTs ts := info_ind.trx.v10[0].ts[7];
+	var PCUIF_InfoTrxTs ts := info_ind.trx[0].ts[7];
 
 	/* Table 12.8.1: Frequency Parameters information elements */
 	var template FrequencyParameters tr_fp := {
@@ -3566,7 +3566,7 @@
 	var uint32_t poll_fn;
 
 	/* Enable frequency hopping on TRX0/TS7 */
-	info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(33);
+	info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(33);
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3608,7 +3608,7 @@
 	var uint32_t poll_fn;
 
 	/* Enable frequency hopping on TRX0/TS7 */
-	info_ind.trx.v10[0].ts[7] := f_TC_pcuif_fh_params_gen(33);
+	info_ind.trx[0].ts[7] := f_TC_pcuif_fh_params_gen(33);
 
 	/* Initialize NS/BSSGP side */
 	f_init_bssgp();
@@ -3678,10 +3678,10 @@
 	info_ind := valueof(ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS));
 	/* Only the 3 first TRX are enabled. The enabled ones all have same
 	   amount of resources, hence same amount of initial resources. */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (3 .. 7));
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000011'B, 0);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00001100'B, 1);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '11000000'B, 2);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (3 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '00000011'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00001100'B, 1);
+	f_PCUIF_PDCHMask_set(info_ind, '11000000'B, 2);
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3695,9 +3695,9 @@
 
 	/* Check if all TBFs are allocated on different TRX in an uniform way */
 	for (i := 0; i < num_ms; i := i + 1) {
-		if (g_ms[i].ul_tbf.arfcn != info_ind.trx.v10[i mod 3].arfcn) {
+		if (g_ms[i].ul_tbf.arfcn != info_ind.trx[i mod 3].arfcn) {
 			setverdict(fail, "Got assigned ARFCN ", g_ms[i].ul_tbf.arfcn,
-				   " vs exp ", info_ind.trx.v10[i mod 3].arfcn);
+				   " vs exp ", info_ind.trx[i mod 3].arfcn);
 			f_shutdown(__BFILE__, __LINE__);
 		}
 	}
@@ -3728,8 +3728,8 @@
 
 	info_ind := valueof(ts_PCUIF_INFO_default);
 	/* Only use 1 PDCH to make sure both end up in the same slot: */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000001'B, 0);
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
+	f_PCUIF_PDCHMask_set(info_ind, '00000001'B, 0);
+	f_PCUIF_PDCHMask_set(info_ind, '00000000'B, (1 .. 7));
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename(), info_ind);
@@ -3929,7 +3929,7 @@
 	f_init_bssgp();
 
 	/* Explicitly set the given PDCH slot-mask to all transceivers */
-	f_PCUIF_ver_INFO_PDCHMask_set(info_ind, pdch_mask);
+	f_PCUIF_PDCHMask_set(info_ind, pdch_mask);
 
 	/* Allocate 56 GprsMS instances (maximum for 8 PDCH slots) */
 	f_init_gprs_ms(7 * 8);
@@ -5679,20 +5679,18 @@
 
 	execute( TC_mo_ping_pong_with_ul_racap_egprs_only() );
 
-	/* Frequency hopping specific test cases */
-	if (PCUIF_Types.mp_pcuif_version >= 10) {
-		/* Immediate Assignment on AGCH/PCH */
-		execute( TC_pcuif_fh_imm_ass_ul_egprs() );
-		execute( TC_pcuif_fh_imm_ass_ul() );
-		execute( TC_pcuif_fh_imm_ass_dl() );
-		/* Packet Uplink/Downlink Assignment on PACCH */
-		execute( TC_pcuif_fh_pkt_ass_ul() );
-		execute( TC_pcuif_fh_pkt_ass_dl() );
-		execute( TC_multitrx_multims_alloc() );
-		execute( TC_dl_multislot_tbf_ms_class_from_sgsn() );
-		execute( TC_dl_multislot_tbf_ms_class_from_2phase() );
-		execute( TC_ul_multislot_tbf_ms_class_from_2phase() );
-	}
+	/* Immediate Assignment on AGCH/PCH */
+	execute( TC_pcuif_fh_imm_ass_ul_egprs() );
+	execute( TC_pcuif_fh_imm_ass_ul() );
+	execute( TC_pcuif_fh_imm_ass_dl() );
+	/* Packet Uplink/Downlink Assignment on PACCH */
+	execute( TC_pcuif_fh_pkt_ass_ul() );
+	execute( TC_pcuif_fh_pkt_ass_dl() );
+	execute( TC_multitrx_multims_alloc() );
+	execute( TC_dl_multislot_tbf_ms_class_from_sgsn() );
+	execute( TC_dl_multislot_tbf_ms_class_from_2phase() );
+	execute( TC_ul_multislot_tbf_ms_class_from_2phase() );
+
 	execute( TC_multiplex_dl_gprs_egprs() );
 
 	execute( TC_pcuif_info_ind_subsequent() );
