diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index 891e565..17e35ab 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -370,9 +370,7 @@
 
 private function f_trx_conn_map_register(integer conn_id, in IpaCcmIdResp id_resp)
 runs on RSL_Emulation_CT return IpaStreamId {
-	var template charstring unit_id_fmt := pattern "(\d+)/(\d+)/(\d+)";
-	var charstring unit_id;
-	var integer trx_nr;
+	var IpaUnitId unit_id;
 	var integer idx;
 
 	/* Check if we have room for a new connection */
@@ -386,29 +384,21 @@
 		testcase.stop("IPA IDENTITY RESPONSE contains no unit-id");
 	}
 
-	/* Make sure that IPA unit-id is valid */
-	unit_id := oct2char(id_resp[idx].data);
-	if (not match(unit_id, unit_id_fmt)) {
-		testcase.stop("IPA unit-id has unknown/unexpected format");
-	}
+	/* Parse IPA unit-id */
+	unit_id := dec_IpaUnitId(oct2char(id_resp[idx].data));
 
-	/* Parse transceiver number (site/bts/trx).
-	 * TODO: implement and use declaratice types. */
-	unit_id := regexp(unit_id, unit_id_fmt, 2);
-	trx_nr  := str2int(unit_id);
-
-	if (trx_nr >= sizeof(TrxConnMap)) {
-		testcase.stop("Transceiver #", trx_nr, " does not fit");
-	} else if (TrxConnMap[trx_nr] != -1) {
-		testcase.stop("Transceiver #", trx_nr, " is already connected?!?");
+	if (unit_id.trx_id >= sizeof(TrxConnMap)) {
+		testcase.stop("Transceiver #", unit_id.trx_id, " does not fit");
+	} else if (TrxConnMap[unit_id.trx_id] != -1) {
+		testcase.stop("Transceiver #", unit_id.trx_id, " is already connected?!?");
 	}
 
 	/* Finally, store the connection ID */
-	log("Mapped TRX#", trx_nr, " to TCP/IP conn_id=", conn_id);
-	TrxConnMap[trx_nr] := conn_id;
+	log("Mapped TRX#", unit_id.trx_id, " to TCP/IP conn_id=", conn_id);
+	TrxConnMap[unit_id.trx_id] := conn_id;
 	TrxConnNum := TrxConnNum + 1;
 
-	return f_streamId_by_trx(trx_nr);
+	return f_streamId_by_trx(unit_id.trx_id);
 }
 
 private function f_trx_conn_map_unregister(integer conn_id)
