diff --git a/asn1/ranap/RANAP-IEs.asn b/asn1/ranap/RANAP-IEs.asn
index 684606e..8d09bee 100644
--- a/asn1/ranap/RANAP-IEs.asn
+++ b/asn1/ranap/RANAP-IEs.asn
@@ -44,6 +44,7 @@
 	maxNrOfVol,
 	maxSizeOfIMSInfo,
 	maxnoofMDTPLMNs,
+	maxProtocolExtensions,
 
 	id-CN-DomainIndicator,
 	id-MessageStructure,
@@ -115,9 +116,10 @@
 	TriggeringMessage
 FROM RANAP-CommonDataTypes
 
-	ProtocolExtensionContainer{},
-	RANAP-PROTOCOL-EXTENSION
-FROM RANAP-Containers;
+	IE
+FROM RANAP-PDU;
+
+IE-Extensions ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF IE
 
 -- A
 
@@ -132,32 +134,14 @@
 	pre-emptionCapability		Pre-emptionCapability,
 	pre-emptionVulnerability	Pre-emptionVulnerability,
 	queuingAllowed			QueuingAllowed,
-	iE-Extensions			ProtocolExtensionContainer { {AllocationOrRetentionPriority-ExtIEs} } OPTIONAL,
-	...
-}
-
-AllocationOrRetentionPriority-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions		 OPTIONAL,
 	...
 }
 
 Alt-RAB-Parameters ::= SEQUENCE {
 	altMaxBitrateInf		Alt-RAB-Parameter-MaxBitrateInf 				OPTIONAL,
 	altGuaranteedBitRateInf		Alt-RAB-Parameter-GuaranteedBitrateInf 				OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {Alt-RAB-Parameters-ExtIEs} } 	OPTIONAL,
-	...
-}
-
-Alt-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 6 to indicate an alternative RAB configuration --
-	{ ID id-AlternativeRABConfiguration		CRITICALITY ignore	EXTENSION RAB-Parameters	PRESENCE optional }|
--- Extension for Release 7 to indicate an alternative list of Extended Guaranteed Bitrates --
-{ ID id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf	CRITICALITY ignore	EXTENSION Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf 	PRESENCE optional }|
--- Extension for Release 7 to indicate an alternative list of Extended Maximum Bitrates --
-{ ID id-Alt-RAB-Parameter-ExtendedMaxBitrateInf		CRITICALITY ignore	EXTENSION Alt-RAB-Parameter-ExtendedMaxBitrateInf 	PRESENCE optional }|
--- Extension for Release 8 to indicate an alternative list of Supported Maximum Bitrates --
-{ ID id-Alt-RAB-Parameter-SupportedMaxBitrateInf	CRITICALITY reject	EXTENSION Alt-RAB-Parameter-SupportedMaxBitrateInf 	PRESENCE optional }|
--- Extension for Release 8 to indicate an alternative list of Supported Guaranteed Bitrates --
-{ ID id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf	CRITICALITY reject	EXTENSION Alt-RAB-Parameter-SupportedGuaranteedBitrateInf 	PRESENCE optional },
+	iE-Extensions			IE-Extensions		 					OPTIONAL,
 	...
 }
 
@@ -197,14 +181,10 @@
 	altSupportedGuaranteedBitrateType	Alt-RAB-Parameter-GuaranteedBitrateType,
 	altSupportedGuaranteedBitrates		Alt-RAB-Parameter-SupportedGuaranteedBitrates	OPTIONAL
 	-- This IE shall be present if the Type of Supported Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
-	iE-Extensions			ProtocolExtensionContainer { { Alt-RAB-Parameter-SupportedGuaranteedBitrateInf-ExtIEs} } OPTIONAL,
+	iE-Extensions			IE-Extensions		 					OPTIONAL,
 	...
 }
 
-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-...
-}
-
 Alt-RAB-Parameter-SupportedGuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
 	SupportedRAB-ParameterBitrateList
 
@@ -246,11 +226,7 @@
 	altSupportedMaxBitrateType	Alt-RAB-Parameter-MaxBitrateType,
 	altSupportedMaxBitrates		Alt-RAB-Parameter-SupportedMaxBitrates			OPTIONAL
 	-- This IE shall be present if the Type of Supported Alternative Maximun Bit Rates Information IE is set to "Value range" or "Discrete values" --,
-	 iE-Extensions			ProtocolExtensionContainer { { Alt-RAB-Parameter-SupportedMaxBitrateInf-ExtIEs} } 	OPTIONAL,
-...
-}
-
-Alt-RAB-Parameter-SupportedMaxBitrateInf-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions		 					OPTIONAL,
 ...
 }
 
@@ -275,19 +251,7 @@
 Ass-RAB-Parameters ::= SEQUENCE {
 	assMaxBitrateInf		Ass-RAB-Parameter-MaxBitrateList 				OPTIONAL,
 	assGuaranteedBitRateInf		Ass-RAB-Parameter-GuaranteedBitrateList 			OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {Ass-RAB-Parameters-ExtIEs} } 	OPTIONAL,
-	...
-}
-
-Ass-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 7 to indicate an extended assigned Guaranteed Bitrate --
-	{ ID id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList		CRITICALITY reject	EXTENSION Ass-RAB-Parameter-ExtendedGuaranteedBitrateList  PRESENCE optional }|
--- Extension for Release 7 to indicate an extended assigned Maximum Bitrate --
-	{ ID id-Ass-RAB-Parameter-ExtendedMaxBitrateList		CRITICALITY reject	EXTENSION Ass-RAB-Parameter-ExtendedMaxBitrateList 	PRESENCE optional }|
--- Extension for Release 8 to indicate an supported assigned Maximum Bitrate --
-	{ ID id-Ass-RAB-Parameter-SupportedMaxBitrateList		CRITICALITY ignore	EXTENSION SupportedRAB-ParameterBitrateList 	PRESENCE optional }|
--- Extension for Release 8 to indicate an supported assigned Guaranteed Bitrate --
-	{ ID id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList	CRITICALITY ignore	EXTENSION SupportedRAB-ParameterBitrateList	PRESENCE optional },
+	iE-Extensions			IE-Extensions		 					OPTIONAL,
 	...
 }
 
@@ -305,14 +269,10 @@
 	SEQUENCE {
 		pLMNidentity		PLMNidentity,
 		authorisedSNAsList	AuthorisedSNAs		OPTIONAL,
-		iE-Extensions		ProtocolExtensionContainer { {AuthorisedPLMNs-ExtIEs} } OPTIONAL,
+		iE-Extensions		IE-Extensions		OPTIONAL,
 		...
 	}
 
-AuthorisedPLMNs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 AuthorisedSNAs ::= SEQUENCE (SIZE (1..maxNrOfSNAs)) OF SNAC
 
 
@@ -462,11 +422,7 @@
 
 CellBased::= SEQUENCE {
 	cellIdList		CellIdList,
-	iE-Extensions		ProtocolExtensionContainer { {CellBased-ExtIEs} } OPTIONAL,
-	...
-}
-
-CellBased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions		OPTIONAL,
 	...
 }
 
