diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn
index adf4ee6..855358d 100644
--- a/library/DIAMETER_Templates.ttcn
+++ b/library/DIAMETER_Templates.ttcn
@@ -195,6 +195,21 @@
 	vendor_id := vendor_id_3GPP
 }
 
+template (present) AVP_Address tr_AVP_Address(template (present) AddressType addr_type := ?,
+					      template (present) octetstring addr_data := ?) := {
+	address_type := addr_type,
+	address_data := addr_data
+}
+
+template (present) GenericAVP tr_AVP_SubcrId(template (present) DCC_NONE_Subscription_Id t) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Subscription_Id),
+		avp_data := {
+			avp_DCC_NONE_Subscription_Id := t
+		}
+	}
+}
+
 template (present) GenericAVP tr_AVP_SubcrIdType(template (present) DCC_NONE_Subscription_Id_Type t) := {
 	avp := {
 		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Subscription_Id_Type),
@@ -204,6 +219,42 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_SubcrIdData(template (present) DCC_NONE_Subscription_Id_Data t) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Subscription_Id_Data),
+		avp_data := {
+			avp_DCC_NONE_Subscription_Id_Data := t
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_RequestedAction(template (present) DCC_NONE_Requested_Action t := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Requested_Action),
+		avp_data := {
+			avp_DCC_NONE_Requested_Action := t
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_MultipleServicesIndicator(template (present) DCC_NONE_Multiple_Services_Indicator t := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Multiple_Services_Indicator),
+		avp_data := {
+			avp_DCC_NONE_Multiple_Services_Indicator := t
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_ServiceContextId(template (present) DCC_NONE_Service_Context_Id id := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Service_Context_Id),
+		avp_data := {
+			avp_DCC_NONE_Service_Context_Id := id
+		}
+	}
+}
+
 template (value) GenericAVP ts_AVP_OriginHost(template (value) charstring host) := {
 	avp := {
 		avp_header := ts_DIA_Hdr(c_AVP_Code_BASE_NONE_Origin_Host),
@@ -257,6 +308,15 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_TerminationCause(template (present) BASE_NONE_Termination_Cause tc) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Termination_Cause),
+		avp_data := {
+			avp_BASE_NONE_Termination_Cause := tc
+		}
+	}
+}
+
 template (value) GenericAVP ts_AVP_HostIpAddr(template (value) OCTET4 ipv4_addr) := {
 	avp := {
 		avp_header := ts_DIA_Hdr(c_AVP_Code_BASE_NONE_Host_IP_Address),
@@ -381,7 +441,14 @@
 	}
 }
 
