diff --git a/library/MNCC_Types.ttcn b/library/MNCC_Types.ttcn
index 956a1ae..2c08e27 100644
--- a/library/MNCC_Types.ttcn
+++ b/library/MNCC_Types.ttcn
@@ -252,6 +252,9 @@
 	int		pcp
 };
 
+type int MNCC_notify (0..127);
+type int MNCC_keypad (0..127);
+
 type enumerated MNCC_bcap {
 	GSM_MNCC_BCAP_SPEECH	(0),
 	GSM_MNCC_BCAP_UNR_DIG	(1),
@@ -281,9 +284,9 @@
 	int		clir_inv,
 	int		signal optional,
 
-	int		keypad optional,
+	MNCC_keypad	keypad optional,
 	int		more,
-	int		notify (0..127),
+	MNCC_notify	notify,
 	int		emergency optional,
 	charstring	imsi,
 
@@ -353,14 +356,14 @@
 	}
 }
 
-template MNCC_PDU ts_MNCC_SETUP(uint32_t call_id, charstring called, charstring calling) := {
-	msg_type := MNCC_SETUP_REQ,
+template MNCC_PDU ts_MNCC_SIMPLE(MNCC_MsgType msg_type, uint32_t call_id) := {
+	msg_type := msg_type,
 	u := {
 		signal := {
 			callref := call_id,
-			bearer_cap := ts_MNCC_bcap_voice,
-			called := valueof(ts_MNCC_number(called)),
-			calling := valueof(ts_MNCC_number(calling)),
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
 			redirecting := omit,
 			connected := omit,
 			cause := omit,
@@ -376,12 +379,1059 @@
 			more := 0,
 			notify := 0,
 			emergency := omit,
-			imsi := "1234",
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+template MNCC_PDU tr_MNCC_SIMPLE(template MNCC_MsgType msg_type, template uint32_t call_id) := {
+	msg_type := msg_type,
+	u := {
+		signal := {
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+
+
+/* MT: MSC <- MNCC: SETUP.req from ext. MNCC handler to MSC */
+template MNCC_PDU ts_MNCC_SETUP_req(uint32_t call_id, charstring called, charstring calling, charstring imsi := "") := {
+	msg_type := MNCC_SETUP_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.23.1 */
+			callref := call_id,
+			bearer_cap := ts_MNCC_bcap_voice,		/* mandatory */
+			called := valueof(ts_MNCC_number(called)),	/* optional */
+			calling := valueof(ts_MNCC_number(calling)),	/* optional */
+			redirecting := omit,				/* optional */
+			connected := omit,
+			cause := omit,
+			progress := omit,				/* optional */
+			useruser := omit,				/* optional */
+			facility := omit,				/* optional */
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,					/* optional */
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := imsi,
 			lchan_type := 0,
 			lchan_mode := 0
 		}
 	}
 };
 
+/* MT: MSC -> MNCC: Respons to SETUP.req */
+template MNCC_PDU tr_MNCC_SETUP_rsp(template uint32_t call_id := ?, template MNCC_number connected := *,
+				    template charstring imsi := ?) := {
+	msg_type := MNCC_SETUP_RSP,
+	u := {
+		signal := {	/* See 24.008 9.3.5 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := connected,
+			cause := omit,
+			progress := omit,
+			useruser := *,
+			facility := *,
+			cccap := omit,
+			ssversion := *,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := imsi,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+};
+
+/* MO: MSC -> MNCC: SETUP.ind from MSC to ext. MNCC handler */
+template MNCC_PDU tr_MNCC_SETUP_ind(template uint32_t call_id := ?, template MNCC_number called := ?,
+				    template MNCC_number calling := *, template charstring imsi :=?) := {
+	msg_type := MNCC_SETUP_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.23.2 */
+			callref := call_id,
+			bearer_cap := ?,				/* mandatory */
+			called := called,				/* mandatory */
+			calling := calling,				/* optional */
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := *,					/* optional */
+			facility := *,					/* optional */
+			cccap := *,					/* optional */
+			ssversion := *,					/* optional */
+			clir_sup := ?,					/* optional */
+			clir_inv := ?,					/* optional */
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := imsi,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+
+}
+
+/* MO: MSC <- MNCC: SETUP.cnf; Response to SETUP.ind */
+template MNCC_PDU ts_MNCC_SETUP_CNF(uint32_t call_id, template MNCC_number connected := omit) := {
+	msg_type := MNCC_SETUP_CNF,
+	u := {
+		signal := {	/* See 24.008 9.3.5 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := connected,
+			cause := omit,
+			progress := *,
+			useruser := *,
+			facility := *,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := "",
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/* MO: MSC <- MNCC: SETUP_COMPL.req; request to send CONNECT ACK */
+template MNCC_PDU ts_MNCC_SETUP_COMPL_req(uint32_t call_id) :=
+		ts_MNCC_SIMPLE(MNCC_SETUP_COMPL_REQ, call_id); /* See 24.008 9.3.6 */
+
+/* MT: MSC -> MNCC: SETUP_COMPL.ind; receipt of CONNECT ACK */
+template MNCC_PDU tr_MNCC_SETUP_COMPL_ind(template uint32_t call_id := ?) :=
+		tr_MNCC_SIMPLE(MNCC_SETUP_COMPL_IND, call_id); /* See 24.008 9.3.6 */
+
+/* MT: MSC -> MNCC: REJ.req; reject MT call */
+template MNCC_PDU tr_MNCC_REJ_req(template uint32_t call_id, template MNCC_cause cause := *) := {
+	msg_type := MNCC_REJ_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.19 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := *,
+			facility := *,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/* MO: MSC <- MNCC: REJ.ind; reject MO call */
+template MNCC_PDU ts_MNCC_REJ_ind(uint32_t call_id, template MNCC_cause cause := omit) := {
+	msg_type := MNCC_REJ_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.19 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/* MT: MSC <- MNCC: CALL_CONF.req; send CALL CONFIRMED to MS */
+template MNCC_PDU ts_MNCC_CALL_CONF_req(uint32_t call_id, template MNCC_bearer_cap bcap := omit,
+					template MNCC_cause cause := omit,
+					template MNCC_cccap cccap := omit) := {
+	msg_type := MNCC_CALL_CONF_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.2 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := cccap,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/* MO: MSC <- MNCC: CALL_PROC.req; call establishment initiated in network */
+template MNCC_PDU ts_MNCC_CALL_PROC_req(uint32_t call_id, template MNCC_bearer_cap bcap := omit,
+					template MNCC_progress prog := omit,
+					template charstring fac := omit,
+					template MNCC_cccap cccap := omit) := {
+	msg_type := MNCC_CALL_PROC_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.2 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := prog,
+			useruser := omit,
+			facility := fac,
+			cccap := cccap,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*     MSC <- MNCC: PROGRESS.req; PROGRESS message from ISDN */
+template MNCC_PDU ts_MNCC_PROGRESS_req(uint32_t call_id, MNCC_progress prog,
+					template MNCC_useruser uu := omit) := {
+	msg_type := MNCC_PROGRESS_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.17 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := prog,
+			useruser := uu,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/* MO: MSC <- MNCC: ALERT.req; indicate that user alerting has been initiated */
+template MNCC_PDU ts_MNCC_ALERT_req(uint32_t call_id, template MNCC_progress prog := omit,
+				    template charstring fac := omit,
+				    template MNCC_useruser uu := omit) := {
+	msg_type := MNCC_ALERT_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.1 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := prog,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+
+/* MT: MSC -> MNCC: ALERRT.ind; indicates that mobile user alerting has been initiated */
+template MNCC_PDU tr_MNCC_ALERT_ind(template uint32_t call_id, template MNCC_progress prog := omit,
+				    template charstring fac := omit,
+				    template MNCC_useruser uu := omit) := {
+	msg_type := MNCC_ALERT_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.1 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := prog,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: NOTIFY.req; request to send information pertaining to a call (such as user suspended) */
+template MNCC_PDU ts_MNCC_NOTIFY_req(uint32_t call_id, MNCC_notify notify) := {
+	msg_type := MNCC_NOTIFY_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.16 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := notify,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: NOTIFY.ind; indication to the mobile user */
+template MNCC_PDU tr_MNCC_NOTIFY_ind(template uint32_t call_id, template MNCC_notify notify) := {
+	msg_type := MNCC_NOTIFY_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.16 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := notify,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC -> MNCC: DISC.ind; mobile user requests disconnect */
+template MNCC_PDU tr_MNCC_DISC_ind(template uint32_t call_id := ?, template MNCC_cause cause := ?,
+				   template MNCC_progress prog := *,
+				   template charstring fac := *,
+				   template MNCC_useruser uu := *) := {
+	msg_type := MNCC_DISC_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.7 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := prog,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: DISC.req; indicate disconnect to mobile user */
+template MNCC_PDU ts_MNCC_DISC_req(uint32_t call_id, MNCC_cause cause,
+				   template MNCC_progress prog := omit,
+				   template charstring fac := omit,
+				   template MNCC_useruser uu := omit) := {
+	msg_type := MNCC_DISC_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.7 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := prog,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: REL.ind; mobile user informs network that user wants to release call + MM */
+template MNCC_PDU tr_MNCC_REL_ind(template uint32_t call_id := ?, template MNCC_cause cause := ?,
+				  template charstring fac := *, template MNCC_useruser uu := *) := {
+	msg_type := MNCC_REL_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.18 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: REL.req; indicate to mobile user tat network intents to release MM */
+template MNCC_PDU ts_MNCC_REL_req(uint32_t call_id, MNCC_cause cause,
+				  template charstring fac := omit, template MNCC_useruser uu := omit) := {
+	msg_type := MNCC_REL_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.18 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := uu,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: REL.cnf; confirm REL_req */
+template MNCC_PDU tr_MNCC_REL_cnf(template uint32_t call_id := ?, template MNCC_cause cause := ?,
+				  template charstring fac := *, template MNCC_useruser uu := *)
+modifies tr_MNCC_REL_ind := {
+	msg_type := MNCC_REL_CNF
+};
+
+/*   : MSC <- MNCC: FACILITY.req; request transmission of facility */
+template MNCC_PDU ts_MNCC_FACILITY_req(uint32_t call_id, charstring fac) := {
+	msg_type := MNCC_FACILITY_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.9 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: FACILITY.req; indicate reception of facility */
+template MNCC_PDU tr_MNCC_FACILITY_ind(template uint32_t call_id := ?, template charstring fac := ?) := {
+	msg_type := MNCC_FACILITY_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.9 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := fac,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC -> MNCC: START_DTMF.ind; MS has */
+template MNCC_PDU tr_MNCC_START_DTMF_ind(template uint32_t call_id := ?, template MNCC_keypad keypad := ?) := {
+	msg_type := MNCC_START_DTMF_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.24 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := keypad,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: START_DTMF.rsp; Acknowledge start of DTMF */
+template MNCC_PDU ts_MNCC_START_DTMF_rsp(uint32_t call_id, MNCC_keypad keypad) := {
+	msg_type := MNCC_START_DTMF_RSP,
+	u := {
+		signal := {	/* See 24.008 9.3.25 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := keypad,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC <- MNCC: START_DTMF.rsp; Acknowledge start of DTMF */
+template MNCC_PDU ts_MNCC_START_DTMF_rej(uint32_t call_id, MNCC_cause cause) := {
+	msg_type := MNCC_START_DTMF_REJ,
+	u := {
+		signal := {	/* See 24.008 9.3.26 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: STOP_DTMF.ind */
+template MNCC_PDU tr_MNCC_STOP_DTMF_ind(template uint32_t call_id := ?) :=
+	tr_MNCC_SIMPLE(MNCC_STOP_DTMF_IND, call_id); /* See 24.008 9.3.29 */
+
+/*   : MSC <- MNCC: STOP_DTMF.rsp; Acknowledge stop of DTMF */
+template MNCC_PDU ts_MNCC_STOP_DTMF_rsp(uint32_t call_id) :=
+	ts_MNCC_SIMPLE(MNCC_STOP_DTMF_RSP, call_id); /* See 24.008 9.3.30 */
+
+/*   : MSC -> MNCC: MODIFY.ind; request to start MO in-call modification */
+template MNCC_PDU tr_MNCC_MODIFY_ind(template uint32_t call_id := ?, template MNCC_bearer_cap bcap := ?) := {
+	msg_type := MNCC_MODIFY_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.14 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: MODIFY.rsp; tespond to MO in-call modification */
+template MNCC_PDU ts_MNCC_MODIFY_rsp(uint32_t call_id, MNCC_bearer_cap bcap) := {
+	msg_type := MNCC_MODIFY_RSP,
+	u := {
+		signal := {	/* See 24.008 9.3.14 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC <- MNCC: MODIFY.req; request to start MT in-call modification */
+template MNCC_PDU ts_MNCC_MODIFY_req(uint32_t call_id, MNCC_bearer_cap bcap) := {
+	msg_type := MNCC_MODIFY_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.14 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: MODIFY.cnf; MS has responded to MT in-call modification */
+template MNCC_PDU tr_MNCC_MODIFY_cnf(template uint32_t call_id := ?,
+				     template MNCC_bearer_cap bcap := ?) := {
+	msg_type := MNCC_MODIFY_CNF,
+	u := {
+		signal := {	/* See 24.008 9.3.14 */
+			callref := call_id,
+			bearer_cap := bcap,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := *,
+			imsi := ?,
+			lchan_type := ?,
+			lchan_mode := ?
+		}
+	}
+}
+
+/*   : MSC <- MNCC: Request transmission of USERINFO to MS */
+template MNCC_PDU ts_MNCC_USERINFO_req(uint32_t call_id, MNCC_useruser uu, integer more) := {
+	msg_type := MNCC_USERINFO_REQ,
+	u := {
+		signal := {	/* See 24.008 9.3.31 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := uu,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := more,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: Indicate reception of USERINFO from MS */
+template MNCC_PDU tr_MNCC_USERINFO_ind(template uint32_t call_id := ?, template MNCC_useruser uu := ?,
+					integer more) := {
+	msg_type := MNCC_USERINFO_IND,
+	u := {
+		signal := {	/* See 24.008 9.3.31 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := omit,
+			progress := omit,
+			useruser := uu,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := more,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: HOLD.ind; MS requests hold of call */
+template MNCC_PDU tr_MNCC_HOLD_ind(template uint32_t call_id := ?) :=
+				tr_MNCC_SIMPLE(MNCC_HOLD_IND, call_id); /* See 24.008 9.3.10 */
+
+/*   : MSC <- MNCC: HOLD.cnf; network confirms hold of call */
+template MNCC_PDU ts_MNCC_HOLD_cnf(uint32_t call_id) :=
+				ts_MNCC_SIMPLE(MNCC_HOLD_CNF, call_id); /* See 24.008 9.3.11 */
+
+/*   : MSC <- MNCC: HOLD.rej; network rejects hold of call */
+template MNCC_PDU ts_MNCC_HOLD_rej(uint32_t call_id, MNCC_cause cause) := {
+	msg_type := MNCC_HOLD_REJ,
+	u := {
+		signal := {	/* See 24.008 9.3.12 */
+			callref := call_id,
+			bearer_cap := omit,
+			called := omit,
+			calling := omit,
+			redirecting := omit,
+			connected := omit,
+			cause := cause,
+			progress := omit,
+			useruser := omit,
+			facility := omit,
+			cccap := omit,
+			ssversion := omit,
+			clir_sup := 0,
+			clir_inv := 0,
+			signal := omit,
+			keypad := omit,
+			more := 0,
+			notify := 0,
+			emergency := omit,
+			imsi := "",
+			lchan_type := 0,
+			lchan_mode := 0
+		}
+	}
+}
+
+/*   : MSC -> MNCC: RETRIEVE.ind; MS requests retrieval of held call */
+template MNCC_PDU tr_MNCC_RETRIEVE_ind(template uint32_t call_id := ?) :=
+				tr_MNCC_SIMPLE(MNCC_RETRIEVE_IND, call_id); /* See 24.008 9.3.20 */
+
+/*   : MSC <- MNCC: RETRIEVE.cnf; network confirms retrieve of call */
+template MNCC_PDU ts_MNCC_RETRIEVE_cnf(uint32_t call_id) :=
+				ts_MNCC_SIMPLE(MNCC_RETRIEVE_CNF, call_id); /* See 24.008 9.3.21 */
+
+/*   : MSC <- MNCC: RETRIEVE.rej; network rejects retrieve of call */
+template MNCC_PDU ts_MNCC_RETRIEVE_rej(uint32_t call_id, MNCC_cause cause)
+modifies ts_MNCC_HOLD_rej := {		/* See 24.008 9.3.22 */
+	msg_type := MNCC_RETRIEVE_REJ
+}
+
+
+template MNCC_PDU ts_MNCC_SIMPLE_RTP(MNCC_MsgType msg_type, uint32_t call_id) := {
+	msg_type := msg_type,
+	u := {
+		rtp := {
+			callref := call_id,
+			ip := 0,
+			rtp_port := 0,
+			payload_type := 0,
+			payload_msg_type := 0
+		}
+	}
+}
+
+/* MSC <- MNCC: RTP_CREATE.req; request creation of RTP */
+template MNCC_PDU ts_MNCC_RTP_CREATE(uint32_t call_id) := ts_MNCC_SIMPLE_RTP(MNCC_RTP_CREATE, call_id);
+
+/* MSC -> MNCC: RTP_CREATE.rsp; acknowledge creation of RTP (stating MSC side IP/Port) */
+template MNCC_PDU tr_MNCC_RTP_CREATE(template uint32_t call_id := ?) := {
+	msg_type := MNCC_RTP_CREATE,
+	u := {
+		rtp := {
+			callref := call_id,
+			ip := ?,
+			rtp_port := ?,
+			payload_type := ?,
+			payload_msg_type := ?
+		}
+	}
+}
+
+/* MSC <- MNCC: RTP_CONNECT.req; request connect of RTP */
+template MNCC_PDU ts_MNCC_RTP_CONNECT(uint32_t call_id, uint32_t ip, uint32_t rtp_port, uint32_t pt) := {
+	msg_type := MNCC_RTP_CONNECT,
+	u := {
+		rtp := {
+			callref := call_id,
+			ip := ip,
+			rtp_port := rtp_port,
+			payload_type := pt,
+			payload_msg_type := 0
+		}
+	}
+}
+
+/* MSC <- MNCC: RTP_FREE.req; request connect of RTP */
+template MNCC_PDU ts_MNCC_RTP_FREE(uint32_t call_id) := ts_MNCC_SIMPLE_RTP(MNCC_RTP_FREE, call_id);
 
 } with { encode "RAW" ; variant "FIELDORDER(msb)" }
