diff --git a/library/NS_Emulation.ttcn b/library/NS_Emulation.ttcn
index ca4d1d6..6915993 100644
--- a/library/NS_Emulation.ttcn
+++ b/library/NS_Emulation.ttcn
@@ -127,7 +127,7 @@
 	}
 
 	private function f_sendReset() runs on NS_CT {
-		NSCP.send(t_NS_Send(g_conn_id, t_NS_RESET(NS_CAUSE_OM_INTERVENTION, config.nsvci, config.nsei)));
+		NSCP.send(t_NS_Send(g_conn_id, ts_NS_RESET(NS_CAUSE_OM_INTERVENTION, config.nsvci, config.nsei)));
 		g_state := NSE_S_WAIT_RESET;
 	}
 
@@ -142,7 +142,7 @@
 	}
 
 	private function f_sendBlock(NsCause cause) runs on NS_CT {
-		NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK(cause, config.nsvci)));
+		NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK(cause, config.nsvci)));
 		Tns_block.start;
 	}
 
@@ -175,19 +175,19 @@
 		}
 
 		/* Respond to BLOCK for wrong NSVCI */
-		[] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, ?))) -> value rf {
+		[] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, ?))) -> value rf {
 			log("Rx NS-BLOCK for unknown NSVCI");
 			/* FIXME */
 		}
 
 		/* Respond to RESET with correct NSEI/NSVCI */
-		[] NSCP.receive(t_NS_RecvFrom(t_NS_RESET(?, config.nsvci, config.nsei))) -> value rf {
+		[] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET(?, config.nsvci, config.nsei))) -> value rf {
 			f_change_state(NSE_S_ALIVE_BLOCKED);
-			NSCP.send(t_NS_Send(g_conn_id, t_NS_RESET_ACK(config.nsvci, config.nsei)));
+			NSCP.send(t_NS_Send(g_conn_id, ts_NS_RESET_ACK(config.nsvci, config.nsei)));
 		}
 
 		/* Respond to RESET with wrong NSEI/NSVCI */
-		[] NSCP.receive(t_NS_RecvFrom(t_NS_RESET(?, ?, ?))) -> value rf {
+		[] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET(?, ?, ?))) -> value rf {
 			log("Rx NS-RESET for unknown NSEI/NSVCI");
 			/* FIXME */
 		}
@@ -215,7 +215,7 @@
 			}
 		} else if (g_state == NSE_S_WAIT_RESET) {
 			alt {
-				[] NSCP.receive(t_NS_RecvFrom(t_NS_RESET_ACK(config.nsvci, config.nsei))) -> value rf {
+				[] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET_ACK(config.nsvci, config.nsei))) -> value rf {
 					f_change_state(NSE_S_ALIVE_BLOCKED);
 					f_sendAlive();
 					f_sendUnblock();
@@ -224,8 +224,8 @@
 		} else if (g_state == NSE_S_ALIVE_BLOCKED) {
 			alt {
 				/* bogus block, just respond with ACK */
-				[] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, config.nsvci))) -> value rf {
-					NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK_ACK(config.nsvci)));
+				[] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, config.nsvci))) -> value rf {
+					NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK_ACK(config.nsvci)));
 				}
 				/* Respond to UNBLOCK with UNBLOCK-ACK + change state */
 				[] NSCP.receive(t_NS_RecvFrom(t_NS_UNBLOCK)) -> value rf {
@@ -249,16 +249,16 @@
 					NSCP.send(t_NS_Send(g_conn_id, t_NS_UNBLOCK_ACK));
 				}
 				/* Respond to BLOCK with BLOCK-ACK + change state */
-				[] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, config.nsvci))) -> value rf {
-					NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK_ACK(config.nsvci)));
+				[] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, config.nsvci))) -> value rf {
+					NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK_ACK(config.nsvci)));
 					Tns_block.stop;
 					f_change_state(NSE_S_ALIVE_BLOCKED);
 				}
-				[] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK_ACK(config.nsvci))) -> value rf {
+				[] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK_ACK(config.nsvci))) -> value rf {
 					Tns_block.stop;
 				}
 				/* NS-UNITDATA PDU from network to NS-UNITDATA.ind to user */
-				[] NSCP.receive(t_NS_RecvFrom(t_NS_UNITDATA(?, ?, ?))) -> value rf {
+				[] NSCP.receive(t_NS_RecvFrom(tr_NS_UNITDATA(?, ?, ?))) -> value rf {
 					NS_SP.send(t_NsUdInd(config.nsei,
 							     oct2int(rf.msg.pDU_NS_Unitdata.bVCI),
 							     rf.msg.pDU_NS_Unitdata.nS_SDU));
@@ -266,12 +266,12 @@
 				/* NS-UNITDATA.req from user to NS-UNITDATA PDU on network */
 				[] NS_SP.receive(t_NsUdReq(config.nsei, ?, ?, omit)) -> value ud_req {
 					/* using raw octetstring PDU */
-					NSCP.send(t_NS_Send(g_conn_id, t_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, ud_req.sdu)));
+					NSCP.send(t_NS_Send(g_conn_id, ts_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, ud_req.sdu)));
 				}
 				[] NS_SP.receive(t_NsUdReq(config.nsei, ?, omit, ?)) -> value ud_req {
 					/* using decoded BSSGP PDU that we need to encode first */
 					var octetstring enc := enc_PDU_BSSGP(ud_req.bssgp);
-					NSCP.send(t_NS_Send(g_conn_id, t_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, enc)));
+					NSCP.send(t_NS_Send(g_conn_id, ts_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, enc)));
 				}
 			}
 		}
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,
