diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index 122c663..6a4e4dc 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -5,7 +5,7 @@
 check_PROGRAMS = test-ranap test-helpers test-hnbap hnb-test dummy-cn
 
 HNBAP_FILES = $(top_srcdir)/src/hnbap_common.c $(top_srcdir)/src/hnbap_decoder.c $(top_srcdir)/src/hnbap_encoder.c
-RUA_FILES = $(top_srcdir)/src/rua_common.c $(top_srcdir)/src/rua_decoder.c $(top_srcdir)/src/rua_encoder.c
+RUA_FILES = $(top_srcdir)/src/rua_common.c $(top_srcdir)/src/rua_decoder.c $(top_srcdir)/src/rua_encoder.c $(top_srcdir)/src/rua_msg_factory.c
 
 test_helpers_SOURCES = test-helpers.c
 test_helpers_LDADD = $(COMMON_LIBS) $(top_builddir)/src/libosmo-ranap.la
@@ -13,7 +13,7 @@
 test_hnbap_SOURCES = $(top_srcdir)/src/hnbap_common.c $(top_srcdir)/src/hnbap_decoder.c test-hnbap.c test_common.c
 test_hnbap_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/libosmo-ranap.la
 
-hnb_test_SOURCES = $(HNBAP_FILES) $(RUA_FILES) hnb-test.c rua_helper.c test_common.c
+hnb_test_SOURCES = $(HNBAP_FILES) $(RUA_FILES) hnb-test.c test_common.c
 hnb_test_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/rua/libosmo-asn1-rua.a $(top_builddir)/src/libosmo-ranap.la
 
 test_ranap_SOURCES = $(RANAP_FILES) test-ranap.c test_common.c
diff --git a/src/tests/hnb-test.c b/src/tests/hnb-test.c
index f26e222..b4a30f8 100644
--- a/src/tests/hnb-test.c
+++ b/src/tests/hnb-test.c
@@ -49,7 +49,7 @@
 #include "hnb-test.h"
 #include "hnbap_common.h"
 #include "hnbap_ies_defs.h"
-#include "rua_helper.h"
+#include "rua_msg_factory.h"
 #include "asn1helpers.h"
 #include "iu_helpers.h"
 #include "test_common.h"
