diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index b2e42ae..22fefdd 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -2,6 +2,7 @@
 
 import from General_Types all;
 import from Osmocom_Types all;
+import from GSM_Types all;
 import from BSSAP_Types all;
 
 type integer BssmapCause;
@@ -443,17 +444,68 @@
 	digits := imsi_digits
 }
 
-template PDU_BSSAP ts_BSSMAP_Paging(hexstring imsi_digits, BSSMAP_FIELD_CellIdentificationList cid_list,
-					template integer tmsi := omit)
+template BSSMAP_FIELD_CellIdentificationList ts_BSSMAP_CIL_noCell := {
+	cIl_noCell := ''O
+}
+
+private function f_enc_mcc_mnc(GsmMcc mcc, GsmMnc mnc) return OCT3 {
+	return hex2oct(mcc[1] & mcc[0] & mnc[0] & mnc[3] & mnc[2]);
+}
+
+template BSSMAP_FIELD_CellIdentification_CGI ts_BSSMAP_CI_CGI(GsmMcc mcc, GsmMnc mnc, GsmLac lac, GsmCellId ci) := {
+	mcc_mnc := f_enc_mcc_mnc(mcc, mnc),
+	lac := int2oct(lac, 2),
+	ci := int2oct(ci, 2)
+}
+
+template BSSMAP_FIELD_CellIdentification_LAC_CI ts_BSSMAP_CI_LAC_CI(GsmLac lac, GsmCellId ci) := {
+	lac := int2oct(lac, 2),
+	ci := int2oct(ci, 2)
+}
+
+template BSSMAP_FIELD_CellIdentification_LAI ts_BSSMAP_CI_LAI(GsmMcc mcc, GsmMnc mnc, GsmLac lac) := {
+	mcc_mnc := f_enc_mcc_mnc(mcc, mnc),
+	lac := int2oct(lac, 2)
+}
+
+template OCT2 ts_BSSMAP_CI_CI(GsmCellId ci) := int2oct(ci, 2);
+template OCT2 ts_BSSMAP_CI_LAC(GsmLac lac) := int2oct(lac, 2);
+
+template BSSMAP_IE_ChannelNeeded ts_BSSMAP_IE_ChanNeeded(BIT2 chneed) := {
+	elementIdentifier := '24'O,
+	channel := chneed,
+	spare := '000000'B
+}
+
+template BSSMAP_IE_TMSI ts_BSSMAP_IE_TMSI(OCT4 tmsi) := {
+	elementIdentifier := '09'O,
+	lengthIndicator := 4,
+	tmsiOctets := tmsi
+};
+
+private function f_tmsi_or_omit(template OCT4 tmsi) return template BSSMAP_IE_TMSI {
+	var template BSSMAP_IE_TMSI ret;
+	if (ispresent(tmsi)) {
+		ret := ts_BSSMAP_IE_TMSI(valueof(tmsi));
+	} else {
+		ret := omit;
+	}
+	return ret;
+}
+
+template PDU_BSSAP ts_BSSMAP_Paging(hexstring imsi_digits,
+					template BSSMAP_FIELD_CellIdentificationList cid_list,
+					template OCT4 tmsi := omit,
+					template BSSMAP_IE_ChannelNeeded chneed := omit)
 modifies ts_BSSAP_BSSMAP := {
 	pdu := {
 		bssmap := {
 			paging := {
 				messageType := '51'O,
 				iMSI := ts_BSSMAP_Imsi(imsi_digits),
-				tMSI := omit, // FIXME: convert tmsi,
-				cellIdentifierList := ts_BSSMAP_IE_CidList(cid_list),
-				channelNeeded := omit,
+				tMSI := f_tmsi_or_omit(tmsi),
+				cellIdentifierList := ts_BSSMAP_IE_CidList(valueof(cid_list)),
+				channelNeeded := chneed,
 				eMLPP_Priority := omit,
 				pagingInformation := omit /* only VGCS/VBS flag */
 			}
