diff --git a/src/hnbap_common.c b/src/hnbap_common.c
index 43d7c37..6c5812e 100644
--- a/src/hnbap_common.c
+++ b/src/hnbap_common.c
@@ -186,36 +186,41 @@
 	return msg;
 }
 
-#if 0
-ssize_t s1ap_generate_unsuccessful_outcome(uint8_t ** buffer,
-					    uint32_t * length,
-					    e_ProcedureCode procedureCode,
-					    Criticality_t criticality,
-					    asn_TYPE_descriptor_t * td,
-					    void *sptr)
+struct msgb *hnbap_generate_unsuccessful_outcome(
+					   e_ProcedureCode procedureCode,
+					   Criticality_t criticality,
+					   asn_TYPE_descriptor_t * td,
+					   void *sptr)
 {
 
 	HNBAP_PDU_t pdu;
-	ssize_t encoded;
+	struct msgb *msg = hnbap_msgb_alloc();
+	asn_enc_rval_t rval;
+	int rc;
 
 	memset(&pdu, 0, sizeof(HNBAP_PDU_t));
-
 	pdu.present = HNBAP_PDU_PR_unsuccessfulOutcome;
-	pdu.choice.successfulOutcome.procedureCode = procedureCode;
-	pdu.choice.successfulOutcome.criticality = criticality;
-	ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
-
-	if ((encoded =
-	     aper_encode_to_new_buffer(&asn_DEF_HNBAP_PDU, 0, &pdu,
-				       (void **)buffer)) < 0) {
-		return -1;
+	pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
+	pdu.choice.unsuccessfulOutcome.criticality = criticality;
+	rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
+	if (rc < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		msgb_free(msg);
+		return NULL;
 	}
 
-	*length = encoded;
+	rval = aper_encode_to_buffer(&asn_DEF_HNBAP_PDU, &pdu,
+				     msg->data, msgb_tailroom(msg));
+	if (rval.encoded < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
+		msgb_free(msg);
+		return NULL;
+	}
 
-	return encoded;
+	msgb_put(msg, rval.encoded/8);
+
+	return msg;
 }
-#endif
 
 IE_t *hnbap_new_ie(ProtocolIE_ID_t id,
 		   Criticality_t criticality,
diff --git a/src/hnbap_common.h b/src/hnbap_common.h
index 8726718..bd8277b 100644
--- a/src/hnbap_common.h
+++ b/src/hnbap_common.h
@@ -146,6 +146,12 @@
 					   asn_TYPE_descriptor_t * td,
 					   void *sptr);
 
+struct msgb *hnbap_generate_unsuccessful_outcome(
+					   e_ProcedureCode procedureCode,
+					   Criticality_t criticality,
+					   asn_TYPE_descriptor_t * td,
+					   void *sptr);
+
 IE_t *hnbap_new_ie(ProtocolIE_ID_t id, Criticality_t criticality,
 		  asn_TYPE_descriptor_t *type, void *sptr);
 
diff --git a/src/ranap_common.c b/src/ranap_common.c
index ce97899..e3472ea 100644
--- a/src/ranap_common.c
+++ b/src/ranap_common.c
@@ -35,36 +35,39 @@
 	return msgb_alloc(1024, "RANAP Tx");
 }
 
-#if 0
-ssize_t ranap_generate_initiating_message(uint8_t ** buffer,
-					  uint32_t * length,
-					  e_RANAP_ProcedureCode procedureCode,
+struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
 					  RANAP_Criticality_t criticality,
-					  asn_TYPE_descriptor_t * td, void *sptr)
+					  asn_TYPE_descriptor_t *td, void *sptr)
 {
 	RANAP_RANAP_PDU_t pdu;
-	ssize_t encoded;
+	struct msgb *msg = ranap_msgb_alloc();
+	asn_enc_rval_t rval;
+	int rc;
 
 	memset(&pdu, 0, sizeof(pdu));
 
 	pdu.present = RANAP_RANAP_PDU_PR_initiatingMessage;
 	pdu.choice.initiatingMessage.procedureCode = procedureCode;
 	pdu.choice.initiatingMessage.criticality = criticality;
-	ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
-
-	if (asn1_xer_print)
-		xer_fprint(stdout, &asn_DEF_RANAP_RAMAP_PDU, (void *)&pdu);
-
-	if ((encoded =
-	     aper_encode_to_new_buffer(&asn_DEF_RANAP_RANAP_PDU, 0, &pdu,
-				       (void **)buffer)) < 0) {
-		return -1;
+	rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
+	if (rc < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		msgb_free(msg);
+		return NULL;
 	}
 
-	*length = encoded;
-	return encoded;
+	rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, &pdu,
+				       msg->data, msgb_tailroom(msg));
+	if (rval.encoded < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error encoding type: %s\n",
+				rval.failed_type->name);
+
+	}
+
+	msgb_put(msg, rval.encoded/8);
+
+	return msg;
 }
-#endif
 
 struct msgb *ranap_generate_successful_outcome(
 					   e_RANAP_ProcedureCode procedureCode,
@@ -102,36 +105,41 @@
 	return msg;
 }
 
