diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 2093f55..917b5d5 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -941,7 +941,76 @@
 		variant (sign_var) "PRESENCE(sign_var_presence = '1'B)"
 	};
 
-	/* 11.2.3a Packet Cell Change Notification */
+	/* 11.2.3a Packet Cell Change Notification, 3G Target Cell Struct (Rel-6 extension) */
+	type record UtranTargetCellFdd {
+		uint14_t	arfcn,
+		BIT1		bandwidth_presence,
+		uint3_t		bandwidth optional,
+		uint10_t	scrambling_code
+	} with {
+		variant (bandwidth) "PRESENCE(bandwidth_presence = '1'B)"
+	};
+	type record UtranTargetCellTdd {
+		uint14_t	arfcn,
+		BIT1		bandwidth_presence,
+		uint3_t		bandwidth optional,
+		uint7_t		cell_parameter,
+		BIT1		sync_case
+	} with {
+		variant (bandwidth) "PRESENCE(bandwidth_presence = '1'B)"
+	};
+	type record UtranTargetCell {
+		BIT1			fdd_presence,
+		UtranTargetCellFdd	fdd optional,
+		BIT1			tdd_presence,
+		UtranTargetCellTdd	tdd optional,
+		uint6_t		reporting_quantity
+	} with {
+		variant (fdd) "PRESENCE(fdd_presence = '1'B)"
+		variant (tdd) "PRESENCE(tdd_presence = '1'B)"
+	};
+
+	/* 11.2.3a Packet Cell Change Notification, Eutran Target Cell Struct (Rel-8 extension) */
+	type record EutranTargetCell {
+		uint16_t	earfcn,
+		BIT1		meas_bandwidth_presence,
+		uint3_t		meas_bandwidth optional,
+		uint9_t		phys_layer_cell_id,
+		uint6_t		reporting_quantity
+	} with {
+		variant (meas_bandwidth) "PRESENCE(meas_bandwidth_presence = '1'B)"
+	};
+
+	/* 11.2.3a Packet Cell Change Notification, 3G CCN Measurement Report Struct (Rel-6 extension) */
+	type record of UtranCCNMeasReportItem UtranReportingQuantityList;
+	type record UtranCCNMeasReportItem {
+		uint7_t			cell_list_index,
+		uint6_t			reporting_quantity
+	} with { variant "" };
+	type record UtranCCNMeasReport {
+		uint3_t			     n_3g,
+		UtranReportingQuantityList   cells
+	} with {
+		variant (n_3g) "LENGTHTO(cells) - 1"
+		variant (n_3g) "UNIT(elements)"
+	};
+
+	/* 11.2.3a Packet Cell Change Notification, E-UTRAN CCN Measurement Report Struct (Rel-8 extension) */
+	type record length(1..4) of EutranCCNMeasReportItem EutranReportingQuantityList;
+	type record EutranCCNMeasReportItem {
+		uint3_t			frequency_list_index,
+		uint9_t			cell_identity,
+		uint6_t			reporting_quantity
+	} with { variant "" };
+	type record EutranCCNMeasReport {
+		uint1_t				utran_ba_used,
+		uint2_t				n_eutran,
+		EutranReportingQuantityList	cells
+	} with {
+		variant (n_eutran) "LENGTHTO(cells) - 1"
+		variant (n_eutran) "UNIT(elements)"
+	};
+
 	type record NCMeasurementItem {
 		uint6_t freq,
 		BIT1	bsic_presence,
@@ -957,22 +1026,74 @@
 		uint3_t		num_meas,
 		NCMeasurements	meas
 	} with { variant "" };
-	type record PacketCellChangeNotification {
-		GlobalTfi 		gtfi,
-		/* TODO: support 3g/4g in these bits */
+
+	/* 11.2.3a Packet Cell Change Notification, Rel-Additions (Matrioshka) */
+	private type record PktCellChgNotifAdditions {
+		BIT1	    			rel6_presence,
+		PktCellChgNotifR6Additions	rel6 optional
+	} with {
+		variant (rel6) "PRESENCE(rel6_presence = '1'B)"
+	};
+	private type record PktCellChgNotifR6Additions {
+		BIT1				utran_ba_used_presence,
+		uint1_t				utran_ba_used optional,
+		UtranCCNMeasReport		utran_ccn_meas_rep
+	} with {
+		variant (utran_ba_used) "PRESENCE(utran_ba_used_presence = '1'B)"
+	};
+
+	private type record PktCellChgNotifyU0 {
+		BIT1			tag ('0'B),
+		uint10_t		arfcn,
+		uint6_t			bsic
+	} with { variant "" };
+	private type record PktCellChgNotifyU10 {
+		BIT2			tag ('10'B),
+		UtranTargetCell		utran_target_cell
+	} with { variant "" };
+	private type record PktCellChgNotifyU110 {
+		BIT3			tag ('110'B),
 		BIT1			arfcn_bsic_presence,
 		uint10_t		arfcn optional,
 		uint6_t			bsic optional,
+		BIT1			utran_target_cell_presence,
+		UtranTargetCell		utran_target_cell optional,
+		BIT1			eutran_target_cell_presence,
+		EutranTargetCell	eutran_target_cell optional,
+		BIT1			eutran_ccn_meas_rep_presence,
+		EutranCCNMeasReport 	eutran_ccn_meas_rep optional
+	} with {
+		variant (arfcn) "PRESENCE(arfcn_bsic_presence = '1'B)"
+		variant (bsic) "PRESENCE(arfcn_bsic_presence = '1'B)"
+		variant (utran_target_cell) "PRESENCE(utran_target_cell_presence = '1'B)"
+		variant (eutran_target_cell) "PRESENCE(eutran_target_cell_presence = '1'B)"
+		variant (eutran_ccn_meas_rep) "PRESENCE(eutran_ccn_meas_rep_presence = '1'B)"
+	};
+	private type union PktCellChgNotifyUnion {
+		PktCellChgNotifyU0	u0,
+		PktCellChgNotifyU10	u10,	/* Rel-6 additions */
+		PktCellChgNotifyU110	u110	/* Rel-8 additions */
+		/* TODO: PktCellChgNotifyU1110     Rel-9 additions */
+		/* TODO: Message escape : { 1111 } bit (*) = <no string> > */
+	} with {
+		variant "TAG(u0, tag = '0'B;
+			     u10, tag = '10'B;
+			     u110, tag = '110'B)"
+	};
+
+	/* 11.2.3a Packet Cell Change Notification, message body */
+	type record PacketCellChangeNotification {
+		GlobalTfi 		gtfi,
+		PktCellChgNotifyUnion	u,
 		BIT1			ba_psi3_presence,
 		BIT1			ba_used optional,
 		BIT2			psi3_change_mark optional,
 		BIT1			pmo_used,
 		BIT1			pccn_sending,
-		CCNMesurementReport	ccn_meas_rep
-		/* TODO: Rel6 additions for 3G support */
+		CCNMesurementReport	ccn_meas_rep,
+		/* Rel-Additions (Matrioshka) */
+		PktCellChgNotifAdditions rel_additions optional
 	} with {
-		variant (arfcn) "PRESENCE(arfcn_bsic_presence = '0'B)"
-		variant (bsic) "PRESENCE(arfcn_bsic_presence = '0'B)"
 		variant (ba_used) "PRESENCE(ba_psi3_presence = '0'B)"
 		variant (psi3_change_mark) "PRESENCE(ba_psi3_presence = '1'B)"
 	};