@@ -482,11 +438,7 @@
 	loadValue			LoadValue,
 	rTLoadValue			RTLoadValue				OPTIONAL,
 	nRTLoadInformationValue		NRTLoadInformationValue			OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { { CellLoadInformation-ExtIEs } }	OPTIONAL,
-	...
-}
-
-CellLoadInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions				OPTIONAL,
 	...
 }
 
@@ -494,11 +446,7 @@
 	sourceCellID					SourceCellID,
 	uplinkCellLoadInformation			CellLoadInformation		OPTIONAL,
 	downlinkCellLoadInformation			CellLoadInformation		OPTIONAL,
-	iE-Extensions	ProtocolExtensionContainer { { CellLoadInformationGroup-ExtIEs } }	OPTIONAL,
-	...
-}
-
-CellLoadInformationGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions					IE-Extensions			OPTIONAL,
 	...
 }
 
@@ -527,11 +475,7 @@
 	triggeringMessage		TriggeringMessage		OPTIONAL,
 	procedureCriticality		Criticality			OPTIONAL,
 	iEsCriticalityDiagnostics	CriticalityDiagnostics-IE-List 	OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
-	...
-}
-
-CriticalityDiagnostics-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions			OPTIONAL,
 	...
 }
 
@@ -540,41 +484,23 @@
 		iECriticality		Criticality,
 		iE-ID			ProtocolIE-ID,
 		repetitionNumber	RepetitionNumber0		OPTIONAL,
-		iE-Extensions		ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
+		iE-Extensions		IE-Extensions			OPTIONAL,
 		...
 	}
 
-CriticalityDiagnostics-IE-List-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 99 to enable reporting the message structure down to the erroneous IE --
-	{	ID id-MessageStructure	CRITICALITY ignore		EXTENSION MessageStructure	PRESENCE optional	} |
--- Extension for Release 99 to enable reporting if a reported error is due to a not understood or a missing IE --
-	{	ID id-TypeOfError	CRITICALITY ignore		EXTENSION TypeOfError		PRESENCE mandatory	},
-	...
-}
-
 MessageStructure ::= SEQUENCE (SIZE (1..maxNrOfLevels)) OF
 	SEQUENCE {
 		iE-ID			ProtocolIE-ID,
 		repetitionNumber	RepetitionNumber1		OPTIONAL,
-		iE-Extensions		ProtocolExtensionContainer { {MessageStructure-ExtIEs} } OPTIONAL,
+		iE-Extensions		IE-Extensions			OPTIONAL,
 		...
 	}
 
-MessageStructure-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 CGI ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	lAC		LAC,
 	cI		CI,
-	iE-Extensions	ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL
-}
-
-CGI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
-	{	ID id-RAC	CRITICALITY ignore		EXTENSION RAC	PRESENCE optional	},
-	...
+	iE-Extensions		IE-Extensions			OPTIONAL
 }
 
 ChosenEncryptionAlgorithm 		::= EncryptionAlgorithm
@@ -644,7 +570,7 @@
 DeltaRAListofIdleModeUEs ::= SEQUENCE {
 	newRAListofIdleModeUEs		NewRAListofIdleModeUEs	OPTIONAL,
 	rAListwithNoIdleModeUEsAnyMore	RAListwithNoIdleModeUEsAnyMore	OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {DeltaRAListofIdleModeUEs-ExtIEs} } OPTIONAL
+	iE-Extensions			IE-Extensions			OPTIONAL
 }
 
 NewRAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
@@ -653,14 +579,6 @@
 RAListwithNoIdleModeUEsAnyMore ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
 	RAC
 
-DeltaRAListofIdleModeUEs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-{ ID id-newLAListofIdleModeUEs		CRITICALITY reject	EXTENSION LAListofIdleModeUEs	PRESENCE conditional	}|
-	-- This IE shall be present if the New RA List of Idle Mode UEs IE is included. --
-{ ID id-LAListwithNoIdleModeUEsAnyMore	CRITICALITY reject	EXTENSION LAListofIdleModeUEs	PRESENCE conditional	},
-	-- This IE shall be presentif the RA List with No Idle Mode UEs Any More IE is included. --
-	...
-}
-
 ForwardingIndication::=ENUMERATED{
 	forwarding-admitted,
 	...
@@ -694,11 +612,7 @@
 EncryptionInformation ::= SEQUENCE {
 	permittedAlgorithms	PermittedEncryptionAlgorithms,
 	key			EncryptionKey,
-	iE-Extensions		ProtocolExtensionContainer { {EncryptionInformation-ExtIEs} } OPTIONAL
-}
-
-EncryptionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions		IE-Extensions			OPTIONAL
 }
 
 EncryptionKey ::= BIT STRING (SIZE (128))
@@ -781,11 +695,7 @@
 	latitudeSign	ENUMERATED { north, south },
 	latitude	INTEGER (0..8388607),
 	longitude	INTEGER (-8388608..8388607),
-	iE-Extensions	ProtocolExtensionContainer { {GeographicalCoordinates-ExtIEs} } OPTIONAL,
-	...
-}
-
-GeographicalCoordinates-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions			OPTIONAL,
 	...
 }
 
@@ -802,32 +712,20 @@
 	offsetAngle		INTEGER (0..179),
 	includedAngle		INTEGER(0..179),
 	confidence		INTEGER (0..127),
-	iE-Extensions		ProtocolExtensionContainer { { GA-EllipsoidArc-ExtIEs} } OPTIONAL,
-	...
-}
-
-GA-EllipsoidArc-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	...
 }
 
 GA-Point ::= SEQUENCE {
 	geographicalCoordinates	GeographicalCoordinates,
-	iE-Extensions		ProtocolExtensionContainer { {GA-Point-ExtIEs} } OPTIONAL,
-	...
-}
-
-GA-Point-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	...
 }
 
 GA-PointWithAltitude ::= SEQUENCE {
 	geographicalCoordinates	GeographicalCoordinates,
 	altitudeAndDirection	GA-AltitudeAndDirection,
-	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithAltitude-ExtIEs} } OPTIONAL,
-	...
-}
-
-GA-PointWithAltitude-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	...
 }
 
@@ -837,47 +735,31 @@
 	uncertaintyEllipse	GA-UncertaintyEllipse,
 	uncertaintyAltitude	INTEGER (0..127),
 	confidence		INTEGER (0..127),
-	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithAltitudeAndUncertaintyEllipsoid-ExtIEs} } OPTIONAL,
-	...
-}
-
-GA-PointWithAltitudeAndUncertaintyEllipsoid-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	...
 }
 
 GA-PointWithUnCertainty ::=SEQUENCE {
 	geographicalCoordinates	GeographicalCoordinates,
-	iE-Extensions		ProtocolExtensionContainer { {GA-PointWithUnCertainty-ExtIEs} } OPTIONAL,
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	uncertaintyCode		INTEGER (0..127)
 }
 