-#if 0
-ssize_t ranap_generate_unsuccessful_outcome(uint8_t ** buffer,
-					uint32_t * length,
+struct msgb *ranap_generate_unsuccessful_outcome(
 					e_RANAP_ProcedureCode procedureCode,
 					RANAP_Criticality_t criticality,
 					asn_TYPE_descriptor_t * td,
 					void *sptr)
 {
-
 	RANAP_RANAP_PDU_t pdu;
-	ssize_t encoded;
+	struct msgb *msg = ranap_msgb_alloc();
+	asn_enc_rval_t rval;
+	int rc;
 
 	memset(&pdu, 0, sizeof(pdu));
 
 	pdu.present = RANAP_RANAP_PDU_PR_unsuccessfulOutcome;
 	pdu.choice.successfulOutcome.procedureCode = procedureCode;
 	pdu.choice.successfulOutcome.criticality = criticality;
-	ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
-
-	if ((encoded =
-	     aper_encode_to_new_buffer(&asn_DEF_RANAP_RANAP_PDU, 0, &pdu,
-				       (void **)buffer)) < 0) {
-		return -1;
+	rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+	if (rc < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		msgb_free(msg);
+		return NULL;
 	}
 
-	*length = encoded;
+	rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, &pdu,
+				     msg->data, msgb_tailroom(msg));
+	if (rval.encoded < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
+		msgb_free(msg);
+		return NULL;
+	}
 
-	return encoded;
+	msgb_put(msg, rval.encoded/8);
+
+	return msg;
 }
-#endif
 
 RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id,
 			 RANAP_Criticality_t criticality,
diff --git a/src/ranap_common.h b/src/ranap_common.h
index 4ffa613..84b4976 100644
--- a/src/ranap_common.h
+++ b/src/ranap_common.h
@@ -591,12 +591,22 @@
 
 extern int asn1_xer_print;
 
+struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
+					  RANAP_Criticality_t criticality,
+					  asn_TYPE_descriptor_t *td, void *sptr);
+
 struct msgb *ranap_generate_successful_outcome(
 					   e_RANAP_ProcedureCode procedureCode,
 					   RANAP_Criticality_t criticality,
 					   asn_TYPE_descriptor_t * td,
 					   void *sptr);
 
+struct msgb *ranap_generate_unsuccessful_outcome(
+					e_RANAP_ProcedureCode procedureCode,
+					RANAP_Criticality_t criticality,
+					asn_TYPE_descriptor_t * td,
+					void *sptr);
+
 RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id, RANAP_Criticality_t criticality,
 			 asn_TYPE_descriptor_t *type, void *sptr);
 
diff --git a/src/rua_common.c b/src/rua_common.c
index 554896b..3a5877c 100644
--- a/src/rua_common.c
+++ b/src/rua_common.c
@@ -165,36 +165,41 @@
 	return msg;
 }
 
-#if 0
-ssize_t rua_generate_unsuccessful_outcome(uint8_t ** buffer,
-					  uint32_t * length,
-					  e_RUA_ProcedureCode procedureCode,
-					  RUA_Criticality_t criticality,
-					  asn_TYPE_descriptor_t * td,
-					  void *sptr)
+struct msgb *rua_generate_unsuccessful_outcome(
+					   e_RUA_ProcedureCode procedureCode,
+					   RUA_Criticality_t criticality,
+					   asn_TYPE_descriptor_t * td,
+					   void *sptr)
 {
 
 	RUA_RUA_PDU_t pdu;
-	ssize_t encoded;
+	struct msgb *msg = rua_msgb_alloc();
+	asn_enc_rval_t rval;
+	int rc;
 
 	memset(&pdu, 0, sizeof(pdu));
-
 	pdu.present = RUA_RUA_PDU_PR_unsuccessfulOutcome;
-	pdu.choice.successfulOutcome.procedureCode = procedureCode;
-	pdu.choice.successfulOutcome.criticality = criticality;
-	ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
-
-	if ((encoded =
-	     aper_encode_to_new_buffer(&asn_DEF_RUA_RUA_PDU, 0, &pdu,
-				       (void **)buffer)) < 0) {
-		return -1;
+	pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
+	pdu.choice.unsuccessfulOutcome.criticality = criticality;
+	rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
+	if (rc < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+		msgb_free(msg);
+		return NULL;
 	}
 
-	*length = encoded;
+	rval = aper_encode_to_buffer(&asn_DEF_RUA_RUA_PDU, &pdu,
+				     msg->data, msgb_tailroom(msg));
+	if (rval.encoded < 0) {
+		LOGP(DMAIN, LOGL_ERROR, "Error encoding type %s\n", rval.failed_type->name);
+		msgb_free(msg);
+		return NULL;
+	}
 
-	return encoded;
+	msgb_put(msg, rval.encoded/8);
+
+	return msg;
 }
-#endif
 
 RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id,
 		     RUA_Criticality_t criticality,
diff --git a/src/rua_common.h b/src/rua_common.h
index 0c9e786..fa4ba83 100644
--- a/src/rua_common.h
+++ b/src/rua_common.h
@@ -59,6 +59,12 @@
 					   asn_TYPE_descriptor_t * td,
 					   void *sptr);
 
+struct msgb *rua_generate_unsuccessful_outcome(
+					   e_RUA_ProcedureCode procedureCode,
+					   RUA_Criticality_t criticality,
+					   asn_TYPE_descriptor_t * td,
+					   void *sptr);
+
 RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id, RUA_Criticality_t criticality,
 		     asn_TYPE_descriptor_t *type, void *sptr);
 
