diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 3de7427..c337cb4 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -67,13 +67,22 @@
 		NS_CAUSE_IP_TEST_FAILEDA			('00010100'B)
 	} with { variant "FIELDLENGTH(8)" };
 
-	template NS_SDU_ControlBits t_SduCtrlB := {
+	template (value) NS_SDU_ControlBits t_SduCtrlB := {
 		rBit := '0'B,
 		cBit := '0'B,
 		spare := '000000'B
 	}
 
-	function t_NS_IE_CAUSE(template NsCause cause) return template CauseNS {
+	template (value) CauseNS ts_NS_IE_CAUSE(NsCause cause) := {
+		iEI := '00'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 1
+		},
+		cause := int2oct(enum2int(valueof(cause)), 1)
+	}
+
+	function tr_NS_IE_CAUSE(template NsCause cause) return template CauseNS {
 		var template CauseNS ret;
 		ret.iEI := '00'O;
 		ret.ext := '1'B;
@@ -94,7 +103,15 @@
 		}
 	}
 
-	template NS_VCI t_NS_IE_NSVCI(template Nsvci nsvci) := {
+	template (value) NS_VCI ts_NS_IE_NSVCI(Nsvci nsvci) := {
+		iEI := '01'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 2
+		},
+		nS_VCI := int2oct(nsvci, 2)
+	}
+	template NS_VCI tr_NS_IE_NSVCI(template Nsvci nsvci) := {
 		iEI := '01'O,
 		ext := '1'B,
 		lengthIndicator := {
@@ -103,7 +120,15 @@
 		nS_VCI := f_oct_or_wc(nsvci, 2)
 	}
 
-	template NSEI_NS t_NS_IE_NSEI(template Nsei nsei) := {
+	template (value) NSEI_NS ts_NS_IE_NSEI(Nsei nsei) := {
+		iEI:= '04'O,
+		ext := '1'B,
+		lengthIndicator := {
+			length1 := 2
+		},
+		nSEI := int2oct(nsei, 2)
+	}
+	template NSEI_NS tr_NS_IE_NSEI(template Nsei nsei) := {
 		iEI:= '04'O,
 		ext := '1'B,
 		lengthIndicator := {
@@ -112,35 +137,64 @@
 		nSEI := f_oct_or_wc(nsei, 2)
 	}
 
-	template PDU_NS t_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := {
+
+	template (value) PDU_NS ts_NS_RESET(NsCause cause, Nsvci nsvci, Nsei nsei) := {
 		pDU_NS_Reset := {
 			nsPduType := '02'O,
-			causeNS := t_NS_IE_CAUSE(cause),
-			nS_VCI := t_NS_IE_NSVCI(nsvci),
-			nSEI_NS := t_NS_IE_NSEI(nsei)
+			causeNS := ts_NS_IE_CAUSE(cause),
+			nS_VCI := ts_NS_IE_NSVCI(nsvci),
+			nSEI_NS := ts_NS_IE_NSEI(nsei)
+		}
+	}
+	template PDU_NS tr_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := {
+		pDU_NS_Reset := {
+			nsPduType := '02'O,
+			causeNS := tr_NS_IE_CAUSE(cause),
+			nS_VCI := tr_NS_IE_NSVCI(nsvci),
+			nSEI_NS := tr_NS_IE_NSEI(nsei)
 		}
 	}
 
-	template PDU_NS t_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := {
+	template (value) PDU_NS ts_NS_RESET_ACK(Nsvci nsvci, Nsei nsei) := {
 		pDU_NS_Reset_Ack := {
 			nsPduType := '03'O,
-			nS_VCI := t_NS_IE_NSVCI(nsvci),
-			nSEI_NS := t_NS_IE_NSEI(nsei)
+			nS_VCI := ts_NS_IE_NSVCI(nsvci),
+			nSEI_NS := ts_NS_IE_NSEI(nsei)
+		}
+	}
+	template PDU_NS tr_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := {
+		pDU_NS_Reset_Ack := {
+			nsPduType := '03'O,
+			nS_VCI := tr_NS_IE_NSVCI(nsvci),
+			nSEI_NS := tr_NS_IE_NSEI(nsei)
 		}
 	}
 
-	template PDU_NS t_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := {
+	template (value) PDU_NS ts_NS_BLOCK(NsCause cause, Nsvci nsvci) := {
 		pDU_NS_Block := {
 			nsPduType := '04'O,
-			causeNS := t_NS_IE_CAUSE(cause),
-			nS_VCI := t_NS_IE_NSVCI(nsvci)
+			causeNS := ts_NS_IE_CAUSE(cause),
+			nS_VCI := ts_NS_IE_NSVCI(nsvci)
+		}
+	}
+	template PDU_NS tr_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := {
+		pDU_NS_Block := {
+			nsPduType := '04'O,
+			causeNS := tr_NS_IE_CAUSE(cause),
+			nS_VCI := tr_NS_IE_NSVCI(nsvci)
 		}
 	}
 
-	template PDU_NS t_NS_BLOCK_ACK(template Nsvci nsvci) := {
+	template (value) PDU_NS ts_NS_BLOCK_ACK(Nsvci nsvci) := {
 		pDU_NS_Block_Ack := {
 			nsPduType := '05'O,
-			nS_VCI := t_NS_IE_NSVCI(nsvci)
+			nS_VCI := ts_NS_IE_NSVCI(nsvci)
+		}
+	}
+	template PDU_NS tr_NS_BLOCK_ACK(template Nsvci nsvci) := {
+		pDU_NS_Block_Ack := {
+			nsPduType := '05'O,
+			nS_VCI := tr_NS_IE_NSVCI(nsvci)
 		}
 	}
 
@@ -168,10 +222,10 @@
 		}
 	}
 
-	template PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := {
+	template (value) PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := {
 		pDU_NS_Status := {
 			nsPduType := '08'O,
-			causeNS := t_NS_IE_CAUSE(cause),
+			causeNS := ts_NS_IE_CAUSE(cause),
 			nS_VCI := omit,
 			nS_PDU := {
 				iEI := '02'O,
@@ -187,7 +241,15 @@
 		}
 	}
 
-	template PDU_NS t_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template
+	template (value) PDU_NS ts_NS_UNITDATA(template (value) NS_SDU_ControlBits bits, BssgpBvci bvci, octetstring sdu) := {
+		pDU_NS_Unitdata := {
+			nsPduType := '00'O,
+			nS_SDU_ControlBits := bits,
+			bVCI := int2oct(bvci, 2),
+			nS_SDU := sdu
+		}
+	}
+	template PDU_NS tr_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template
 octetstring sdu) := {
 		pDU_NS_Unitdata := {
 			nsPduType := '00'O,