-GA-PointWithUnCertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 GA-PointWithUnCertaintyEllipse ::= SEQUENCE {
 	geographicalCoordinates	GeographicalCoordinates,
 	uncertaintyEllipse	GA-UncertaintyEllipse,
 	confidence		INTEGER (0..127),
-	iE-Extensions		ProtocolExtensionContainer { { GA-PointWithUnCertaintyEllipse-ExtIEs} } OPTIONAL,
-	...
-}
-
-GA-PointWithUnCertaintyEllipse-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions			OPTIONAL,
 	...
 }
 
 GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF
 	SEQUENCE {
 		geographicalCoordinates	GeographicalCoordinates,
-		iE-Extensions		ProtocolExtensionContainer { {GA-Polygon-ExtIEs} } OPTIONAL,
+		iE-Extensions		IE-Extensions			OPTIONAL,
 		...
 	}
 
-GA-Polygon-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 GA-UncertaintyEllipse ::= SEQUENCE {
 	uncertaintySemi-major	INTEGER (0..127),
 	uncertaintySemi-minor	INTEGER (0..127),
@@ -893,11 +775,7 @@
 	lAI		LAI,
 	rAC		RAC,
 	cI		CI,
-	iE-Extensions	ProtocolExtensionContainer { {GERAN-Cell-ID-ExtIEs} } OPTIONAL
-}
-
-GERAN-Cell-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions			OPTIONAL
 }
 
 GERAN-Classmark	 				::= OCTET STRING
@@ -938,11 +816,7 @@
 IMEIGroup	::= SEQUENCE {
 	iMEI		IMEI,
 	iMEIMask	BIT STRING (SIZE (7)),
-	iE-Extensions	ProtocolExtensionContainer { { IMEIGroup-ExtIEs} } OPTIONAL
-}
-
-IMEIGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions			OPTIONAL
 }
 
 IMEIList	::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEI
@@ -953,11 +827,7 @@
 IMEISVGroup	::= SEQUENCE {
 	iMEISV		IMEISV,
 	iMEISVMask	BIT STRING (SIZE (7)),
-	iE-Extensions	ProtocolExtensionContainer { { IMEISVGroup-ExtIEs} } OPTIONAL
-}
-
-IMEISVGroup-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions			OPTIONAL
 }
 
 IMEISVList	::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEISV
@@ -969,19 +839,7 @@
 	m2report		M2Report				OPTIONAL,
 	-- Included in case of event-triggered reporting for measurement M2
 	...,
-	iE-Extensions		ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL
-}
-
-ImmediateMDT-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {	
-	{ID id-M4Report		CRITICALITY ignore	EXTENSION M4Report		PRESENCE optional}|
-	-- Included in case that measurement M4 is activated
-	{ID id-M5Report		CRITICALITY ignore	EXTENSION M5Report		PRESENCE optional}|
-	-- Included in case that measurement M5 is activated
-	{ID id-M6Report		CRITICALITY ignore	EXTENSION M6Report		PRESENCE optional}|
-	-- Included in case that measurement M6 is activated
-	{ID id-M7Report		CRITICALITY ignore	EXTENSION M7Report		PRESENCE optional},
-	-- Included in case that measurement M7 is activated
-	...
+	iE-Extensions		IE-Extensions			OPTIONAL
 }
 
 IMSI	::= TBCD-STRING (SIZE (3..8))
@@ -1027,11 +885,7 @@
 IntegrityProtectionInformation ::= SEQUENCE {
 	permittedAlgorithms		PermittedIntegrityProtectionAlgorithms,
 	key				IntegrityProtectionKey,
-	iE-Extensions			ProtocolExtensionContainer { {IntegrityProtectionInformation-ExtIEs} } OPTIONAL
-}
-
-IntegrityProtectionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions			IE-Extensions			OPTIONAL
 }
 
 IntegrityProtectionKey			::= BIT STRING (SIZE (128))
@@ -1044,14 +898,10 @@
 InterSystemInformation-TransparentContainer ::= SEQUENCE {
 	downlinkCellLoadInformation	CellLoadInformation		OPTIONAL,
 	uplinkCellLoadInformation	CellLoadInformation		OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { { InterSystemInformation-TransparentContainer-ExtIEs} } OPTIONAL,
+	iE-Extensions			IE-Extensions 			OPTIONAL,
 	...
 }
 
-InterSystemInformation-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-...
-}
-
 IPMulticastAddress ::= OCTET STRING (SIZE (4..16))
 -- Reference: 23.003
 
@@ -1077,34 +927,22 @@
 	SEQUENCE {
 		lAC			LAC,
 		listOF-SNAs		ListOF-SNAs,
-		iE-Extensions		ProtocolExtensionContainer { { LA-LIST-ExtIEs} } OPTIONAL,
+		iE-Extensions		IE-Extensions 			OPTIONAL,
 		...
 	}
 
-LA-LIST-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 LAC					::= OCTET STRING (SIZE (2))
 
 LAI ::= SEQUENCE {
 	pLMNidentity			PLMNidentity,
 	lAC				LAC,
-	iE-Extensions			ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL
-}
-
-LAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions			IE-Extensions 			OPTIONAL
 }
 
 LastKnownServiceArea	::= SEQUENCE {
 	sAI		SAI,
 	ageOfSAI	INTEGER (0..32767),
-	iE-Extensions	ProtocolExtensionContainer { {LastKnownServiceArea-ExtIEs} } OPTIONAL,	
-	...
-}
-
-LastKnownServiceArea-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions 			OPTIONAL,
 	...
 }
 
@@ -1112,14 +950,7 @@
 	uTRAN-CellID		UTRAN-CellID,
 	cellType		CellType,
 	time-UE-StayedInCell	Time-UE-StayedInCell,
-	iE-Extensions		ProtocolExtensionContainer { {LastVisitedUTRANCell-Item-ExtIEs} } OPTIONAL,
-	...
-}
-
-LastVisitedUTRANCell-Item-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell --
-	{ ID id-Time-UE-StayedInCell-EnhancedGranularity	CRITICALITY ignore	EXTENSION Time-UE-StayedInCell-EnhancedGranularity	PRESENCE	optional }|
-	{ ID id-HO-Cause					CRITICALITY ignore	EXTENSION Cause						PRESENCE	optional },
+	iE-Extensions		IE-Extensions 			OPTIONAL,
 	...
 }
 
@@ -1133,11 +964,7 @@
 
 InterfacesToTraceItem ::= SEQUENCE {
 	interface	ENUMERATED {iu-cs, iu-ps, iur, iub, uu, ...},
-	iE-Extensions	ProtocolExtensionContainer { {InterfacesToTraceItem-ExtIEs} }	OPTIONAL,
-	...
-}
-
-InterfacesToTraceItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions 			OPTIONAL,
 	...
 }
 
@@ -1170,11 +997,7 @@
 	responseTime			ResponseTime			OPTIONAL,
 	includeVelocity			IncludeVelocity			OPTIONAL,
 	periodicLocationInfo		PeriodicLocationInfo		OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { { LocationReportingTransferInformation-ExtIEs } }		OPTIONAL,
-	...
-}
-
-LocationReportingTransferInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions 			OPTIONAL,
 	...
 }
 