-
+template (present) GenericAVP tr_AVP_EventTimestamp(template (present) AVP_Unsigned32 n := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Event_Timestamp),
+		avp_data := {
+			avp_BASE_NONE_Event_Timestamp := n
+		}
+	}
+}
 
 
 template (value) GenericAVP ts_AVP_SuppVendorIdRaw(uint32_t vendor_id) := {
@@ -446,6 +513,15 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_DestinationHost(template (present) charstring host := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Destination_Host),
+		avp_data := {
+			avp_BASE_NONE_Destination_Host := host
+		}
+	}
+}
+
 /* 3.3 Destination Realm */
 template (value) GenericAVP ts_AVP_DestinationRealm(template (value) charstring dest_realm) := {
 	avp := {
@@ -611,7 +687,7 @@
 }
 
 /* TS 29.262 7.3.13 RAT-Type */
-template (value) GenericAVP ts_AVP_3GPP_RatType(template (value) PCC_3GPP_RAT_Type rat_type) := {
+template (value) GenericAVP ts_AVP_PCC_3GPP_RatType(template (value) PCC_3GPP_RAT_Type rat_type) := {
 	avp := {
 		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
 		avp_data := {
@@ -619,7 +695,7 @@
 		}
 	}
 }
-template (present) GenericAVP tr_AVP_3GPP_RatType(template (present) PCC_3GPP_RAT_Type rat_type := ?) := {
+template (present) GenericAVP tr_AVP_PCC_3GPP_RatType(template (present) PCC_3GPP_RAT_Type rat_type := ?) := {
 	avp := {
 		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
 		avp_data := {
@@ -628,6 +704,15 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_GI_3GPP_RatType(template (present) GI_3GPP_3GPP_RAT_Type rat_type := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_RAT_Type),
+		avp_data := {
+			avp_GI_3GPP_3GPP_RAT_Type := rat_type
+		}
+	}
+}
+
 /* TS 29.262 7.3.7 ULR-Flags */
 template (value) GenericAVP ts_AVP_3GPP_UlrFlags(template (value) UINT32 flags) := {
 	avp := {
@@ -774,6 +859,15 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_3GPP_QoS_Information(template (present) AVP_list list := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_QoS_Information),
+		avp_data := {
+			avp_PCC_3GPP_QoS_Information := list
+		}
+	}
+}
+
 template (value) GenericAVP ts_AVP_3GPP_QosClassId(uint32_t id) := {
 	avp := {
 		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_QoS_Class_Identifier),
@@ -850,7 +944,167 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_3GPP_Reporting_Reason(template (present) DCA_3GPP_Reporting_Reason r := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_Reporting_Reason),
+		avp_data := {
+			avp_DCA_3GPP_Reporting_Reason := r
+		}
+	}
+}
 
+template (present) GenericAVP tr_AVP_3GPP_AoCRequestType(template (present) DCA_3GPP_AoC_Request_Type t := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_AoC_Request_Type),
+		avp_data := {
+			avp_DCA_3GPP_AoC_Request_Type := t
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_ServiceInformation(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_Service_Information),
+		avp_data := {
+			avp_DCA_3GPP_Service_Information := content
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_PSInformation(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_PS_Information),
+		avp_data := {
+			avp_DCA_3GPP_PS_Information := content
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_ChargingId(template (present) AVP_OctetString id := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_Charging_Id),
+		avp_data := {
+			avp_GI_3GPP_3GPP_Charging_Id := id
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_PDPType(template (present) GI_3GPP_3GPP_PDP_Type t := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_PDP_Type),
+		avp_data := {
+			avp_GI_3GPP_3GPP_PDP_Type := t
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_PDPAddress(template (present) DCA_3GPP_PDP_Address addr := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_PDP_Address),
+		avp_data := {
+			avp_DCA_3GPP_PDP_Address := addr
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_SGSNAddress(template (present) DCA_3GPP_SGSN_Address addr := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_SGSN_Address),
+		avp_data := {
+			avp_DCA_3GPP_SGSN_Address := addr
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_GGSNAddress(template (present) DCA_3GPP_GGSN_Address addr := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_GGSN_Address),
+		avp_data := {
+			avp_DCA_3GPP_GGSN_Address := addr
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_SelectionMode(template (present) GI_3GPP_3GPP_Selection_Mode sm := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_Selection_Mode),
+		avp_data := {
+			avp_GI_3GPP_3GPP_Selection_Mode := sm
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_ChargingCharacteristics(template (present) GI_3GPP_3GPP_Charging_Characteristics cc := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_Charging_Characteristics),
+		avp_data := {
+			avp_GI_3GPP_3GPP_Charging_Characteristics := cc
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_SGSNMCCMNC(template (present) GI_3GPP_3GPP_SGSN_MCC_MNC smn := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_SGSN_MCC_MNC),
+		avp_data := {
+			avp_GI_3GPP_3GPP_SGSN_MCC_MNC := smn
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_NSAPI(template (present) GI_3GPP_3GPP_NSAPI nsapi := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_NSAPI),
+		avp_data := {
+			avp_GI_3GPP_3GPP_NSAPI := nsapi
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_MS_TimeZone(template (present) GI_3GPP_3GPP_MS_TimeZone ms_tz := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_MS_TimeZone),
+		avp_data := {
+			avp_GI_3GPP_3GPP_MS_TimeZone := ms_tz
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_ULI(template (present) GI_3GPP_3GPP_User_Location_Info uli := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_User_Location_Info),
+		avp_data := {
+			avp_GI_3GPP_3GPP_User_Location_Info := uli
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_UserEquipmentInfo(template (present) DCC_NONE_User_Equipment_Info uei := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_User_Equipment_Info),
+		avp_data := {
+			avp_DCC_NONE_User_Equipment_Info := uei
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_UserEquipmentInfoType(template (present) DCC_NONE_User_Equipment_Info_Type ueit := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_User_Equipment_Info_Type),
+		avp_data := {
+			avp_DCC_NONE_User_Equipment_Info_Type := ueit
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_UserEquipmentInfoValue(template (present) DCC_NONE_User_Equipment_Info_Value ueiv := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_User_Equipment_Info_Value),
+		avp_data := {
+			avp_DCC_NONE_User_Equipment_Info_Value := ueiv
+		}
+	}
+}
 
 /* TS 29.262 7.3.62 PDN-Type */
 template (value) GenericAVP ts_AVP_3GPP_PdnType(template (value) AAA_3GPP_PDN_Type pdn_type) := {
@@ -871,6 +1125,34 @@
 		}
 	}
 }
+template (present) GenericAVP tr_AVP_Multiple_Services_Credit_Control(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Multiple_Services_Credit_Control),
+		avp_data := {
+			avp_DCC_NONE_Multiple_Services_Credit_Control := content
+		}
+	}
+}
+
+/* Requested-Service-Unit AVP */
+template (present) GenericAVP tr_AVP_Requested_Service_Unit(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Requested_Service_Unit),
+		avp_data := {
+			avp_DCC_NONE_Requested_Service_Unit := content
+		}
+	}
+}
+
+/* Used-Service-Unit AVP */
+template (present) GenericAVP tr_AVP_Used_Service_Unit(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DCC_NONE_Used_Service_Unit),
+		avp_data := {
+			avp_DCC_NONE_Used_Service_Unit := content
+		}
+	}
+}
 
 /* RFC4006 8.17 Granted-Service-Unit AVP */
 template (value) GenericAVP ts_AVP_Granted_Service_Unit(template (value) AVP_list content) := {
@@ -912,6 +1194,14 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_3GPP_CalledStationId(template (present) DNAS_NONE_Called_Station_Id id := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_DNAS_NONE_Called_Station_Id),
+		avp_data := {
+			avp_DNAS_NONE_Called_Station_Id := id
+		}
+	}
+}
 
 
 /* 5.3.2 Capabilities Exchange Answer */
@@ -1076,7 +1366,7 @@
 			ts_AVP_UserNameImsi(imsi),
 			ts_AVP_3GPP_UlrFlags('00000000'O),
 			ts_AVP_3GPP_VisitedPlmnId('11111F'O),
-			ts_AVP_3GPP_RatType(EUTRAN),
+			ts_AVP_PCC_3GPP_RatType(EUTRAN),
 			ts_AVP_OriginHost(orig_host),
 			ts_AVP_OriginRealm(orig_realm),
 			ts_AVP_DestinationRealm(dest_realm)
@@ -1101,7 +1391,7 @@
 			tr_AVP_OriginRealm(orig_realm),
 			tr_AVP_DestinationRealm(dest_realm),
 			tr_AVP_UserNameImsi(imsi),
-			tr_AVP_3GPP_RatType(EUTRAN),
+			tr_AVP_PCC_3GPP_RatType,
 			tr_AVP_3GPP_UlrFlags,
 			tr_AVP_3GPP_VisitedPlmnId
 	));
