diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index 7d39e7c..746ee33 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -496,6 +496,51 @@
 	}
 }
 
+/* Send 'tx' on PTP-BVCI from PCU; expect 'rx' on SGSN */
+friend function f_pcu2sgsn(template (value) PDU_BSSGP tx, template (present) PDU_BSSGP exp_rx,
+			   integer pcu_idx := 0, integer sgsn_idx := 0) runs on BSSGP_ConnHdlr {
+	var PDU_BSSGP rx;
+	timer T := 1.0;
+
+	PCU[pcu_idx].send(tx);
+	T.start;
+	alt {
+	[] SGSN[sgsn_idx].receive(exp_rx) {
+		setverdict(pass);
+		}
+	[] SGSN[sgsn_idx].receive(PDU_BSSGP:?) -> value rx {
+		setverdict(fail, "Unexpected BSSGP on SGSN side: ", rx);
+		mtc.stop;
+		}
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for BSSGP on SGSN side: ", rx);
+		mtc.stop;
+		}
+	}
+}
+
+/* Send 'tx' on PTP-BVCI from SGSN; expect 'rx' on PCU */
+friend function f_sgsn2pcu(template (value) PDU_BSSGP tx, template (present) PDU_BSSGP exp_rx,
+			   integer sgsn_idx:= 0, integer pcu_idx := 0) runs on BSSGP_ConnHdlr {
+	var PDU_BSSGP rx;
+	timer T := 1.0;
+
+	SGSN[sgsn_idx].send(tx);
+	T.start;
+	alt {
+	[] PCU[pcu_idx].receive(exp_rx) {
+		setverdict(pass);
+		}
+	[] PCU[pcu_idx].receive(PDU_BSSGP:?) -> value rx {
+		setverdict(fail, "Unexpected BSSGP on PCU side: ", rx);
+		mtc.stop;
+		}
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for BSSGP on PCU side: ", rx);
+		mtc.stop;
+		}
+	}
+}
 
 /* TODO:
    * Detach without Attach
@@ -576,16 +621,7 @@
 		/* we cannot use pdu_tx as there are some subtle differences in the length field :/ */
 		var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[0], payload);
 
-		PCU[0].send(pdu_tx);
-		alt {
-		[] SGSN[0].receive(pdu_rx);
-		/* FIXME: Those should be handled before the ConnHdlr is started */
-		[] SGSN[0].receive(BssgpStatusIndication:{*,?,BVC_S_UNBLOCKED}) { repeat; }
-		[] SGSN[0].receive {
-			setverdict(fail, "SGSN Received unexpected");
-			mtc.stop;
-			}
-		}
+		f_pcu2sgsn(pdu_tx, pdu_rx);
 	}
 	setverdict(pass);
 }
@@ -614,16 +650,7 @@
 		var template (present) PDU_BSSGP pdu_rx :=
 			tr_BSSGP_DL_UD(g_pars.tlli, payload, tr_BSSGP_IMSI(g_pars.imsi));
 
-		SGSN[0].send(pdu_tx);
-		alt {
-		[] PCU[0].receive(pdu_rx);
-		/* FIXME: Those should be handled before the ConnHdlr is started */
-		[] PCU[0].receive(BssgpStatusIndication:{*,?,BVC_S_UNBLOCKED}) { repeat; }
-		[] PCU[0].receive {
-			setverdict(fail, "PCU Received unexpected");
-			mtc.stop;
-			}
-		}
+		f_sgsn2pcu(pdu_tx, pdu_rx);
 	}
 	setverdict(pass);
 }
@@ -648,14 +675,7 @@
 		/* we cannot use pdu_tx as there are some subtle differences in the length field :/ */
 		var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_RA_CAP(g_pars.tlli, { tr_RaCapRec_BSSGP })
 
-		SGSN[0].send(pdu_tx);
-		alt {
-		[] PCU[0].receive(pdu_rx);
-		[] PCU[0].receive {
-			setverdict(fail, "SGSN Received unexpected");
-			mtc.stop;
-			}
-		}
+		f_sgsn2pcu(pdu_tx, pdu_rx);
 	}
 	setverdict(pass);
 }
