-REC_CB(source, sour_start, make_source_record)
-GET_REC_BY_XREF(source, XREF_SOUR, gom_get_source_by_xref)
-NULL_CB(source, sour_data_start)
-STRING_CB(source, sour_data_agnc_start, data.agency)
-NULL_CB(source, sour_auth_start) /* value set by end callback */
-STRING_END_CB(source, sour_auth_end, author)
-NULL_CB(source, sour_titl_start) /* value set by end callback */
-STRING_END_CB(source, sour_titl_end, title)
-STRING_CB(source, sour_abbr_start, abbreviation)
-NULL_CB(source, sour_publ_start) /* value set by end callback */
-STRING_END_CB(source, sour_publ_end, publication)
-NULL_CB(source, sour_text_start) /* value set by end callback */
-STRING_END_CB(source, sour_text_end, text)
-XREF_CB(source, sour_repo_start, repository.link, make_repository_record)
+DEFINE_MAKEFUNC(source, gom_first_source)
+DEFINE_DESTROYFUNC(source, gom_first_source)
+DEFINE_ADDFUNC(source, XREF_SOUR)
+DEFINE_DELETEFUNC(source)
+DEFINE_GETXREFFUNC(source, XREF_SOUR)
+
+DEFINE_REC_CB(source, sour_start)
+DEFINE_NULL_CB(source, sour_data_start)
+DEFINE_STRING_CB(source, sour_data_agnc_start, data.agency)
+DEFINE_NULL_CB(source, sour_auth_start) /* value set by end callback */
+DEFINE_STRING_END_CB(source, sour_auth_end, author)
+DEFINE_NULL_CB(source, sour_titl_start) /* value set by end callback */
+DEFINE_STRING_END_CB(source, sour_titl_end, title)
+DEFINE_STRING_CB(source, sour_abbr_start, abbreviation)
+DEFINE_NULL_CB(source, sour_publ_start) /* value set by end callback */
+DEFINE_STRING_END_CB(source, sour_publ_end, publication)
+DEFINE_NULL_CB(source, sour_text_start) /* value set by end callback */
+DEFINE_STRING_END_CB(source, sour_text_end, text)
+DEFINE_XREF_CB(source, sour_repo_start, repository.link, repository)
+
+DEFINE_ADDFUNC2(source, source_event, data.event)
+DEFINE_ADDFUNC2(source, source_description, repository.description)
+DEFINE_ADDFUNC2(source, multimedia_link, mm_link)
+DEFINE_ADDFUNC2(source, note_sub, note)
+DEFINE_ADDFUNC2(source, user_ref_number, ref)
+DEFINE_ADDFUNC2(source, user_data, extra)
+DEFINE_ADDFUNC2_NOLIST(source, change_date, change_date)
+DEFINE_ADDFUNC2_STR(source, record_id)