diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index 64a39dd..491a496 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -669,6 +669,45 @@
 	f_ms_tx_data_ind(ms, data, fn, nr := nr);
 }
 
+function f_ms_tx_ul_data_blocks_gprs(inout GprsMS ms, template (value) LlcBlocks blocks,
+			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
+			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
+runs on MS_BTS_IFACE_CT {
+	var template (value) RlcmacUlBlock ul_data;
+
+	ul_data := t_RLCMAC_UL_DATA(cs := ms.ul_tbf.tx_cs_mcs,
+				    tfi := ms.ul_tbf.tfi,
+				    cv := cv,
+				    bsn := ms.ul_tbf.bsn,
+				    blocks := blocks);
+	if (with_tlli) {
+		ul_data.data.mac_hdr.tlli_ind := true;
+		ul_data.data.tlli := ms.tlli;
+	}
+	f_ultbf_inc_bsn(ms.ul_tbf);
+	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
+}
+
+function f_ms_tx_ul_data_blocks_egprs(inout GprsMS ms, template (value) EgprsLlcBlocks blocks,
+			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
+			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
+runs on MS_BTS_IFACE_CT {
+	var template (value) RlcmacUlBlock ul_data;
+
+	ul_data := t_RLCMAC_UL_EGPRS_DATA(mcs := ms.ul_tbf.tx_cs_mcs,
+					  tfi := ms.ul_tbf.tfi,
+					  cv := cv,
+					  bsn1 := ms.ul_tbf.bsn,
+					  bsn2_offset := 0,
+					  blocks := blocks);
+	if (with_tlli) {
+		ul_data.data_egprs.tlli_ind := true;
+		ul_data.data_egprs.tlli := ms.tlli;
+	}
+	f_ultbf_inc_bsn(ms.ul_tbf);
+	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
+}
+
 function f_ms_tx_ul_data_block(inout GprsMS ms, octetstring payload,
 			       uint4_t cv := 15, boolean with_tlli := false, uint32_t fn := 0,
 			       template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
@@ -676,29 +715,10 @@
 	var template (value) RlcmacUlBlock ul_data;
 
 	if (f_rlcmac_cs_mcs_is_mcs(ms.ul_tbf.tx_cs_mcs)) {
-		ul_data := t_RLCMAC_UL_EGPRS_DATA(mcs := ms.ul_tbf.tx_cs_mcs,
-						  tfi := ms.ul_tbf.tfi,
-						  cv := cv,
-						  bsn1 := ms.ul_tbf.bsn,
-						  bsn2_offset := 0,
-						  blocks := {t_RLCMAC_LLCBLOCK_EGPRS(payload)})
-		if (with_tlli) {
-			ul_data.data_egprs.tlli_ind := true;
-			ul_data.data_egprs.tlli := ms.tlli;
-		}
+		f_ms_tx_ul_data_blocks_egprs(ms,  {t_RLCMAC_LLCBLOCK_EGPRS(payload)}, cv, with_tlli, fn, nr)
 	} else {
-		ul_data := t_RLCMAC_UL_DATA(cs := ms.ul_tbf.tx_cs_mcs,
-					    tfi := ms.ul_tbf.tfi,
-					    cv := cv,
-					    bsn := ms.ul_tbf.bsn,
-					    blocks := {t_RLCMAC_LLCBLOCK(payload)});
-		if (with_tlli) {
-			ul_data.data.mac_hdr.tlli_ind := true;
-			ul_data.data.tlli := ms.tlli;
-		}
+		f_ms_tx_ul_data_blocks_gprs(ms, {t_RLCMAC_LLCBLOCK(payload)}, cv, with_tlli, fn, nr);
 	}
-	f_ultbf_inc_bsn(ms.ul_tbf);
-	f_ms_tx_ul_block(ms, ul_data, fn, nr := nr);
 }
 
 /* Send random payload for last "num_blocks" blocks in Ul TBF (ending with CV=0). */
