diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 0824d6e..64ba981 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -42,11 +42,13 @@
 import from RANAP_PDU_Descriptions all;
 import from RANAP_IEs all;
 
-import from GTP_Emulation all;
-import from GTP_Templates all;
-import from GTP_CodecPort all;
+import from GTPv1C_CodecPort all;
+import from GTPv1U_CodecPort all;
 import from GTPC_Types all;
 import from GTPU_Types all;
+import from GTPv1C_Templates all;
+import from GTPv1U_Templates all;
+import from GTP_Emulation all;
 
 import from LLC_Types all;
 import from LLC_Templates all;
@@ -1550,12 +1552,13 @@
 runs on BSSGP_ConnHdlr {
 	var Gtp1cUnitdata g_ud;
 	var integer seq_nr := 23;
-	var GtpPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));
 
 	BSSGP[ran_index].clear;
 	if (error_ind) {
+		var Gtp1uPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_c));
 		GTP.send(ts_GTPU_ErrorIndication(peer, 0 /* seq */, apars.ggsn_tei_u, apars.ggsn_ip_u));
 	} else {
+		var Gtp1cPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));
 		GTP.send(ts_GTPC_DeletePDP(peer, seq_nr, apars.sgsn_tei_c, apars.nsapi, '1'B));
 	}
 
@@ -1650,20 +1653,20 @@
 	sgsn_ip_u := omit
 }
 
-template (value) GtpPeer ts_GtpPeerU(octetstring ip) := {
+template (value) Gtp1uPeer ts_GtpPeerU(octetstring ip) := {
 	connId := 1,
 	remName := f_inet_ntoa(ip),
 	remPort := GTP1U_PORT
 }
 
-template (value) GtpPeer ts_GtpPeerC(octetstring ip) := {
+template (value) Gtp1cPeer ts_GtpPeerC(octetstring ip) := {
 	connId := 1,
 	remName := f_inet_ntoa(ip),
 	remPort := GTP1C_PORT
 }
 
 private function f_gtpu_send(inout PdpActPars apars, octetstring payload) runs on BSSGP_ConnHdlr {
-	var GtpPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
+	var Gtp1uPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
 	GTP.send(ts_GTP1U_GPDU(peer, 0 /*seq*/, apars.sgsn_tei_u, payload));
 }
 
@@ -1734,7 +1737,7 @@
 private function f_gtpu_xceive_mo(inout PdpActPars apars, octetstring payload, integer ran_index := 0, uint9_t n_u := 0)
 runs on BSSGP_ConnHdlr {
 	/* Send PDU via SNDCP/LLC/BSSGP/NS via simulated MS/PCU to the SGSN */
-	var GtpPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
+	var Gtp1uPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
 	var PDU_SN sndcp := valueof(ts_SN_UD(apars.nsapi, payload));
 	BSSGP[ran_index].send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, n_u));
 	/* Expect PDU via GTP from SGSN on simulated GGSN */
@@ -2049,7 +2052,6 @@
 	var Gtp1cUnitdata g_ud;
 	var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip));
 	var integer seq_nr := 23;
-	var GtpPeer peer;
 	/* first perform regular attach */
 	f_TC_attach(id);
 
@@ -2089,7 +2091,7 @@
 private function f_TC_attach_pdp_act_deact_mt_t3395_expire(charstring id) runs on BSSGP_ConnHdlr {
 	var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip));
 	var integer seq_nr := 23;
-	var GtpPeer peer;
+	var Gtp1cPeer peer;
 	var integer i;
 
 	/* first perform regular attach */
@@ -2193,7 +2195,7 @@
 
 	/* Now perform an MT DeleteCtxReq and emulate GGSN didn't receive response and sends a duplicated DeleteCtxReq */
 	BSSGP[0].clear;
-	var GtpPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));
+	var Gtp1cPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));
 	g_delete_req := ts_GTPC_DeletePDP(peer, seq_nr, apars.sgsn_tei_c, apars.nsapi, '1'B);
 	GTP.send(g_delete_req);
 	alt {
@@ -3469,7 +3471,7 @@
 	/* connect RIM related port */
 	connect(vc_GTP:CLIENT_DEFAULT, self:GTPC);
 
-	var GtpPeer peer := {
+	var Gtp1cPeer peer := {
 		connId := 1,
 		remName := mp_sgsn_gtp_ip,
 		remPort := GTP1C_PORT
@@ -3651,7 +3653,7 @@
 	var octetstring payload := f_rnd_octstring(200);
 	var PDU_SN sndcp := valueof(ts_SN_UD(apars.nsapi, payload));
 	BSSGP[1].send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, 1));
-	var GtpPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
+	var Gtp1uPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));
 	timer T := 2.0;
 	T.start;
 	alt {
diff --git a/sgsn/gen_links.sh b/sgsn/gen_links.sh
index 3aa2d38..8df1a87 100755
--- a/sgsn/gen_links.sh
+++ b/sgsn/gen_links.sh
@@ -93,7 +93,9 @@
 # IPA_Emulation + dependencies
 FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="PCO_Types.ttcn GSUP_Types.ttcn GSUP_Templates.ttcn GSUP_Emulation.ttcn "
-FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Emulation.ttcn GTP_Templates.ttcn IPCP_Types.ttcn RAW_NS.ttcnpp "
+FILES+="GTPv1C_CodecPort.ttcn GTPv1C_CodecPort_CtrlFunct.ttcn GTPv1C_CodecPort_CtrlFunctDef.cc GTPv1C_Templates.ttcn Osmocom_Gb_Types.ttcn "
+FILES+="GTPv1U_CodecPort.ttcn GTPv1U_CodecPort_CtrlFunct.ttcn GTPv1U_CodecPort_CtrlFunctDef.cc GTPv1U_Templates.ttcn "
+FILES+="GTP_Emulation.ttcn IPCP_Types.ttcn RAW_NS.ttcnpp "
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh
index 4ac7d40..5c9c5ea 100755
--- a/sgsn/regen_makefile.sh
+++ b/sgsn/regen_makefile.sh
@@ -9,7 +9,8 @@
 	BSSGP_EncDec.cc
 	GTPC_EncDec.cc
 	GTPU_EncDec.cc
-	GTP_CodecPort_CtrlFunctDef.cc
+	GTPv1C_CodecPort_CtrlFunctDef.cc
+	GTPv1U_CodecPort_CtrlFunctDef.cc
 	IPA_CodecPort_CtrlFunctDef.cc
 	IPL4asp_PT.cc
 	IPL4asp_discovery.cc