@@ -1220,11 +1043,7 @@
 M4-Collection-Parameters ::= SEQUENCE {
 	m4-period	M4-Period,
 	m4-threshold	M4-Threshold	OPTIONAL,
-	iE-Extensions	ProtocolExtensionContainer { { M4-Collection-Parameters-ExtIEs} } OPTIONAL,
-	...
-}
-
-M4-Collection-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1246,11 +1065,7 @@
 M6Report ::= SEQUENCE {
 	m6-period	M6-Period,
 	m6-links-to-log	Links-to-log,
-	iE-Extensions	ProtocolExtensionContainer { { M6Report-ExtIEs} } OPTIONAL,
-	...
-}
-
-M6Report-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1259,11 +1074,7 @@
 M7Report ::= SEQUENCE {
 	m7-period	M7-Period,
 	m7-links-to-log	Links-to-log,
-	iE-Extensions	ProtocolExtensionContainer { { M7Report-ExtIEs} } OPTIONAL,
-	...
-}
-
-M7Report-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1349,15 +1160,10 @@
 	mdtActivation		MDT-Activation,
 	mdtAreaScope		MDTAreaScope,
 	mdtMode			MDTMode,
-	iE-Extensions		ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL,
+	iE-Extensions		IE-Extensions 	OPTIONAL,
 	...
 }
 
-MDT-Configuration-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	{ ID id-SignallingBasedMDTPLMNList	CRITICALITY ignore	EXTENSION MDT-PLMN-List		PRESENCE optional },
-...
-}
-
 MDTMode	::= CHOICE {
 	immediateMDT		ImmediateMDT,
 	loggedMDT		LoggedMDT,
@@ -1411,11 +1217,7 @@
 Offload-RAB-Parameters ::= SEQUENCE {
 	accessPointName			Offload-RAB-Parameters-APN,
 	chargingCharacteristics		Offload-RAB-Parameters-ChargingCharacteristics,
-	iE-Extensions			ProtocolExtensionContainer { { Offload-RAB-Parameters-ExtIEs} } 	OPTIONAL,
-	...
-}
-
-Offload-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1476,15 +1278,10 @@
 PeriodicLocationInfo ::= SEQUENCE {
 	reportingAmount		INTEGER (1..8639999, ...),
 	reportingInterval	INTEGER (1..8639999, ...),
-	iE-Extensions		ProtocolExtensionContainer { { PeriodicLocationInfo-ExtIEs } }	OPTIONAL,
+	iE-Extensions		IE-Extensions 	OPTIONAL,
 	...
 }
 
-PeriodicLocationInfo-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 PermanentNAS-UE-ID ::= CHOICE {
 	iMSI			IMSI,
 	...
@@ -1498,15 +1295,10 @@
 
 LABased	::= SEQUENCE {
 	laiList			LAI-List,
-	iE-Extensions		ProtocolExtensionContainer { {LABased-ExtIEs} } OPTIONAL,
+	iE-Extensions		IE-Extensions 	OPTIONAL,
 	...
 }
 
-LABased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 LAI-List	::= SEQUENCE (SIZE (1..maxNrOfLAIs)) OF
 	LAI
 
@@ -1515,11 +1307,7 @@
 LoggedMDT	::=	SEQUENCE {
 	loggingInterval		LoggingInterval,
 	loggingDuration		LoggingDuration,
-	iE-Extensions		ProtocolExtensionContainer { {LoggedMDT-ExtIEs} } OPTIONAL,
-	...
-}
-
-LoggedMDT-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1552,14 +1340,10 @@
 	SEQUENCE {
 		pLMNidentity	PLMNidentity,
 		lA-LIST		LA-LIST,
-		iE-Extensions	ProtocolExtensionContainer { { PLMNs-in-shared-network-ExtIEs} } OPTIONAL,
+		iE-Extensions	IE-Extensions 	OPTIONAL,
 		...
 	}
 
-PLMNs-in-shared-network-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 Port-Number ::= OCTET STRING (SIZE (2))
 
 PositioningDataDiscriminator ::= BIT STRING (SIZE(4))
@@ -1578,12 +1362,7 @@
 	positioningDataDiscriminator	PositioningDataDiscriminator,
 	positioningDataSet		PositioningDataSet			OPTIONAL,
 -- This IE shall be present if the PositioningDataDiscriminator IE is set to the value "0000" --
-	iE-Extensions			ProtocolExtensionContainer { {PositionData-ExtIEs} } OPTIONAL,
-	...
-}
-
-PositionData-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	{ ID id-GANSS-PositioningDataSet	CRITICALITY ignore	EXTENSION GANSS-PositioningDataSet				PRESENCE optional },
+	iE-Extensions			IE-Extensions 	OPTIONAL,
 	...
 }
 
@@ -1628,15 +1407,10 @@
 
 RABased	::= SEQUENCE {
 	raiList		RAI-List,
-	iE-Extensions	ProtocolExtensionContainer { {RABased-ExtIEs} } OPTIONAL,
+	iE-Extensions	IE-Extensions 	OPTIONAL,
 	...
 }
 
-RABased-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 RAI-List	::= SEQUENCE (SIZE (1..maxNrOfRAIs)) OF
 	RAI
 
@@ -1644,14 +1418,10 @@
 	SEQUENCE {
 		dl-UnsuccessfullyTransmittedDataVolume	UnsuccessfullyTransmittedDataVolume,
 		dataVolumeReference			DataVolumeReference	OPTIONAL,
-		iE-Extensions				ProtocolExtensionContainer { {RABDataVolumeReport-ExtIEs} }		OPTIONAL,
+		iE-Extensions				IE-Extensions 		OPTIONAL,
 		...
 	}
 
-RABDataVolumeReport-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 RAB-ID	::= BIT STRING (SIZE (8))
 
 RAB-Parameter-ExtendedGuaranteedBitrateList	::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
@@ -1682,21 +1452,7 @@
 	sourceStatisticsDescriptor	SourceStatisticsDescriptor OPTIONAL
 	-- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
 	relocationRequirement	RelocationRequirement OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {RAB-Parameters-ExtIEs} } OPTIONAL,
-	...
-}
-
-RAB-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 5 to enable indication that Interactive User Plane data is of a signalling nature --
-	{ ID id-SignallingIndication	CRITICALITY ignore		EXTENSION SignallingIndication		PRESENCE optional }|
--- Extension for Release 7 to indicate an Extended Guaranteed Bitrate --
-{ ID id-RAB-Parameter-ExtendedGuaranteedBitrateList	CRITICALITY reject	EXTENSION RAB-Parameter-ExtendedGuaranteedBitrateList		PRESENCE optional }|
--- Extension for Release 7 to indicate an Extended Maximum Bitrate --
-{ ID id-RAB-Parameter-ExtendedMaxBitrateList	CRITICALITY reject		EXTENSION RAB-Parameter-ExtendedMaxBitrateList		PRESENCE optional }|
--- Extension for Release 8 to indicate an Supported Maximum Bitrate --
-{ ID id-RAB-Parameter-SupportedMaxBitrateList	CRITICALITY reject		EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional }|
--- Extension for Release 8 to indicate an Supported Guaranteed Bitrate --
-{ ID id-RAB-Parameter-SupportedGuaranteedBitrateList	CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional },
+	iE-Extensions			IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1705,11 +1461,7 @@
 	cn-domain		CN-DomainIndicator,
 	rabDataVolumeReport	RABDataVolumeReport	OPTIONAL,
 	upInformation		UPInformation	OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { { RABParametersList-ExtIEs } }		OPTIONAL,
