diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index f18216e..5d312f7 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -270,13 +270,15 @@
 };
 
 private function f_init_gb_pcu(inout GbInstance gb, charstring id, integer offset) runs on test_CT {
-	gb.vc_NS := NS_CT.create(id & "-NS(PCU)" & int2str(offset));
-	gb.vc_BSSGP := BSSGP_CT.create(id & "-BSSGP(PCU)" & int2str(offset));
+	var charstring ns_id := id & "-NS(PCU[" & int2str(offset) & "])";
+	var charstring bssgp_id := id & "-BSSGP(PCU[" & int2str(offset) & "])";
+	gb.vc_NS := NS_CT.create(ns_id);
+	gb.vc_BSSGP := BSSGP_CT.create(bssgp_id);
 	/* connect lower end of BSSGP emulation with NS upper port */
 	connect(gb.vc_BSSGP:BSCP, gb.vc_NS:NS_SP);
 
-	gb.vc_NS.start(NSStart(mp_nsconfig_pcu[offset]));
-	gb.vc_BSSGP.start(BssgpStart(gb.cfg, id));
+	gb.vc_NS.start(NSStart(mp_nsconfig_pcu[offset], ns_id));
+	gb.vc_BSSGP.start(BssgpStart(gb.cfg, bssgp_id));
 
 	for (var integer i := 0; i < lengthof(gb.cfg.bvc); i := i + 1) {
 		connect(self:PROC, gb.vc_BSSGP:PROC);
@@ -286,13 +288,15 @@
 }
 
 private function f_init_gb_sgsn(inout GbInstance gb, charstring id, integer offset) runs on test_CT {
-	gb.vc_NS := NS_CT.create(id & "-NS(SGSN)" & int2str(offset));
-	gb.vc_BSSGP := BSSGP_CT.create(id & "-BSSGP(SGSN)" & int2str(offset));
+	var charstring ns_id := id & "-NS(SGSN[" & int2str(offset) & "])";
+	var charstring bssgp_id := id & "-BSSGP(SGSN[" & int2str(offset) & "])";
+	gb.vc_NS := NS_CT.create(ns_id);
+	gb.vc_BSSGP := BSSGP_CT.create(bssgp_id);
 	/* connect lower end of BSSGP emulation with NS upper port */
 	connect(gb.vc_BSSGP:BSCP, gb.vc_NS:NS_SP);
 
-	gb.vc_NS.start(NSStart(mp_nsconfig_sgsn[offset]));
-	gb.vc_BSSGP.start(BssgpStart(gb.cfg, id));
+	gb.vc_NS.start(NSStart(mp_nsconfig_sgsn[offset], ns_id));
+	gb.vc_BSSGP.start(BssgpStart(gb.cfg, bssgp_id));
 
 	for (var integer i := 0; i < lengthof(gb.cfg.bvc); i := i + 1) {
 		connect(self:PROC, gb.vc_BSSGP:PROC);
@@ -329,11 +333,11 @@
 
 	f_init_vty();
 	for (i := 0; i < lengthof(mp_nsconfig_sgsn); i := i+1) {
-		f_init_gb_sgsn(g_sgsn[0], "GbProxy_Test-SGSN" & int2str(i), 0);
+		f_init_gb_sgsn(g_sgsn[0], "GbProxy_Test", 0);
 	}
 	f_sleep(4.0);
 	for (i := 0; i < lengthof(mp_nsconfig_pcu); i := i+1) {
-		f_init_gb_pcu(g_pcu[i], "GbProxy_Test-PCU" & int2str(i), i);
+		f_init_gb_pcu(g_pcu[i], "GbProxy_Test", i);
 	}
 }
 
