diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
new file mode 100644
index 0000000..b994d1f
--- /dev/null
+++ b/library/GSUP_Types.ttcn
@@ -0,0 +1,197 @@
+module GSUP_Types {
+
+import from General_Types all;
+import from Osmocom_Types all;
+
+type enumerated GSUP_IEI {
+	OSMO_GSUP_IMSI_IE		('01'O),
+	OSMO_GSUP_CAUSE_IE		('02'O),
+	OSMO_GSUP_AUTH_TUPLE_IE		('03'O),
+	OSMO_GSUP_PDP_INFO_COMPL_IE	('04'O),
+	OSMO_GSUP_PDP_INFO_IE		('05'O),
+	OSMO_GSUP_CANCEL_TYPE_IE	('06'O),
+	OSMO_GSUP_FREEZE_PTMSI_IE	('07'O),
+	OSMO_GSUP_MSISDN_IE		('08'O),
+	OSMO_GSUP_HLR_NUMBER_IE		('09'O),
+	OSMO_GSUP_PDP_CONTEXT_ID_IE	('10'O),
+	OSMO_GSUP_PDP_TYPE_IE		('11'O),
+	OSMO_GSUP_ACCESS_POINT_NAME_IE	('12'O),
+	OSMO_GSUP_PDP_QOS_IE		('13'O),
+	OSMO_GSUP_CHARG_CHAR_IE		('14'O),
+
+	OSMO_GSUP_RAND_IE		('20'O),
+	OSMO_GSUP_SRES_IE		('21'O),
+	OSMO_GSUP_KC_IE			('22'O),
+	OSMO_GSUP_IK_IE			('23'O),
+	OSMO_GSUP_CK_IE			('24'O),
+	OSMO_GSUP_AUTN_IE		('25'O),
+	OSMO_GSUP_AUTS_IE		('26'O),
+	OSMO_GSUP_RES_IE		('27'O),
+	OSMO_GSUP_CN_DOMAIN_IE		('28'O)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_MessageType {
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST	('00000100'B),
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR	('00000101'B),
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT	('00000110'B),
+
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST	('00001000'B),
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR	('00001001'B),
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT	('00001010'B),
+
+	OSMO_GSUP_MSGT_AUTH_FAIL_REPORT		('00001011'B),
+
+	OSMO_GSUP_MSGT_PURGE_MS_REQUEST		('00001100'B),
+	OSMO_GSUP_MSGT_PURGE_MS_ERROR		('00001101'B),
+	OSMO_GSUP_MSGT_PURGE_MS_RESULT		('00001110'B),
+
+	OSMO_GSUP_MSGT_INSERT_DATA_REQUEST	('00010000'B),
+	OSMO_GSUP_MSGT_INSERT_DATA_ERROR	('00010001'B),
+	OSMO_GSUP_MSGT_INSERT_DATA_RESULT	('00010010'B),
+
+	OSMO_GSUP_MSGT_DELETE_DATA_REQUEST	('00010100'B),
+	OSMO_GSUP_MSGT_DELETE_DATA_ERROR	('00010101'B),
+	OSMO_GSUP_MSGT_DELETE_DATA_RESULT	('00010110'B),
+
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST	('00011100'B),
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR	('00011101'B),
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT	('00011110'B)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_CancelType {
+	OSMO_GSUP_CANCEL_TYPE_UPDATE		(1),
+	OSMO_GSUP_CANCEL_TYPE_WITHDRAW		(2)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_CnDomain {
+	OSMO_GSUP_CN_DOMAIN_PS			(1),
+	OSMO_GSUP_CN_DOMAIN_CS			(2)
+} with { variant "FIELDLENGTH(8)" };
+
+type record GSUP_IE {
+	GSUP_IEI	tag,
+	uint8_t		len,
+	GSUP_IeValue	val
+} with { variant (len) "LENGTHTO(val)"
+	 variant (val) "CROSSTAG(imsi, tag = OSMO_GSUP_IMSI_IE;
+				 cause, tag = OSMO_GSUP_CAUSE_IE;
+				 cancel_type, tag = OSMO_GSUP_CANCEL_TYPE_IE;
+				 auts, tag = OSMO_GSUP_AUTS_IE;
+				 rand, tag = OSMO_GSUP_RAND_IE;
+				 msisdn, tag = OSMO_GSUP_MSISDN_IE;
+				 hlr_number, tag = OSMO_GSUP_HLR_NUMBER_IE;
+				 cn_domain, tag = OSMO_GSUP_CN_DOMAIN_IE;
+				 charg_char, tag = OSMO_GSUP_CHARG_CHAR_IE)"
+};
+
+type record of GSUP_IE GSUP_IEs;
+
+type union GSUP_IeValue {
+	hexstring	imsi,
+	integer		cause,
+	GSUP_CancelType	cancel_type,
+	//boolean		pdp_info_compl,
+	//boolean		freeze_ptmsi,
+	GSUP_IEs	pdp_info,
+	GSUP_IEs	auth_tuple,
+	octetstring	auts,
+	octetstring	rand,
+	hexstring	msisdn,
+	octetstring	hlr_number,
+	GSUP_CnDomain	cn_domain,
+	octetstring	charg_char
+};
+
+type record GSUP_PDU {
+	GSUP_MessageType	msg_type,
+	GSUP_IEs		ies
+};
+
+external function enc_GSUP_PDU(in GSUP_PDU msg) return octetstring
+	with { extension "prototype(convert) encode(RAW)" };
+
+external function dec_GSUP_PDU(in octetstring msg) return GSUP_PDU
+	with { extension "prototype(convert) decode(RAW)" };
+
+
+template GSUP_PDU tr_GSUP(template GSUP_MessageType msgt := ?, template GSUP_IEs ies := *) := {
+	msg_type := msgt,
+	ies := ies
+}
+
+template GSUP_PDU ts_GSUP(GSUP_MessageType msgt, GSUP_IEs ies := {}) := {
+	msg_type := msgt,
+	ies := ies
+}
+
+template GSUP_PDU ts_GSUP_SAI_REQ(hexstring imsi) :=
+	ts_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, { valueof(ts_GSUP_IE_IMSI(imsi)) });
+
+template GSUP_PDU tr_GSUP_SAI_ERR(template hexstring imsi, template integer cause) :=
+	tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, {
+			tr_GSUP_IE_IMSI(imsi), tr_GSUP_IE_Cause(cause) });
+
+template GSUP_PDU tr_GSUP_SAI_RES(template hexstring imsi) :=
+	tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, {
+			tr_GSUP_IE_IMSI(imsi), *, tr_GSUP_IE(OSMO_GSUP_AUTH_TUPLE_IE), * });
+
+
+
+template GSUP_IE tr_GSUP_IE(template GSUP_IEI iei, template GSUP_IeValue val := ?) := {
+	tag := iei,
+	len := ?,
+	val := val
+}
+
+template (value) GSUP_IE ts_GSUP_IE_IMSI(hexstring imsi) := {
+	tag := OSMO_GSUP_IMSI_IE,
+	len := 0, /* overwritten */
+	val := {
+		imsi := imsi
+	}
+}
+
+template GSUP_IE tr_GSUP_IE_IMSI(template hexstring imsi) := {
+	tag := OSMO_GSUP_IMSI_IE,
+	len := ?,
+	val := {
+		imsi := imsi
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_Cause(integer cause) := {
+	tag := OSMO_GSUP_CAUSE_IE,
+	len := 0, /* overwritten */
+	val := {
+		cause := cause
+	}
+}
+
+template GSUP_IE tr_GSUP_IE_Cause(template integer cause) := {
+	tag := OSMO_GSUP_CAUSE_IE,
+	len := ?,
+	val := {
+		cause := cause
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_AUTS(octetstring auts) := {
+	tag := OSMO_GSUP_AUTS_IE,
+	len := 0, /* overwritten */
+	val := {
+		auts := auts
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_RAND(octetstring rand) := {
+	tag := OSMO_GSUP_RAND_IE,
+	len := 0, /* overwritten */
+	val := {
+		rand := rand
+	}
+}
+
+
+
+
+} with { encode "RAW"; variant "FIELDORDER(msb)" }