-	...
-}
-
-RABParametersList-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1721,13 +1473,7 @@
 RAB-TrCH-MappingItem ::= SEQUENCE {
 	rAB-ID		RAB-ID,
 	trCH-ID-List	TrCH-ID-List,
-	iE-Extensions	ProtocolExtensionContainer { { RAB-TrCH-MappingItem-ExtIEs} } OPTIONAL,
-	...
-}
-
-RAB-TrCH-MappingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 99 to enable transfer of RAB Subflow mapping onto Iur transport channel Ids for a given indicated domain --
-	{	ID id-CN-DomainIndicator	CRITICALITY ignore		EXTENSION CN-DomainIndicator	PRESENCE optional	},
+	iE-Extensions	IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1736,11 +1482,7 @@
 RAI ::= SEQUENCE {
 	lAI		LAI,
 	rAC		RAC,
-	iE-Extensions	ProtocolExtensionContainer { {RAI-ExtIEs} } OPTIONAL,
-	...
-}
-
-RAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1752,18 +1494,12 @@
 
 NotEmptyRAListofIdleModeUEs ::= SEQUENCE {
 	rAofIdleModeUEs	RAofIdleModeUEs,
-	iE-Extensions	ProtocolExtensionContainer { {NotEmptyRAListofIdleModeUEs-ExtIEs} } OPTIONAL
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 
 RAofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
 	RAC
 
-NotEmptyRAListofIdleModeUEs-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-{ ID id-LAofIdleModeUEs		CRITICALITY reject	EXTENSION LAListofIdleModeUEs PRESENCE conditional },
-	-- This IE shall be present if the RA of Idle Mode UEs IE is included. --
-	...
-}
-
 LAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
 	LAI
 
@@ -1869,11 +1605,7 @@
 	tMGI			TMGI,
 	iPMulticastAddress	IPMulticastAddress,
 	aPN			APN,
-	iE-Extensions		ProtocolExtensionContainer { {MBMSIPMulticastAddressandAPNlist-ExtIEs} } 	OPTIONAL,
-	...
-}
-
-MBMSIPMulticastAddressandAPNlist-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1883,21 +1615,7 @@
 Requested-RAB-Parameter-Values ::= SEQUENCE {
 	requestedMaxBitrates		Requested-RAB-Parameter-MaxBitrateList			OPTIONAL,
 	requestedGuaranteedBitrates	Requested-RAB-Parameter-GuaranteedBitrateList			OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { { Requested-RAB-Parameter-Values-ExtIEs} } 	OPTIONAL,
-	...
-}
-
-Requested-RAB-Parameter-Values-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 6 to enable RNC to request the execution of an alternative RAB configuration --
-	{ ID id-AlternativeRABConfigurationRequest		CRITICALITY ignore	EXTENSION AlternativeRABConfigurationRequest	PRESENCE optional }|
--- Extension for Release 7 to request an Extended Maximum Bitrate --
-	{ ID id-Requested-RAB-Parameter-ExtendedMaxBitrateList		CRITICALITY reject	EXTENSION Requested-RAB-Parameter-ExtendedMaxBitrateList	PRESENCE optional }|
--- Extension for Release 7 to request an Extended Guaranteed Bitrate --
-	{ ID id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	CRITICALITY reject	EXTENSION Requested-RAB-Parameter-ExtendedGuaranteedBitrateList	PRESENCE optional }|
--- Extension for Release 8 to request an Supported Maximum Bitrate --
-	{ ID id-Requested-RAB-Parameter-SupportedMaxBitrateList		CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional }|
--- Extension for Release 8 to request an Supported Guaranteed Bitrate --
-	{ ID id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList CRITICALITY reject	EXTENSION SupportedRAB-ParameterBitrateList		PRESENCE optional },
+	iE-Extensions			IE-Extensions OPTIONAL,
 	...
 }
 
@@ -1920,14 +1638,10 @@
 ResidualBitErrorRatio ::= SEQUENCE {
 	mantissa	INTEGER (1..9),
 	exponent	INTEGER (1..8),
-	iE-Extensions	ProtocolExtensionContainer { {ResidualBitErrorRatio-ExtIEs} } OPTIONAL
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 -- ResidualBitErrorRatio = mantissa * 10^-exponent
 
-ResidualBitErrorRatio-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 ResponseTime	::= ENUMERATED {
 	lowdelay,
 	delaytolerant,
@@ -1939,11 +1653,7 @@
 RIM-Transfer ::= SEQUENCE {
 	rIMInformation		RIMInformation,
 	rIMRoutingAddress	RIMRoutingAddress	OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { {RIM-Transfer-ExtIEs} } OPTIONAL
-}
-
-RIM-Transfer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions		IE-Extensions OPTIONAL
 }
 
 RIMRoutingAddress ::= CHOICE {
@@ -1964,16 +1674,7 @@
 	traceActivationIndicato		ENUMERATED {activated,deactivated},
 	equipmentsToBeTraced		EquipmentsToBeTraced						OPTIONAL,
 	-- This IE shall be present if the Trace Activation Indicator IE is set to "Activated".
-	iE-Extensions			ProtocolExtensionContainer { { RNCTraceInformation-ExtIEs} }	OPTIONAL
-}
-
-RNCTraceInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 11 to enable anonymization MDT for area based MDT --
-	{ID id-TraceRecordingSessionReference		CRITICALITY ignore	EXTENSION TraceRecordingSessionReference	PRESENCE optional}|
-	{ID id-IMSI					CRITICALITY ignore	EXTENSION IMSI					PRESENCE optional}|
-	{ID id-Trace-Collection-Entity-IP-Addess	CRITICALITY ignore	EXTENSION TransportLayerAddress			PRESENCE optional}|
-	{ID id-Serving-Cell-Identifier			CRITICALITY ignore	EXTENSION UTRAN-CellID				PRESENCE optional},
-	...
+	iE-Extensions			IE-Extensions OPTIONAL
 }
 
 RNSAPRelocationParameters ::=	SEQUENCE {
@@ -1981,11 +1682,7 @@
 	locationReporting	LocationReportingTransferInformation	OPTIONAL,
 	traceInformation	TraceInformation 			OPTIONAL,
 	sourceSAI		SAI					OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { { RNSAPRelocationParameters-ExtIEs } }	OPTIONAL,
-	...
-}
-
-RNSAPRelocationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions		IE-Extensions OPTIONAL,
 	...
 }
 