diff --git a/src/tests/rua_helper.c b/src/tests/rua_helper.c
deleted file mode 100644
index d1dcbf6..0000000
--- a/src/tests/rua_helper.c
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "rua_common.h"
-#include "rua_ies_defs.h"
-#include <osmocom/netif/stream.h>
-
-#include "hnbgw.h"
-#include "asn1helpers.h"
-
-struct msgb *rua_new_udt(struct msgb *inmsg)
-{
-	RUA_ConnectionlessTransfer_t out;
-	RUA_ConnectionlessTransferIEs_t ies;
-	struct msgb *msg;
-	int rc;
-
-	memset(&ies, 0, sizeof(ies));
-	OCTET_STRING_fromBuf(&ies.ranaP_Message.buf, inmsg->data, msgb_length(inmsg));
-	msgb_free(inmsg);
-
-	memset(&out, 0, sizeof(out));
-	rc = rua_encode_connectionlesstransferies(&out, &ies);
-	if (rc < 0)
-		return NULL;
-
-	msg = rua_generate_initiating_message(RUA_ProcedureCode_id_ConnectionlessTransfer,
-					      RUA_Criticality_reject,
-					      &asn_DEF_RUA_ConnectionlessTransfer,
-					      &out);
-
-	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_ConnectionlessTransfer, &out);
-
-	DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
-
-	msgb_sctp_ppid(msg) = IUH_PPI_RUA;
-
-	return msg;
-}
-
-struct msgb *rua_new_conn(int is_ps, uint32_t context_id, struct msgb *inmsg)
-{
-	RUA_Connect_t out;
-	RUA_ConnectIEs_t ies;
-	struct msgb *msg;
-	uint32_t ctxidbuf;
-	int rc;
-
-	memset(&ies, 0, sizeof(ies));
-	if (is_ps)
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
-	else
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
-	asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
-	ies.establishment_Cause = RUA_Establishment_Cause_normal_call;
-	OCTET_STRING_fromBuf(&ies.ranaP_Message.buf, inmsg->data, msgb_length(inmsg));
-	msgb_free(inmsg);
-
-	memset(&out, 0, sizeof(out));
-	rc = rua_encode_connecties(&out, &ies);
-	if (rc < 0)
-		return NULL;
-
-	msg = rua_generate_initiating_message(RUA_ProcedureCode_id_Connect,
-					      RUA_Criticality_reject,
-					      &asn_DEF_RUA_Connect,
-					      &out);
-
-	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Connect, &out);
-
-	DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
-
-	msgb_sctp_ppid(msg) = IUH_PPI_RUA;
-
-	return msg;
-}
-
-struct msgb *rua_new_dt(int is_ps, uint32_t context_id, struct msgb *inmsg)
-{
-	RUA_DirectTransfer_t out;
-	RUA_DirectTransferIEs_t ies;
-	struct msgb *msg;
-	uint32_t ctxidbuf;
-	int rc;
-
-	memset(&ies, 0, sizeof(ies));
-	if (is_ps)
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
-	else
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
-	asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
-	OCTET_STRING_fromBuf(&ies.ranaP_Message.buf, inmsg->data, msgb_length(inmsg));
-	msgb_free(inmsg);
-
-	memset(&out, 0, sizeof(out));
-	rc = rua_encode_directtransferies(&out, &ies);
-	if (rc < 0)
-		return NULL;
-
-	msg = rua_generate_initiating_message(RUA_ProcedureCode_id_DirectTransfer,
-					      RUA_Criticality_reject,
-					      &asn_DEF_RUA_DirectTransfer,
-					      &out);
-
-	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_DirectTransfer, &out);
-
-	DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
-
-	msgb_sctp_ppid(msg) = IUH_PPI_RUA;
-
-	return msg;
-}
-
-struct msgb *rua_new_disc(int is_ps, uint32_t context_id, struct msgb *inmsg)
-{
-	RUA_Disconnect_t out;
-	RUA_DisconnectIEs_t ies;
-	struct msgb *msg;
-	uint32_t ctxidbuf;
-	int rc;
-
-	memset(&ies, 0, sizeof(ies));
-	if (is_ps)
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
-	else
-		ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
-	asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
-	/* FIXME: make cause configurable */
-	ies.cause.present = RUA_Cause_PR_radioNetwork;
-	ies.cause.choice.radioNetwork = RUA_CauseRadioNetwork_normal;
-	if (inmsg && inmsg->data&& msgb_length(inmsg)) {
-		ies.presenceMask |= DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT;
-		OCTET_STRING_fromBuf(&ies.ranaP_Message.buf, inmsg->data, msgb_length(inmsg));
-	}
-	msgb_free(inmsg);
-
-	memset(&out, 0, sizeof(out));
-	rc = rua_encode_disconnecties(&out, &ies);
-	if (rc < 0)
-		return NULL;
-
-	msg = rua_generate_initiating_message(RUA_ProcedureCode_id_Disconnect,
-					      RUA_Criticality_reject,
-					      &asn_DEF_RUA_Disconnect,
-					      &out);
-
-	ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Disconnect, &out);
-
-	DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
-
-	msgb_sctp_ppid(msg) = IUH_PPI_RUA;
-
-	return msg;
-}
diff --git a/src/tests/rua_helper.h b/src/tests/rua_helper.h
deleted file mode 100644
index ca2f4e8..0000000
--- a/src/tests/rua_helper.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-#include <osmocom/core/msgb.h>
-
-struct msgb *rua_new_udt(struct msgb *inmsg);
-struct msgb *rua_new_conn(int is_ps, uint32_t context_id, struct msgb *inmsg);
-struct msgb *rua_new_dt(int is_ps, uint32_t context_id, struct msgb *inmsg);
-struct msgb *rua_new_disc(int is_ps, uint32_t context_id, struct msgb *inmsg);
