diff --git a/sysinfo/GSM_SystemInformation.ttcn b/sysinfo/GSM_SystemInformation.ttcn
index 4a7bfd5..8001dd9 100644
--- a/sysinfo/GSM_SystemInformation.ttcn
+++ b/sysinfo/GSM_SystemInformation.ttcn
@@ -9,57 +9,14 @@
 	import from GSM_Types all;
 	import from Osmocom_Types all;
 
-	type record L2PseudoLength {
-		uint6_t		l2_plen,
-		BIT2		zero_one
-	} with { variant "" };
-
-	template L2PseudoLength t_L2Pseudolength(template uint6_t len) := {
-		l2_plen := len,
-		zero_one := '01'B
-	};
-
-	type octetstring RestOctets  with { variant "PADDING(yes), PADDING_PATTERN('00101011'B)" };
-
-	type record MaioHsn {
-	} with { variant "" };
-
 	type union ArfcnOrMaio {
 		uint12_t	arfcn,
 		MaioHsn		maio_hsn
 	} with { variant "" };
 
-	type record SystemInformationHeader {
-		L2PseudoLength	l2_plen,
-		uint4_t		skip_indicator,
-		uint4_t		rr_protocol_discriminator,
-		RrMessageType	message_type
-	} with { variant "" };
-
-	template SystemInformationHeader t_SiHeader(RrMessageType msg_type, template uint6_t len) := {
-		l2_plen := t_L2Pseudolength(len),
-		skip_indicator := 0,
-		rr_protocol_discriminator := 6,
-		message_type := msg_type
-	};
-
-	external function enc_SystemInformationHeader(in SystemInformationHeader si) return octetstring
-		with { extension "prototype(convert) encode(RAW)" };
-	external function dec_SystemInformationHeader(in octetstring stream) return SystemInformationHeader
-		with { extension "prototype(convert) decode(RAW)" };
-
-	type hexstring GsmBcdString with { variant "HEXORDER(low)" };
-	type GsmBcdString BcdMccMnc with { variant "FIELDLENGTH(6)" };
-
 	/* 24.008 10.5.1.1 */
 	type uint16_t CellIdentity;
 
-	/* 24.008 10.5.1.3 */
-	type record LocationAreaIdentification {
-		BcdMccMnc	mcc_mnc,
-		uint16_t	lac
-	} with { variant "" };
-
 	/* 44.018 10.5.2.1b */
 	type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" };
 
@@ -88,18 +45,6 @@
 		uint6_t		rxlev_access_min
 	} with { variant "" };
 
-	/* 44.018 10.5.2.5 */
-	type record ChannelDescription {
-		OCT1		iei,
-		BIT5		chan_type_tdma_offset,
-		uint3_t		tn,
-		uint3_t		tsc,
-		boolean		h,
-		uint12_t	arfcn optional,
-		MaioHsn		maio_hsn optional
-	} with { variant (arfcn) "PRESENCE(h = true)"
-		 variant (maio_hsn) "PRESENCE(h = false)" };
-
 	/* 44.018 10.5.2.11 */
 	type record ControlChannelDescription {
 		boolean		mscrr,
@@ -116,7 +61,7 @@
 	template ControlChannelDescription t_ControlChannelDescription := { ?, ?, ?, ?, ?, ?, '00'B, ?, ? };
 
 	/* 44.018 10.5.2.21 */
-	type record MobileAllocation {
+	type record MobileAllocationT {
 		OCT1		iei,
 		uint8_t		len,
 		bitstring	ma
@@ -145,7 +90,6 @@
 
 	/* 44.018 9.1.31 */
 	type record SystemInformationType1 {
-		//SystemInformationHeader	header,
 		CellChannelDescription	cell_chan_desc,
 		RachControlParameters	rach_control,
 		Si1RestOctets		rest_octets
@@ -153,7 +97,6 @@
 
 	/* 44.018 9.1.32 */
 	type record SystemInformationType2 {
-		//SystemInformationHeader	header,
 		NeighbourCellDescription bcch_freq_list,
 		BIT8			ncc_permitted,
 		RachControlParameters	rach_control
@@ -161,7 +104,6 @@
 
 	/* 44.018 9.1.33 */
 	type record SystemInformationType2bis {
-		//SystemInformationHeader		header,
 		NeighbourCellDescription	extd_bcch_freq_list,
 		RachControlParameters		rach_control,
 		OCT1				rest_octets
@@ -169,14 +111,12 @@
 
 	/* 44.018 9.1.34 */
 	type record SystemInformationType2ter {
-		//SystemInformationHeader		header,
 		NeighbourCellDescription2	extd_bcch_freq_list,
 		OCT4				rest_octets
 	} with { variant "" };
 
 	/* 44.018 9.1.35 */
 	type record SystemInformationType3 {
-		//SystemInformationHeader		header,
 		CellIdentity			cell_id,
 		LocationAreaIdentification	lai,
 		ControlChannelDescription	ctrl_chan_desc,
@@ -199,36 +139,31 @@
 
 	/* 44.018 9.1.36 */
 	type record SystemInformationType4 {
-		//SystemInformationHeader		header,
 		LocationAreaIdentification	lai,
 		CellSelectionParameters		cell_sel_par,
 		RachControlParameters		rach_control,
 		ChannelDescription		cbch_chan_desc optional,
-		MobileAllocation		cbch_mobile_alloc optional,
+		MobileAllocationT		cbch_mobile_alloc optional,
 		RestOctets			rest_octets
 	} with { variant "TAG(cbch_chan_desc, iei = '64'O; cbch_mobile_alloc, iei = '72'O)" };
 
 	/* 44.018 9.1.37 */
 	type record SystemInformationType5 {
-		SystemInformationHeader		header,
 		NeighbourCellDescription	bcch_freq_list
 	} with { variant "" };
 
 	/* 44.018 9.1.38 */
 	type record SystemInformationType5bis {
-		//SystemInformationHeader		header,
 		NeighbourCellDescription	extd_bcch_freq_list
 	} with { variant "" };
 
 	/* 44.018 9.1.39 */
 	type record SystemInformationType5ter {
-		//SystemInformationHeader		header,
 		NeighbourCellDescription2	extd_bcch_freq_list
 	} with { variant "" };
 
 	/* 44.018 9.1.40 */
 	type record SystemInformationType6 {
-		//SystemInformationHeader		header,
 		CellIdentity			cell_id,
 		LocationAreaIdentification	lai,
 		CellOptionsSacch		cell_options,
@@ -251,7 +186,7 @@
 	} with { variant "" };
 
 	type record SystemInformation {
-		SystemInformationHeader		header,
+		RrHeader			header,
 		SystemInformationUnion		payload
 	} with { variant (payload) "CROSSTAG(si1, header.message_type = SYSTEM_INFORMATION_TYPE_1;
 			      si2, header.message_type = SYSTEM_INFORMATION_TYPE_2;