@@ -2001,15 +1698,11 @@
 RSRVCC-Information ::= SEQUENCE {
 	nonce		BIT STRING (SIZE (128)),
 	iMSInformation	OCTET STRING(SIZE(1.. maxSizeOfIMSInfo)),
-	iE-Extensions	ProtocolExtensionContainer { { RSRVCC-Information-ExtIEs} } OPTIONAL,
+	iE-Extensions	IE-Extensions OPTIONAL,
 	...
 
 }
 
-RSRVCC-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 RSRVCC-Operation-Possible ::= ENUMERATED {
 	rsrvcc-possible,
 	...
@@ -2022,11 +1715,7 @@
 	pLMNidentity	PLMNidentity,
 	lAC		LAC,
 	sAC		SAC,
-	iE-Extensions	ProtocolExtensionContainer { {SAI-ExtIEs} } OPTIONAL
-}
-
-SAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 
 SAPI ::= ENUMERATED {
@@ -2038,16 +1727,12 @@
 SessionUpdateID ::= INTEGER (0.. 1048575)
 Shared-Network-Information ::= SEQUENCE {
 	pLMNs-in-shared-network		PLMNs-in-shared-network,
-	iE-Extensions			ProtocolExtensionContainer { {Shared-Network-Information-ExtIEs} } OPTIONAL,
+	iE-Extensions			IE-Extensions OPTIONAL,
 	...
 }
 
 Session-Re-establishment-Indicator	::= ENUMERATED {true, ...}
 
-Shared-Network-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 SignallingIndication ::= ENUMERATED {
 	signalling,
 	...
@@ -2056,25 +1741,18 @@
 SDU-ErrorRatio ::= SEQUENCE {
 	mantissa	INTEGER (1..9),
 	exponent	INTEGER (1..6),
-	iE-Extensions	ProtocolExtensionContainer { {SDU-ErrorRatio-ExtIEs} } OPTIONAL
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 -- SDU-ErrorRatio = mantissa * 10^-exponent
 
-SDU-ErrorRatio-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
 SDU-FormatInformationParameters ::= SEQUENCE (SIZE (1..maxRAB-SubflowCombination)) OF
 	SEQUENCE {
 		subflowSDU-Size			SubflowSDU-Size 	OPTIONAL,
 		rAB-SubflowCombinationBitRate	RAB-SubflowCombinationBitRate 	OPTIONAL,
-		iE-Extensions			ProtocolExtensionContainer { {SDU-FormatInformationParameters-ExtIEs} } OPTIONAL,
+		iE-Extensions			IE-Extensions 		OPTIONAL,
 		...
 	}
 
-SDU-FormatInformationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 SDU-Parameters ::= SEQUENCE (SIZE (1..maxRAB-Subflows)) OF
 	SEQUENCE {
 		sDU-ErrorRatio			SDU-ErrorRatio OPTIONAL
@@ -2082,24 +1760,16 @@
 		residualBitErrorRatio		ResidualBitErrorRatio,
 		deliveryOfErroneousSDU		DeliveryOfErroneousSDU,
 		sDU-FormatInformationParameters	SDU-FormatInformationParameters OPTIONAL,
-		iE-Extensions			ProtocolExtensionContainer { {SDU-Parameters-ExtIEs} } OPTIONAL,
+		iE-Extensions			IE-Extensions 		OPTIONAL,
 		...
 	}
 
-SDU-Parameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 SNA-Access-Information ::= SEQUENCE {
 		authorisedPLMNs	AuthorisedPLMNs,
-		iE-Extensions	ProtocolExtensionContainer { {SNA-Access-Information-ExtIEs} } OPTIONAL,
+		iE-Extensions	IE-Extensions 		OPTIONAL,
 		...
 	}
 
-SNA-Access-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 SNAC ::= INTEGER (0..65535)
 
 Service-Handover ::= ENUMERATED {
@@ -2136,13 +1806,7 @@
 SourceRNC-ID ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	rNC-ID		RNC-ID,
-	iE-Extensions	ProtocolExtensionContainer { {SourceRNC-ID-ExtIEs} } OPTIONAL
-}
-
-SourceRNC-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 7 to indicate extended RNC-ID --
-	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
-	...
+	iE-Extensions	IE-Extensions 		OPTIONAL
 }
 
 SourceRNC-ToTargetRNC-TransparentContainer ::= SEQUENCE {
@@ -2160,35 +1824,7 @@
 	targetCellId			TargetCellId				OPTIONAL
 	-- This IE shall be present if the Relocation type IE is set to "UE involved in relocation of SRNS" --,
 	rAB-TrCH-Mapping		RAB-TrCH-Mapping			OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { {SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs} } OPTIONAL,
-	...
-}
-
-SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 99 to enable transfer of SRB mapping onto Iur transport channel Ids --
-	{ID id-SRB-TrCH-Mapping			CRITICALITY reject	EXTENSION SRB-TrCH-Mapping			PRESENCE optional}|
--- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
-	{ID id-CellLoadInformationGroup		CRITICALITY ignore	EXTENSION CellLoadInformationGroup		PRESENCE optional}|
--- Extension for Release 6 to provide Trace Recording Session Information to the Target RNC --
-	{ID id-TraceRecordingSessionInformation	CRITICALITY ignore	EXTENSION TraceRecordingSessionInformation	PRESENCE optional}|
--- Extension for Release 6 to indicate to the Target RNC that the UE has activated Multicast Service --
-	{ID id-MBMSLinkingInformation		CRITICALITY ignore	EXTENSION MBMSLinkingInformation		PRESENCE optional}|
-	{ID id-d-RNTI-for-NoIuCSUP		CRITICALITY reject	EXTENSION D-RNTI				PRESENCE optional}|
-	{ID id-UE-History-Information		CRITICALITY ignore	EXTENSION UE-History-Information		PRESENCE optional}|
-	{ID id-SubscriberProfileIDforRFP	CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP		PRESENCE optional}|
--- Extension for Release 8 to transfer to the Target RNC parameters required for SRVCC operation --
-	{ID id-SRVCC-Information 		CRITICALITY reject	EXTENSION SRVCC-Information			PRESENCE optional}|
-	{ID id-PSRABtobeReplaced 		CRITICALITY reject	EXTENSION RAB-ID				PRESENCE optional}|
--- Extension for Release 9 to transfer to the Target RNC parameters required for CSFB operation --
-	{ID id-CSFB-Information 		CRITICALITY ignore	EXTENSION CSFB-Information 			PRESENCE optional}|
--- Extension for Release 10 to indicate to the Target RNC the need of continued IRAT measurement --
-	{ID id-IRAT-Measurement-Configuration	CRITICALITY ignore	EXTENSION IRAT-Measurement-Configuration	PRESENCE optional}|
--- Extension for Release 10 to indicate Management Based MDT Allowed --
-	{ID id-Management-Based-MDT-Allowed	CRITICALITY ignore	EXTENSION Management-Based-MDT-Allowed		PRESENCE optional}|
--- Extension for Release 11 to indicate Management Based MDT PLMN List --
-	{ID id-Management-Based-MDT-PLMN-List	CRITICALITY ignore	EXTENSION MDT-PLMN-List				PRESENCE optional}|
--- Extension for Release 11 to indicate the last E-UTRAN PLMN Identity --
-	{ID id-LastE-UTRANPLMNIdentity		CRITICALITY ignore	EXTENSION PLMNidentity				PRESENCE optional},
+	iE-Extensions			IE-Extensions 				OPTIONAL,
 	...
 }
 
@@ -2196,22 +1832,12 @@
 	rSRP				INTEGER (0..97)			OPTIONAL,
 	rSRQ				INTEGER (0..34)			OPTIONAL,
 	iRATmeasurementParameters	IRATmeasurementParameters,
-	iE-Extensions			ProtocolExtensionContainer { {IRAT-Measurement-Configuration-ExtIEs} } OPTIONAL}
-
-IRAT-Measurement-Configuration-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	{ID id-RSRQ-Type		CRITICALITY ignore	EXTENSION RSRQ-Type				PRESENCE optional}|
-	{ID id-RSRQ-Extension		CRITICALITY ignore	EXTENSION RSRQ-Extension			PRESENCE optional},
-	...
-}
+	iE-Extensions			IE-Extensions OPTIONAL}
 
 IRATmeasurementParameters::= SEQUENCE {
 	measurementDuration	INTEGER (1..100),
 	eUTRANFrequencies	EUTRANFrequencies		OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { { IRATmeasurementParameters-ExtIEs} } OPTIONAL}
