diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 439dda3..e3740eb 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -514,8 +514,11 @@
 					other, OTHERWISE;
 		)" };
 
-	template RSL_IE t_RSL_IE(template RSL_IE_Body body) := {
-		iei := RSL_IE_CHAN_NR, /* overwritten? */
+	/* For some reason the TTCN-3 RAW codec cannot automatically figure out the IEI
+	 * that it needs to set for a given union-choice (body).  So we have to explicitly
+	 * specify the IEI by the caller :( */
+	template RSL_IE t_RSL_IE(RSL_IE_Type iei, template RSL_IE_Body body) := {
+		iei := iei,
 		body := body
 	}
 
@@ -591,9 +594,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true),
 		msg_type := RSL_MT_DATA_REQ,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
-			t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+			t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
 		}
 	}
 
@@ -602,9 +605,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true),
 		msg_type := RSL_MT_DATA_IND,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
-			t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+			t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
 		}
 	}
 
@@ -613,9 +616,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
 		msg_type := RSL_MT_ERROR_IND,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
-			t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
 		}
 	}
 
@@ -624,9 +627,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
 		msg_type := RSL_MT_EST_IND,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
-			t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+			t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
 		}
 	}
 
@@ -635,8 +638,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
 		msg_type := RSL_MT_REL_REQ,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
 		}
 	}
 	template RSL_Message tr_RSL_REL_REQ(template RslChannelNr chan_nr,
@@ -655,8 +658,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
 		msg_type := RSL_MT_REL_CONF,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
 		}
 	}
 
@@ -665,8 +668,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
 		msg_type := RSL_MT_REL_IND,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
 		}
 	}
 
@@ -690,9 +693,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
 		msg_type := RSL_MT_CHAN_ACTIV,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
-			t_RSL_IE(RSL_IE_Body:{chan_mode := mode})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_ACT_TYPE, RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
+			t_RSL_IE(RSL_IE_CHAN_MODE, RSL_IE_Body:{chan_mode := mode})
 			/* lots of optional IEs */
 		}
 	}
@@ -702,8 +705,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
 		msg_type := RSL_MT_CHAN_ACTIV_ACK,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{frame_nr := ts_RSL_IE_FrameNumber(fn)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := ts_RSL_IE_FrameNumber(fn)})
 		}
 	}
 
@@ -712,8 +715,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
 		msg_type := RSL_MT_CHAN_ACTIV_NACK,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
 		}
 	}
 
@@ -722,8 +725,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
 		msg_type := RSL_MT_CONN_FAIL,
 		ies :={
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
 		}
 	}
 
@@ -746,7 +749,7 @@
 	template RSL_Message ts_RSL_RF_CHAN_REL_ACK(RslChannelNr chan_nr) :=
 		ts_RSL_MsgDiscType(ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
 				   RSL_MT_RF_CHAN_REL_ACK,
-				   { t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) });
+				   { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) });
 
 	/* COMMON CHANNEL MANAGEMENT MESSAGES */
 
@@ -755,16 +758,16 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
 		msg_type := RSL_MT_CCCH_LOAD_IND,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
-			t_RSL_IE(RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
+			t_RSL_IE(RSL_IE_RACH_LOAD, RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
 		}
 	}
 	template RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := {
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
 		msg_type := RSL_MT_CCCH_LOAD_IND,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}),
-			t_RSL_IE(RSL_IE_Body:{paging_load := buffer_space})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}),
+			t_RSL_IE(RSL_IE_PAGING_LOAD, RSL_IE_Body:{paging_load := buffer_space})
 		}
 	}
 
@@ -773,9 +776,9 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
 		msg_type := RSL_MT_CHAN_RQD,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
-			t_RSL_IE(RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}),
-			t_RSL_IE(RSL_IE_Body:{access_delay := acc_del})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
+			t_RSL_IE(RSL_IE_REQ_REFERENCE, RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}),
+			t_RSL_IE(RSL_IE_ACCESS_DELAY, RSL_IE_Body:{access_delay := acc_del})
 		}
 	}
 
@@ -784,8 +787,8 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
 		msg_type := RSL_MT_DELETE_IND,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
-			t_RSL_IE(RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(imm_ass)})
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_FULL_IMM_ASS_INFO, RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(imm_ass)})
 		}
 	}
 
@@ -817,7 +820,7 @@
 		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
 		msg_type := RSL_MT_ERROR_IND,
 		ies := {
-			t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
 		}
 	}
 
