diff --git a/library/RTP_Emulation.ttcn b/library/RTP_Emulation.ttcn
index 4b8c397..90a769c 100644
--- a/library/RTP_Emulation.ttcn
+++ b/library/RTP_Emulation.ttcn
@@ -160,6 +160,36 @@
 	inout RTPEM_bind, RTPEM_connect, RTPEM_mode, RTPEM_configure, RTPEM_stats_get;
 } with { extension "internal" };
 
+function f_rtpem_bind(RTPEM_CTRL_PT pt, in HostName local_host, inout PortNumber local_port) {
+	pt.call(RTPEM_bind:{local_host, local_port}) {
+		[] pt.getreply(RTPEM_bind:{local_host, ?}) -> param (local_port) {};
+	}
+}
+function f_rtpem_connect(RTPEM_CTRL_PT pt, in HostName remote_host, in PortNumber remote_port) {
+	pt.call(RTPEM_connect:{remote_host, remote_port}) {
+		[] pt.getreply(RTPEM_connect:{remote_host, remote_port}) {};
+	}
+}
+function f_rtpem_mode(RTPEM_CTRL_PT pt, in RtpemMode mode) {
+	pt.call(RTPEM_mode:{mode}) {
+		[] pt.getreply(RTPEM_mode:{mode}) {};
+	}
+}
+function f_rtpem_configure(RTPEM_CTRL_PT pt, in RtpemConfig cfg) {
+	pt.call(RTPEM_configure:{cfg}) {
+		[] pt.getreply(RTPEM_configure:{cfg}) {};
+	}
+}
+function f_rtpem_stats_get(RTPEM_CTRL_PT pt, boolean rtcp := false) return RtpemStats {
+	var RtpemStats stats;
+	pt.call(RTPEM_stats_get:{-, rtcp}) {
+		[] pt.getreply(RTPEM_stats_get:{?, rtcp}) -> param(stats) {};
+	}
+	return stats;
+}
+
+
+
 template PDU_RTP ts_RTP(BIT32_BO_LAST ssrc, INT7b pt, LIN2_BO_LAST seq, uint32_t ts,
 			octetstring payload, BIT1 marker := '0'B) := {
 	version := 2,