-
-IRATmeasurementParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
+	iE-Extensions		IE-Extensions OPTIONAL}
 
 RSRQ-Type ::= SEQUENCE {
 	allSymbols		BOOLEAN,
@@ -2223,7 +1849,7 @@
 EUTRANFrequencies ::= SEQUENCE (SIZE (1..maxNrOfEUTRAFreqs)) OF SEQUENCE {
 	earfcn			INTEGER (0..65535),
 	measBand		MeasBand			OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { {EUTRANFrequencies-ExtIEs} } OPTIONAL}
+	iE-Extensions		IE-Extensions OPTIONAL}
 
 MeasBand ::= ENUMERATED {
 	v6,
@@ -2234,11 +1860,6 @@
 	v100
 }
 
-EUTRANFrequencies-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	{ ID id-EARFCN-Extended		CRITICALITY reject	EXTENSION EARFCN-Extended		PRESENCE optional},
-	...
-}
-
 SubscriberProfileIDforRFP ::= INTEGER (1..256)
 
 SourceStatisticsDescriptor ::= ENUMERATED {
@@ -2255,11 +1876,7 @@
 SourceUTRANCellID ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	uTRANcellID	TargetCellId,
-	iE-Extensions	ProtocolExtensionContainer { {SourceUTRANCellID-ExtIEs} } OPTIONAL
-}
-
-SourceUTRANCellID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 
 SRB-ID ::= INTEGER (1..32)
@@ -2270,15 +1887,11 @@
 SRB-TrCH-MappingItem ::= SEQUENCE {
 	sRB-ID		SRB-ID,
 	trCH-ID		TrCH-ID,
-	iE-Extensions	ProtocolExtensionContainer { { SRB-TrCH-MappingItem-ExtIEs} } OPTIONAL,
+	iE-Extensions	IE-Extensions OPTIONAL,
 	...
 }
 
 
-SRB-TrCH-MappingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
 SRVCC-HO-Indication ::= ENUMERATED {
 	ps-and-cs,
 	cs-only,
@@ -2287,11 +1900,7 @@
 
 SRVCC-Information ::= SEQUENCE {
 	nonce		BIT STRING (SIZE (128)),
-	iE-Extensions	ProtocolExtensionContainer { { SRVCC-Information-ExtIEs} } OPTIONAL,
-	...
-}
-
-SRVCC-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions OPTIONAL,
 	...
 }
 
@@ -2310,14 +1919,9 @@
 TAI ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	tAC		TAC,
-	iE-Extensions	ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL
+	iE-Extensions	IE-Extensions OPTIONAL
 }
 
-TAI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 Target-ToSource-TransparentContainer ::= OCTET STRING
 -- This IE is a transparent container, the IE shall be encoded not as an OCTET STRING but according to the type specifications of the target system.
 -- Note: In the current version of this specification, this IE may either carry the Target RNC to
@@ -2341,38 +1945,23 @@
 TargetENB-ID ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	eNB-ID		ENB-ID,
-	iE-Extensions	ProtocolExtensionContainer { {TargetENB-ID-ExtIEs} } OPTIONAL,
+	iE-Extensions	IE-Extensions	OPTIONAL,
 	selectedTAI	TAI,
 	...
 }
 
-TargetENB-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 TargetRNC-ID ::= SEQUENCE {
 	lAI		LAI,
 	rAC		RAC 		OPTIONAL,
 	rNC-ID		RNC-ID,
-	iE-Extensions	ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL
-}
-
-TargetRNC-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 7 to indicate extended RNC-ID --
-	{ ID id-ExtendedRNC-ID				CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
-	...
+	iE-Extensions	IE-Extensions	OPTIONAL
 }
 
 TargetRNC-ToSourceRNC-TransparentContainer ::= SEQUENCE {
 	rRC-Container	RRC-Container,
 	d-RNTI		D-RNTI 		OPTIONAL
 	-- May be included to allow the triggering of the Relocation Detect procedure from the Iur Interface --,
-	iE-Extensions	ProtocolExtensionContainer { {TargetRNC-ToSourceRNC-TransparentContainer-ExtIEs} } OPTIONAL,
-	...
-}
-
-TargetRNC-ToSourceRNC-TransparentContainer-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions	OPTIONAL,
 	...
 }
 
@@ -2395,11 +1984,7 @@
 TMGI ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	serviceID	OCTET STRING (SIZE (3)),
-	iE-Extensions	ProtocolExtensionContainer { {TMGI-ExtIEs} } OPTIONAL
-}
-
-TMGI-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions	OPTIONAL
 }
 
 TMSI ::= OCTET STRING (SIZE (4))
@@ -2415,34 +2000,22 @@
 	traceReference			TraceReference,
 	ue-identity			UE-ID,
 	tracePropagationParameters	TracePropagationParameters OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { { TraceInformation-ExtIEs } } OPTIONAL,
+	iE-Extensions			IE-Extensions		OPTIONAL,
 	...
 }
 
-TraceInformation-ExtIEs	RANAP-PROTOCOL-EXTENSION ::= {
-...
-}
-
 TracePropagationParameters ::= SEQUENCE {
 	traceRecordingSessionReference	TraceRecordingSessionReference,
 	traceDepth			TraceDepth,
 	listOfInterfacesToTrace		ListOfInterfacesToTrace		OPTIONAL,
-	iE-Extensions			ProtocolExtensionContainer { { TracePropagationParameters-ExtIEs} } OPTIONAL,
-	...
-}
-
-TracePropagationParameters-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions		OPTIONAL,
 	...
 }
 
 TraceRecordingSessionInformation	::= SEQUENCE {
 	traceReference			TraceReference,
 	traceRecordingSessionReference	TraceRecordingSessionReference,
-	iE-Extensions			ProtocolExtensionContainer { { TraceRecordingSessionInformation-ExtIEs} } OPTIONAL,
-	...
-}
-
-TraceRecordingSessionInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions		OPTIONAL,
 	...
 }
 
