diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index b506865..a3db409 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -10,12 +10,13 @@
  */
 
 import from General_Types all;
+import from Osmocom_Types all;
 import from MobileL3_Types all;
 import from MobileL3_CommonIE_Types all;
 import from MobileL3_MM_Types all;
 import from MobileL3_RRM_Types all;
 import from MobileL3_CC_Types all;
-//import from MobileL3_GMM_SM_Types all;
+import from MobileL3_GMM_SM_Types all;
 //import from MobileL3_SMS_Types all;
 
 
@@ -63,6 +64,13 @@
 	}
 }
 
+/* send template fro Mobile Identity (TMSI) */
+template MobileIdentityTLV ts_MI_TMSI_TLV(OCT4 tmsi) := {
+	elementIdentifier := '0000000'B, /* overwritten */
+	spare1 := '0'B,
+	mobileIdentityLV := ts_MI_TMSI_LV(tmsi)
+}
+
 private function f_enc_IMSI_L3(hexstring digits) return IMSI_L3 {
 	var IMSI_L3 l3;
 	var integer len := lengthof(digits);
@@ -1155,6 +1163,314 @@
 	}
 }
 
+/***********************************************************************
+ * GPRS Mobility Management
+ ***********************************************************************/
+
+template (value) MSNetworkCapabilityV ts_GMM_MsNetCapV := {
+	gea1bit := '1'B,
+	smCapabilitiesviaDedicatedChannels := '1'B,
+	smCapabilitiesviaGPRSChannels := '0'B,
+	ucs2Support := '1'B,
+	ssScreeningIndicator := '01'B,
+	solSACapability := omit,
+	revisionLevelIndicatior := omit,
+	pFCFeatureMode := omit,
+	extendedGEAbits := omit,
+	lcsVAcapability := omit,
+	pSInterRATHOtoUTRANIuModeCapability := omit,
+	pSInterRATHOtoEUTRANS1ModeCapability := omit,
+	eMMCombinedProceduresCapability := omit,
+	iSRSupport := omit,
+	sRVCCtoGERANUTRANCapability := omit,
+	ePCCapability := omit,
+	nFCapability := omit,
+	gERANNertworkSharingCapability := omit,
+	spare_octets := omit
+};
+
+template (value) MSNetworkCapabilityLV ts_GMM_MsNetCapLV := {
+	lengthIndicator := 0, /* overwritten */
+	msNetworkCapabilityV := ts_GMM_MsNetCapV
+};
+
+type enumerated GprsAttachType {
+	GPRS_ATT_T_GPRS,
+	GPRS_ATT_T_GPRS_IMSI_COMBINED
+};
+
+function ts_GMM_AttachType(boolean combined := false, boolean follow_on_pending := false)
+return AttachTypeV {
+	var AttachTypeV att;
+	if (combined) {
+		att.attachType := '011'B;
+	} else {
+		att.attachType := '001'B;
+	}
+	att.for_l3 := bool2bit(combined);
+	return att;
+}
+
+type enumerated GprsUpdateType {
+	GPRS_UPD_T_RA	('000'B),
+	GPRS_UPD_T_RA_LA_COMBINED ('001'B),
+	GPRS_UPD_T_RA_LA_COMBINED_IMSI_ATT ('010'B),
+	GPRS_UPD_T_PERIODIC ('011'B)
+};
+
+/* 10.5.5.18 Update Type */
+template UpdateTypeV ts_GMM_UpdateType(GprsUpdateType upd_t, boolean combined := false,
+				       boolean follow_on_pending := false) := {
+	valueField := int2bit(enum2int(upd_t), 3),
+	for_l3 := bool2bit(combined)
+}
+
+template (value) DRXParameterV ts_DrxParameterV := {
+	splitPGCycleCode := '00'O, /* no DRX */
+	nonDRXTimer := '000'B, /* no non-DRX mode */
+	splitOnCCCH := '0'B, /* not supported */
+	cnSpecificDRXCycleLength := '0000'B /* SI value used */
+};
+
+template (value) AccessCapabilitiesStruct ts_AccesssCap := {
+	lengthIndicator := 0, /* overwritten */
+	accessCapabilities := {
+		rfPowerCapability := '001'B, /* FIXME */
+		presenceBitA5 := '0'B,
+		a5bits := omit,
+		esind := '1'B,
+		psbit := '0'B,
+		vgcs := '0'B,
+		vbs := '0'B,
+		presenceBitMultislot := '0'B,
+		multislotcap := omit,
+		accessCapAdditionsAfterRel97 := omit
+	},
+	spare_bits := omit
+}
+
+template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att) := {
+	mSRACapabilityValues := {
+		mSRACapabilityValuesExclude1111 := {
+			accessTechnType := '0001'B, /* E-GSM */
+			accessCapabilities := ts_AccesssCap
+		}
+	},
+	presenceBitMSRACap := '0'B
+};
+
+template (value) MSRadioAccessCapabilityLV ts_MS_RaCapa := {
+	lengthIndicator := 0, /* overwritten */
+	msRadioAccessCapabilityV := {
+		ts_RaCapRec('0001'B) /* E-GSM */
+	}
+}
+
+template (value) PDU_L3_MS_SGSN
+	ts_GMM_ATTACH_REQ(MobileIdentityLV mi_lv, RoutingAreaIdentificationV old_ra,
+			  boolean combined := false, boolean follow_on_pending := false,
+			  template (omit) MobileStationClassmark2_TLV cm2_tlv,
+			  template (omit) MobileStationClassmark3_TLV cm3_tlv
+		) := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			attachRequest := {
+				messageType := '00000000'B, /* overwritten */
+				msNetworkCapability := ts_GMM_MsNetCapLV,
+				attachType := valueof(ts_GMM_AttachType(combined, follow_on_pending)),
+				gprsCKSN := { '111'B, '0'B },
+				drxParam := ts_DrxParameterV,
+				mobileIdentity := mi_lv,
+				oldRoutingAreaID := old_ra,
+				msRACap := ts_MS_RaCapa,
+				ptmsiSignature := omit, /* TODO */
+				reqGPRStimer := omit,
+				tmsiStatus := omit,
+				pC_LCSCapability := omit,
+				mobileStationClassmark2 := cm2_tlv,
+				mobileStationClassmark3 := cm3_tlv,
+				supportedCodecs := omit,
+				uENetworkCapability := omit,
+				additionalMobileIdentity := omit,
+				routingAreaIdentification2 := omit,
+				voiceDomainandUEsUsageSetting := omit,
+				deviceProperties := omit,
+				p_TMSI_Type := omit,
+				mS_NetworkFeatureSupport := omit,
+				oldLocationAreaIdentification := omit,
+				additionalUpdateType := omit,
+				tMSIBasedNRIcontainer := omit,
+				t3324 := omit,
+				t3312_ExtendedValue := omit,
+				extendedDRXParameters := omit
+			}
+		}
+	}
+}
+
+
+template (value) PDU_L3_MS_SGSN ts_GMM_ATTACH_COMPL := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			attachComplete := {
+				messageType := '00000000'B, /* overwritten */
+				interRATHandoverInformation := omit,
+				eUTRANinterRATHandoverInformation := omit
+			}
+		}
+	}
+}
+
+template (value) PDU_L3_MS_SGSN
+	ts_GMM_RAU_REQ(MobileIdentityLV mi_lv, GprsUpdateType upd_type,
+			  RoutingAreaIdentificationV old_ra,
+			  boolean follow_on_pending := false,
+			  template (omit) MobileStationClassmark2_TLV cm2_tlv,
+			  template (omit) MobileStationClassmark3_TLV cm3_tlv
+		) := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			routingAreaUpdateRequest := {
+				messageType := '00000000'B, /* overwritten */
+				updateType := ts_GMM_UpdateType(upd_type, follow_on_pending),
+				gprsCKSN := { '111'B, '0'B },
+				oldRoutingAreaId := old_ra,
+				msRACap := ts_MS_RaCapa,
+				oldPTMSISignature := omit, /* TODO */
+				readyTimerValue := omit,
+				drxParameter := omit,
+				tmsiStatus := omit,
+				ptmsi := omit,
+				mSNetworkCapability := omit,
+				pdpContextStatus := omit, /* TODO */
+				pC_LCSCapability := omit,
+				uENetworkCapability := omit,
+				additionalMobileIdentity := omit,
+				oldRoutingAreaIdentification2 := omit,
+				mobileStationClassmark2 := cm2_tlv,
+				mobileStationClassmark3 := cm3_tlv,
+				supportedCodecs := omit,
+				voiceDomainUEUsageSetting := omit,
+				p_TMSI_Type := omit,
+				deviceProperties := omit,
+				mS_NetworkFeatureSupport := omit,
+				oldLocationAreaIdentification := omit,
+				additionalUpdateType := omit,
+				tMSIBasedNRIcontainer := omit,
+				t3324 := omit,
+				t3312_ExtendedValue := omit,
+				extendedDRXParameters := omit
+			}
+		}
+	}
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_RAU_COMPL := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			routingAreaUpdateComplete := {
+				messageType := '00000000'B, /* overwritten */
+				receiveNPDUNumbers := omit,
+				interRATHandoverInformation := omit,
+				eUTRANinterRATHandoverInformation := omit
+			}
+		}
+	}
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_PTMSI_REALL_COMPL := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			p_TMSIReallocationComplete := {
+				messageType := '00000000'B /* overwritten */
+			}
+		}
+	}
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_AUTH_CIPH_COMPL(ACReferenceNumberV ref, OCT4 res) := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			authenticationAndCipheringResponse := {
+				messageType := '00000000'B, /* overwritten */
+				acReferenceNumber := ref,
+				spare := '0000'B,
+				authenticationParResp := {
+					elementIdentifier := '22'O,
+					valueField := res
+				},
+				imeisv := omit,
+				authenticationRespParExt := omit
+			}
+		}
+	}
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_ID_RESP(MobileIdentityLV mi_lv) := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			identityResponse := {
+				messageType := '00000000'B, /* overwritten */
+				mobileIdentity := mi_lv
+			}
+		}
+	}
+}
+
+const BIT3 c_GMM_DTT_MO_GPRS := '001'B;
+const BIT3 c_GMM_DTT_MO_IMSI := '010'B;
+const BIT3 c_GMM_DTT_MO_GPRS_IMSI_COMBINED := '011'B;
+
+template (value) DetachTypeV ts_GMM_DetType(BIT3 dtt) := {
+	detachType := dtt,
+	powerOffFlag := '0'B
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_DET_REQ_MO(BIT3 dtt := c_GMM_DTT_MO_GPRS) := {
+	discriminator := '0000'B, /* overwritten */
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		gprs_mm := {
+			detachRequest_MS_SGSN := {
+				messageType := '00000000'B, /* overwritten */
+				detachType := valueof(ts_GMM_DetType(dtt)),
+				spare := '0000'B,
+				ptmsi := omit, /* TODO */
+				ptmsiSignature := omit /* TODO */
+			}
+		}
+	}
+}
 
 
 }