@@ -2474,15 +2047,7 @@
 	dCH-ID		DCH-ID		OPTIONAL,
 	dSCH-ID		DSCH-ID		OPTIONAL,
 	uSCH-ID		USCH-ID		OPTIONAL,
-	iE-Extensions	ProtocolExtensionContainer { { TrCH-ID-ExtIEs} } OPTIONAL,
-	...
-}
-
-TrCH-ID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
--- Extension for Release 5 to enable transfer of HS-DSCH-MAC-d-Flow-ID onto Iur transport channel ID --
-	{ID id-hS-DSCH-MAC-d-Flow-ID	CRITICALITY ignore	EXTENSION HS-DSCH-MAC-d-Flow-ID	PRESENCE optional}|
--- Extension for Release 6 to enable transfer of E-DCH-MAC-d-Flow-ID onto Iur transport channel ID --
-	{ID id-E-DCH-MAC-d-Flow-ID	CRITICALITY ignore	EXTENSION E-DCH-MAC-d-Flow-ID 	PRESENCE optional},
+	iE-Extensions	IE-Extensions	OPTIONAL,
 	...
 }
 
@@ -2494,15 +2059,10 @@
 TunnelInformation ::= SEQUENCE {
 	transportLayerAddress	TransportLayerAddress,
 	uDP-Port-Number		Port-Number				OPTIONAL,
-	iE-Extensions		ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL,
+	iE-Extensions		IE-Extensions				OPTIONAL,
 	...
 }
 
-Tunnel-Information-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 TypeOfError ::= ENUMERATED {
 	not-understood,
 	missing,
@@ -2538,11 +2098,7 @@
 UESBI-Iu ::= SEQUENCE {
 	uESBI-IuA	UESBI-IuA	OPTIONAL,
 	uESBI-IuB	UESBI-IuB	OPTIONAL,
-	iE-Extensions	ProtocolExtensionContainer { {UESBI-Iu-ExtIEs} } OPTIONAL,
-	...
-}
-
-UESBI-Iu-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions	IE-Extensions	OPTIONAL,
 	...
 }
 
@@ -2562,13 +2118,7 @@
 	pdu14FrameSeqNoDL	PDUType14FrameSequenceNumber,
 	dataPDUType		DataPDUType,
 	upinitialisationFrame	UPInitialisationFrame,
-	iE-Extensions		ProtocolExtensionContainer { { UPInformation-ExtIEs } }		OPTIONAL,
-	...
-}
-
-UPInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	{ID id-TimingDifferenceULDL	CRITICALITY ignore	EXTENSION TimingDifferenceULDL		PRESENCE optional},
-
+	iE-Extensions		IE-Extensions	OPTIONAL,
 	...
 }
 
@@ -2587,11 +2137,7 @@
 UTRAN-CellID ::= SEQUENCE {
 	pLMNidentity	PLMNidentity,
 	cellID		TargetCellId,
-	iE-Extensions	ProtocolExtensionContainer { { UTRAN-CellID-ExtIEs} } OPTIONAL
-}
-
-UTRAN-CellID-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
+	iE-Extensions	IE-Extensions	OPTIONAL
 }
 
 
@@ -2607,34 +2153,21 @@
 
 HorizontalVelocity	::= SEQUENCE {
 	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
-	iE-Extensions			ProtocolExtensionContainer { { HorizontalVelocity-ExtIEs} } OPTIONAL,
-	...
-}
-
-HorizontalVelocity-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions	OPTIONAL,
 	...
 }
 
 HorizontalWithVerticalVelocity ::= SEQUENCE {
 	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
 	veritcalVelocity		VerticalVelocity,
-	iE-Extensions			ProtocolExtensionContainer { { HorizontalWithVerticalVelocity-ExtIEs} } OPTIONAL,
+	iE-Extensions			IE-Extensions	OPTIONAL,
 	...
 }
 
-HorizontalWithVerticalVelocity-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-	...
-}
-
-
 HorizontalVelocityWithUncertainty ::= SEQUENCE {
 	horizontalSpeedAndBearing	HorizontalSpeedAndBearing,
 	uncertaintySpeed		INTEGER (0..255),
-	iE-Extensions			ProtocolExtensionContainer { { HorizontalVelocityWithUncertainty-ExtIEs} } OPTIONAL,
-	...
-}
-
-HorizontalVelocityWithUncertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions	OPTIONAL,
 	...
 }
 
@@ -2643,11 +2176,7 @@
 	veritcalVelocity		VerticalVelocity,
 	horizontalUncertaintySpeed	INTEGER (0..255),
 	verticalUncertaintySpeed	INTEGER (0..255),
-	iE-Extensions			ProtocolExtensionContainer { { HorizontalWithVerticalVelocityAndUncertainty-ExtIEs} } OPTIONAL,
-	...
-}
-
-HorizontalWithVerticalVelocityAndUncertainty-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+	iE-Extensions			IE-Extensions	OPTIONAL,
 	...
 }
 
diff --git a/asn1/ranap/RANAP-PDU.asn b/asn1/ranap/RANAP-PDU.asn
new file mode 100644
index 0000000..5728c9b
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU.asn
@@ -0,0 +1,58 @@
+RANAP-PDU {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+umts-Access (20) modules (3) ranap(0) version1 (1) ranap-PDU (255) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+    Criticality,
+    ProcedureCode,
+    ProtocolIE-ID
+
+FROM RANAP-CommonDataTypes
+
+    maxProtocolIEs
+
+FROM RANAP-Constants;
+
+RANAP-PDU ::= CHOICE {
+    initiatingMessage       InitiatingMessage,
+    successfulOutcome       SuccessfulOutcome,
+    unsuccessfulOutcome     UnsuccessfulOutcome,
+    outcome     	    Outcome,
+    ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+    procedureCode   ProcedureCode,
+    criticality     Criticality,
+    value           ANY
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+    procedureCode   ProcedureCode,
+    criticality     Criticality,
+    value           ANY
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+    procedureCode   ProcedureCode,
+    criticality     Criticality,
+    value           ANY
+}
+
+Outcome ::= SEQUENCE {
+    procedureCode   ProcedureCode,
+    criticality     Criticality,
+    value           ANY
+}
+
+IE ::= SEQUENCE {
+    id ProtocolIE-ID,
+    criticality Criticality,
+    value ANY
+}
+
+END
diff --git a/asn1/ranap/asn1c/Makefile b/asn1/ranap/asn1c/Makefile
new file mode 100644
index 0000000..4e6c45f
--- /dev/null
+++ b/asn1/ranap/asn1c/Makefile
@@ -0,0 +1,6 @@
+MOD=RANAP
+
+ASNS=../$(MOD)-CommonDataTypes.asn ../$(MOD)-Constants.asn ../$(MOD)-IEs.asn ../$(MOD)-PDU.asn
+
+all: $(ASNS)
+	asn1c -gen-PER -fnative-types -fskeletons-copy $^
