diff --git a/bibutils/bibcore.c b/bibutils/bibcore.c
--- a/bibutils/bibcore.c
+++ b/bibutils/bibcore.c
@@ -309,10 +309,10 @@
  * unless a tag/value pair with the same tag has already
  * been adding during reference processing.
  */
-static void
+static int
 process_defaultadd( fields *f, int reftype, param *r )
 {
-	int i, n, process, level;
+	int i, n, process, level, ok = 1;
 	newstr tag, value;
 	char *p;
 
@@ -322,14 +322,20 @@
 		process = ((r->all[reftype]).tags[i]).processingtype;
 		if ( process!=DEFAULT ) continue;
 		level   = ((r->all[reftype]).tags[i]).level;
-		p = ((r->all[reftype]).tags[i]).newstr;
+		p       = ((r->all[reftype]).tags[i]).newstr;
 		extract_tag_value( &tag, &value, p );
 		n = fields_find( f, tag.data, level );
-		if ( n==-1 )
-			fields_add( f, tag.data, value.data, level );
+fprintf(stderr,"%s: n=%d tag.data='%s' level=%d\n", __FUNCTION__, n, tag.data, level );
+		if ( n==-1 ) {
+			ok = fields_add( f, tag.data, value.data, level );
+			if ( !ok ) goto out;
+		}
 	}
-
+out:
 	newstrs_free( &tag, &value, NULL );
+
+	if ( ok ) return BIBL_OK;
+	else return BIBL_ERR_MEMERR;
 }
 
 /* process_alwaysadd()
@@ -338,10 +344,10 @@
  * processing type without exception (the difference from
  * DEFAULT processing).
  */
-static void
+static int
 process_alwaysadd( fields *f, int reftype, param *r )
 {
-	int i, process, level;
+	int i, process, level, ok = 1;
 	newstr tag, value;
 	char *p;
 
@@ -353,10 +359,15 @@
 		level   = ((r->all[reftype]).tags[i]).level;
 		p = ((r->all[reftype]).tags[i]).newstr;
 		extract_tag_value( &tag, &value, p );
-		fields_add( f, tag.data, value.data, level );
+		ok = fields_add( f, tag.data, value.data, level );
+		if ( !ok ) goto out;
 	}
 
+out:
 	newstrs_free( &tag, &value, NULL );
+
+	if ( ok ) return BIBL_OK;
+	else return BIBL_ERR_MEMERR;
 }
 
 static int
@@ -648,12 +659,14 @@
 		if ( !rout ) return BIBL_ERR_MEMERR;
 		if ( p->typef ) 
 			reftype = p->typef( rin, fname, i+1, p, p->all, p->nall );
-		if ( p->all ) {
-			process_alwaysadd( rout, reftype, p );
-			process_defaultadd( rout, reftype, p );
-		}
 		ok = p->convertf( rin, rout, reftype, p, p->all, p->nall );
 		if ( ok!=BIBL_OK ) return ok;
+		if ( p->all ) {
+			ok = process_alwaysadd( rout, reftype, p );
+			if ( ok!=BIBL_OK ) return ok;
+			ok = process_defaultadd( rout, reftype, p );
+			if ( ok!=BIBL_OK ) return ok;
+		}
 		bibl_addref( bout, rout );
 	}
 	uniqueify_citekeys( bout );
diff --git a/bibutils/biblatexin.c b/bibutils/biblatexin.c
--- a/bibutils/biblatexin.c
+++ b/bibutils/biblatexin.c
@@ -373,6 +373,8 @@
 	if ( tag->len ) {
 		if ( !strcasecmp( tag->data, "author" ) ) return 1;
 		if ( !strcasecmp( tag->data, "editor" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editorb" ) ) return 1;
+		if ( !strcasecmp( tag->data, "editorc" ) ) return 1;
 		if ( !strcasecmp( tag->data, "director" ) ) return 1;
 		if ( !strcasecmp( tag->data, "producer" ) ) return 1;
 		if ( !strcasecmp( tag->data, "execproducer" ) ) return 1;
@@ -381,6 +383,9 @@
 		if ( !strcasecmp( tag->data, "annotator" ) ) return 1;
 		if ( !strcasecmp( tag->data, "commentator" ) ) return 1;
 		if ( !strcasecmp( tag->data, "translator" ) ) return 1;
+		if ( !strcasecmp( tag->data, "foreword" ) ) return 1;
+		if ( !strcasecmp( tag->data, "afterword" ) ) return 1;
+		if ( !strcasecmp( tag->data, "introduction" ) ) return 1;
 	}
 	return 0;
 }
@@ -513,20 +518,6 @@
 	biblatexin_crossref( bin, p );
 }
 
-/*
- * process_names( info, newtag, field, level);
- *
- * split names in author list separated by and's (use '|' character)
- * and add names
- */
-static int
-process_names( fields *info, char *tag, newstr *data, int level, list *asis,
-	list *corps )
-{
-	newstr_findreplace( data, " and ", "|" );
-	return name_add( info, tag, data->data, level, asis, corps );
-}
-
 /* is_utf8_emdash()
  *
  * Internally pages="A---B" will convert --- to a UTF8
@@ -660,49 +651,21 @@
 		return fields_add( info, tag, value, level );
 }
 
-
-/*
- * biblatex has multiple editor fields "editor", "editora", "editorb", "editorc",
- * each of which can be modified from a type of "EDITOR" via "editortype",
- * "editoratype", "editorbtype", "editorctype".
- *
- * Defined types:
- *     "editor"
- *     "collaborator"
- *     "compiler"
- *     "redactor"
- *
- *     "reviser" ?
- *     "founder" ?
- *     "continuator" ?
- *
- *  bibtex-chicago
- *
- *     "director"
- *     "producer"
- *     "conductor"
- *     "none" (for performer)
- */
+/* biblatex drops school field if institution is present */
 static int
-process_editor( fields *bibin, fields *info, newstr *tag, newstr *value, int level, list *asis, list *corps )
+process_subtype( fields *bibin, fields *info, char *tag, char *value, int level )
 {
-	char *editor_fields[] = { "editor", "editora", "editorb", "editorc" };
-	char *editor_types[]  = { "editortype", "editoratype", "editorbtype", "editorctype" };
-	int i, n = 0, ntype, neditors = sizeof( editor_fields ) / sizeof( editor_fields[0] );
-	char *type, *outtag = "EDITOR";
-	for ( i=1; i<neditors; ++i )
-		if ( !strcasecmp( tag->data, editor_fields[i] ) ) n = i;
-	ntype = fields_find( bibin, editor_types[n], LEVEL_ANY );
-	if ( ntype!=-1 ) {
-		type = fields_value( bibin, ntype, FIELDS_CHRP_NOUSE );
-		if ( !strcasecmp( type, "collaborator" ) )  outtag = "COLLABORATOR";
-		else if ( !strcasecmp( type, "compiler" ) ) outtag = "COMPILER";
-		else if ( !strcasecmp( type, "redactor" ) ) outtag = "REDACTOR";
-		else if ( !strcasecmp( type, "director" ) ) outtag = "DIRECTOR";
-		else if ( !strcasecmp( type, "producer" ) ) outtag = "PRODUCER";
-		else if ( !strcasecmp( type, "none" ) )     outtag = "PERFORMER";
+	int ok = 1;
+	if ( !strcasecmp( value, "magazine" ) ) {
+		ok = fields_add( info, "NGENRE", "magazine article", LEVEL_MAIN );
+		if ( !ok ) return 0;
+		ok = fields_add( info, "NGENRE", "magazine", LEVEL_HOST );
+	} else if ( !strcasecmp( value, "newspaper" ) ) {
+		ok = fields_add( info, "NGENRE", "newspaper article", LEVEL_MAIN );
+		if ( !ok ) return 0;
+		ok = fields_add( info, "GENRE", "newspaper", LEVEL_HOST );
 	}
-	return process_names( info, outtag, value, level, asis, corps );
+	return ok;
 }
 
 static int
@@ -967,6 +930,50 @@
 	return ret;
 }
 
+/*
+ * biblatex has multiple editor fields "editor", "editora", "editorb", "editorc",
+ * each of which can be modified from a type of "EDITOR" via "editortype",
+ * "editoratype", "editorbtype", "editorctype".
+ *
+ * Defined types:
+ *     "editor"
+ *     "collaborator"
+ *     "compiler"
+ *     "redactor"
+ *
+ *     "reviser" ?
+ *     "founder" ?
+ *     "continuator" ?
+ *
+ *  bibtex-chicago
+ *
+ *     "director"
+ *     "producer"
+ *     "conductor"
+ *     "none" (for performer)
+ */
+static int
+process_editor( fields *bibin, fields *info, newstr *tag, newstr *value, int level, list *asis, list *corps )
+{
+	char *editor_fields[] = { "editor", "editora", "editorb", "editorc" };
+	char *editor_types[]  = { "editortype", "editoratype", "editorbtype", "editorctype" };
+	int i, n = 0, ntype, neditors = sizeof( editor_fields ) / sizeof( editor_fields[0] );
+	char *type, *outtag = "EDITOR";
+	for ( i=1; i<neditors; ++i )
+		if ( !strcasecmp( tag->data, editor_fields[i] ) ) n = i;
+	ntype = fields_find( bibin, editor_types[n], LEVEL_ANY );
+	if ( ntype!=-1 ) {
+		type = fields_value( bibin, ntype, FIELDS_CHRP_NOUSE );
+		if ( !strcasecmp( type, "collaborator" ) )  outtag = "COLLABORATOR";
+		else if ( !strcasecmp( type, "compiler" ) ) outtag = "COMPILER";
+		else if ( !strcasecmp( type, "redactor" ) ) outtag = "REDACTOR";
+		else if ( !strcasecmp( type, "director" ) ) outtag = "DIRECTOR";
+		else if ( !strcasecmp( type, "producer" ) ) outtag = "PRODUCER";
+		else if ( !strcasecmp( type, "none" ) )     outtag = "PERFORMER";
+	}
+	return biblatex_names( info, outtag, value, level, asis, corps );
+}
+
 int
 biblatexin_convertf( fields *bibin, fields *info, int reftype, param *p,
 		variants *all, int nall )
@@ -1019,17 +1026,17 @@
 			fields_setused( bibin, i );
 			break;
 
-		case BIBTEX_URL:
+		case BT_URL:
 			ok = process_url( info, d->data, level );
 			fields_setused( bibin, i );
 			break;
 
-		case BIBTEX_GENRE:
+		case BT_GENRE:
 			ok = fields_add( info, "NGENRE", d->data, level );
 			fields_setused( bibin, i );
 			break;
 
-		case BIBTEX_EPRINT:
+		case BT_EPRINT:
 			ok = process_eprint( bibin, info, level );
 			fields_setused( bibin, i );
 			break;
@@ -1041,6 +1048,11 @@
 
 		case BLT_SCHOOL:
 			ok = process_school( bibin, info, newtag, d->data, level );
+			fields_setused( bibin, i );
+			break;
+
+		case BLT_SUBTYPE:
+			ok = process_subtype( bibin, info, newtag, d->data, level );
 			fields_setused( bibin, i );
 			break;
 
diff --git a/bibutils/bibtexin.c b/bibutils/bibtexin.c
--- a/bibutils/bibtexin.c
+++ b/bibutils/bibtexin.c
@@ -996,19 +996,19 @@
 			ok = process_file( info, d, level );
 			break;
 
-		case BIBTEX_NOTE:
+		case BT_NOTE:
 			ok = process_note( info, d, level );
 			break;
 
-		case BIBTEX_SENTE:
+		case BT_SENTE:
 			ok = process_sente( info, d, level );
 			break;
 
-		case BIBTEX_URL:
+		case BT_URL:
 			ok = process_url( info, d, level );
 			break;
 
-		case BIBTEX_ORGANIZATION:
+		case BT_ORG:
 			ok = process_organization( bibin, info, d, level );
 			break;
 
diff --git a/bibutils/bibtextypes.c b/bibutils/bibtextypes.c
--- a/bibutils/bibtextypes.c
+++ b/bibutils/bibtextypes.c
@@ -33,13 +33,13 @@
 	{ "abstract",     "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",     "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",     BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",      BT_URL, LEVEL_MAIN },
+	{ "url",          "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",       HOWPUBLISHED, LEVEL_MAIN },
 	{ "doi",          "DOI",       SIMPLE, LEVEL_MAIN },
@@ -64,7 +64,7 @@
 	{ "booktitle",    "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "series",       "TITLE",     TITLE,  LEVEL_HOST },
 	{ "publisher",    "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",      "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "editor",       "EDITOR",    PERSON, LEVEL_MAIN },
 	{ "year",         "YEAR",      SIMPLE, LEVEL_MAIN },
@@ -79,14 +79,14 @@
 	{ "contents",     "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",     BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",     SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",    SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",       BT_URL, LEVEL_MAIN },
+	{ "url",          "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "address",      "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",       HOWPUBLISHED, LEVEL_MAIN },
@@ -123,14 +123,14 @@
 	{ "contents",     "CONTENTS",     SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",          "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",          BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",          BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",          BT_URL, LEVEL_MAIN },
+	{ "url",          "",          BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",          HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",          SIMPLE, LEVEL_MAIN },
@@ -149,7 +149,7 @@
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "year",      "YEAR",      SIMPLE, LEVEL_MAIN },
 	{ "month",     "MONTH",     SIMPLE, LEVEL_MAIN },
@@ -160,14 +160,14 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",  SIMPLE, LEVEL_MAIN },
@@ -205,16 +205,16 @@
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
@@ -236,7 +236,7 @@
 	{ "series",    "TITLE",     TITLE,  LEVEL_SERIES },
 	{ "chapter",   "CHAPTER",   SIMPLE, LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_HOST },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_HOST },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_HOST },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_HOST },
 	{ "year",      "PARTYEAR",  SIMPLE, LEVEL_MAIN },
 	{ "month",     "PARTMONTH", SIMPLE, LEVEL_MAIN },
@@ -252,13 +252,13 @@
 	{ "paper",     "PAPER",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
@@ -295,14 +295,14 @@
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_HOST },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "type",      "GENRE",      SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_HOST },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
@@ -325,7 +325,7 @@
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "series",    "TITLE",     TITLE,  LEVEL_HOST },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "year",      "YEAR",      SIMPLE, LEVEL_MAIN },
 	{ "month",     "MONTH",     SIMPLE, LEVEL_MAIN },
@@ -338,15 +338,15 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
@@ -369,15 +369,15 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "" ,   HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",         SIMPLE, LEVEL_MAIN },
@@ -402,14 +402,14 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "type",         "GENRE",         SIMPLE, LEVEL_MAIN },
@@ -439,15 +439,15 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",       BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",       BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",       BT_URL, LEVEL_MAIN },
+	{ "url",       "",       BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
@@ -464,7 +464,7 @@
 static lookups standard[] = {
 	{ "author",    "AUTHOR",    PERSON, LEVEL_MAIN },
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "institution", "AUTHOR:CORP", SIMPLE, LEVEL_MAIN },
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
@@ -479,10 +479,10 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
@@ -491,7 +491,7 @@
 	{ "number",    "NUMBER",      TITLE,  LEVEL_MAIN },
 	{ "revision",  "REVISION",    TITLE,  LEVEL_MAIN },
 	{ "location",     "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",          "BIBKEY",          SIMPLE, LEVEL_MAIN },
 	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
@@ -519,17 +519,17 @@
 	{ "number",       "NUMBER",      TITLE,  LEVEL_MAIN },
 	{ "contents",     "CONTENTS",    SIMPLE, LEVEL_MAIN },
 	{ "doi",          "DOI",         SIMPLE, LEVEL_MAIN },
-	{ "ftp",          "",        BIBTEX_URL, LEVEL_MAIN },
-	{ "url",          "",        BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",          "",        BT_URL, LEVEL_MAIN },
+	{ "url",          "",        BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",         HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",       "REFNUM",      SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",    SIMPLE, LEVEL_MAIN },
-	{ "note",         "NOTES",       BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",         "NOTES",       BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "keywords",     "KEYWORD",   KEYWORD, LEVEL_MAIN },
 	{ "",            "RESOURCE|text",    ALWAYS, LEVEL_MAIN },
@@ -558,14 +558,14 @@
 	{ "language",  "LANGUAGE",  SIMPLE, LEVEL_MAIN },
 	{ "location",  "LOCATION",  SIMPLE, LEVEL_MAIN },
 	{ "nationality", "NATIONALITY", SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",     BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",      "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "type",       "GENRE",     SIMPLE, LEVEL_MAIN },
@@ -583,7 +583,7 @@
 static lookups electronic[] = {
 	{ "author",    "AUTHOR",    PERSON, LEVEL_MAIN },
 	{ "translator",   "TRANSLATOR",PERSON, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
@@ -596,16 +596,16 @@
 	{ "volume",    "VOLUME",    SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",          "FILEATTACH",SIMPLE, LEVEL_MAIN },
-	{ "sentelink",    "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink",    "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",         "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",    SIMPLE, LEVEL_MAIN },
 	{ "crossref",     "CROSSREF",  SIMPLE, LEVEL_MAIN },
 	{ "location",  "LOCATION",  SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",     BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",      "NOTES",     BT_NOTE, LEVEL_MAIN },
 	{ "annote",       "ANNOTE",    SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "language",  "LANGUAGE",  SIMPLE, LEVEL_MAIN },
@@ -620,7 +620,7 @@
 	{ "title",     "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "booktitle", "TITLE",     TITLE,  LEVEL_MAIN },
 	{ "publisher", "PUBLISHER", SIMPLE, LEVEL_MAIN },
-	{ "organization", "ORGANIZER:CORP", BIBTEX_ORGANIZATION, LEVEL_MAIN },
+	{ "organization", "ORGANIZER:CORP", BT_ORG, LEVEL_MAIN },
 	{ "pages",     "PAGES",     PAGES,  LEVEL_MAIN },
 	{ "address",   "ADDRESS",   SIMPLE, LEVEL_MAIN },
 	{ "editor",    "EDITOR",    PERSON, LEVEL_MAIN },
@@ -630,16 +630,16 @@
 	{ "abstract",  "ABSTRACT",  SIMPLE, LEVEL_MAIN },
 	{ "contents",  "CONTENTS",  SIMPLE, LEVEL_MAIN },
 	{ "doi",       "DOI",       SIMPLE, LEVEL_MAIN },
-	{ "ftp",       "",      BIBTEX_URL, LEVEL_MAIN },
-	{ "url",       "",      BIBTEX_URL, LEVEL_MAIN },
+	{ "ftp",       "",      BT_URL, LEVEL_MAIN },
+	{ "url",       "",      BT_URL, LEVEL_MAIN },
 	{ "pdf",       "FILEATTACH",   SIMPLE, LEVEL_MAIN },
-	{ "sentelink", "FILEATTACH",BIBTEX_SENTE, LEVEL_MAIN },
+	{ "sentelink", "FILEATTACH",BT_SENTE, LEVEL_MAIN },
 	{ "file",      "FILEATTACH",LINKEDFILE,   LEVEL_MAIN },
 	{ "howpublished", "",    HOWPUBLISHED, LEVEL_MAIN },
 	{ "refnum",    "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "crossref",  "CROSSREF",     SIMPLE, LEVEL_MAIN },
 	{ "location",  "LOCATION",     SIMPLE, LEVEL_MAIN },
-	{ "note",      "NOTES",        BIBTEX_NOTE, LEVEL_MAIN },
+	{ "note",      "NOTES",        BT_NOTE, LEVEL_MAIN },
 	{ "annote",    "ANNOTE",       SIMPLE, LEVEL_MAIN },
 	{ "key",       "BIBKEY",       SIMPLE, LEVEL_MAIN },
 	{ "language",  "LANGUAGE",     SIMPLE, LEVEL_MAIN },
diff --git a/bibutils/bltypes.c b/bibutils/bltypes.c
--- a/bibutils/bltypes.c
+++ b/bibutils/bltypes.c
@@ -18,140 +18,145 @@
  * Article in a journal, newspaper, other periodical
  */
 static lookups article[] = {
-	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
-	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
-	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
-	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
-	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
-	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
-	{ "journal",         "TITLE",        TITLE,  LEVEL_HOST },
-	{ "journaltitle",    "TITLE",        TITLE,  LEVEL_HOST },
-	{ "journalsubtitle", "SUBTITLE",     TITLE,  LEVEL_HOST },
-	{ "shortjournal",    "SHORTTITLE",   SIMPLE, LEVEL_HOST },
-	{ "issuetitle",      "TITLE",        TITLE,  LEVEL_SERIES }, /*WRONG*/
-	{ "issuesubtitle",   "SUBTITLE",     TITLE,  LEVEL_SERIES }, /*WRONG*/
-	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
-	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
-	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
-	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
-	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_MAIN },
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "eid",             "EID",          SIMPLE, LEVEL_MAIN },
-	{ "issue",           "ISSUE",        SIMPLE, LEVEL_MAIN },
-	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "day",             "PARTDAY",      SIMPLE, LEVEL_MAIN },
-	{ "month",           "PARTMONTH",    SIMPLE, LEVEL_MAIN },
-	{ "year",            "PARTYEAR",     SIMPLE, LEVEL_MAIN },
-	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN },
-	{ "version",         "VERSION",      SIMPLE, LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "issn",            "ISSN",         SIMPLE, LEVEL_HOST },
-	{ "abstract",        "ABSTRACT",     SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",  BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ "",                "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
-	{ "",                "ISSUANCE|continuing",    ALWAYS, LEVEL_HOST },
-	{ "",                "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
-        { "",                "NGENRE|journal article", ALWAYS, LEVEL_MAIN },
-	{ "",                "GENRE|periodical",       ALWAYS, LEVEL_HOST }
+	{ "author",          "AUTHOR",                 PERSON,      LEVEL_MAIN   },
+	{ "editor",          "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editora",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editorb",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editorc",         "EDITOR",                 BLT_EDITOR,  LEVEL_MAIN   },
+	{ "editortype",      "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editoratype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editorbtype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "editorctype",     "",                       BLT_SKIP,    LEVEL_MAIN   },
+	{ "director",        "DIRECTOR",               PERSON,      LEVEL_MAIN   },
+	{ "producer",        "PRODUCER",               PERSON,      LEVEL_MAIN   },
+	{ "execproducer",    "PRODUCER",               PERSON,      LEVEL_MAIN   },
+	{ "writer",          "AUTHOR",                 PERSON,      LEVEL_MAIN   },
+	{ "redactor",        "REDACTOR",               PERSON,      LEVEL_MAIN   },
+	{ "annotator",       "ANNOTATOR",              PERSON,      LEVEL_MAIN   },
+	{ "commentator",     "COMMENTATOR",            PERSON,      LEVEL_MAIN   },
+	{ "translator",      "TRANSLATOR",             PERSON,      LEVEL_MAIN   },
+	{ "title",           "TITLE",                  TITLE,       LEVEL_MAIN   },
+	{ "subtitle",        "SUBTITLE",               TITLE,       LEVEL_MAIN   },
+	{ "titleaddon",      "TITLEADDON",             TITLE,       LEVEL_MAIN   },
+	{ "journal",         "TITLE",                  TITLE,       LEVEL_HOST   },
+	{ "journaltitle",    "TITLE",                  TITLE,       LEVEL_HOST   },
+	{ "journalsubtitle", "SUBTITLE",               TITLE,       LEVEL_HOST   },
+	{ "shortjournal",    "SHORTTITLE",             SIMPLE,      LEVEL_HOST   },
+	{ "issuetitle",      "TITLE",                  TITLE,       LEVEL_SERIES }, /*WRONG*/
+	{ "issuesubtitle",   "SUBTITLE",               TITLE,       LEVEL_SERIES }, /*WRONG*/
+	{ "language",        "LANGUAGE",               SIMPLE,      LEVEL_MAIN   },
+	{ "origlanguage",    "LANGUAGE",               SIMPLE,      LEVEL_ORIG   },
+	{ "origyear",        "YEAR",                   SIMPLE,      LEVEL_ORIG   },
+	{ "origdate",        "DATE",                   SIMPLE,      LEVEL_ORIG   },
+	{ "origtitle",       "TITLE",                  SIMPLE,      LEVEL_ORIG   },
+	{ "origlocation",    "ADDRESS",                SIMPLE,      LEVEL_ORIG   },
+	{ "origpublisher",   "PUBLISHER",              SIMPLE,      LEVEL_ORIG   },
+	{ "series",          "TITLE",                  SIMPLE,      LEVEL_SERIES },
+	{ "volume",          "VOLUME",                 SIMPLE,      LEVEL_MAIN   },
+	{ "number",          "NUMBER",                 SIMPLE,      LEVEL_MAIN   },
+	{ "eid",             "EID",                    SIMPLE,      LEVEL_MAIN   },
+	{ "issue",           "ISSUE",                  SIMPLE,      LEVEL_MAIN   },
+	{ "date",            "DATE",                   SIMPLE,      LEVEL_MAIN   },   /*WRONG*/
+	{ "day",             "PARTDAY",                SIMPLE,      LEVEL_MAIN   },
+	{ "month",           "PARTMONTH",              SIMPLE,      LEVEL_MAIN   },
+	{ "year",            "PARTYEAR",               SIMPLE,      LEVEL_MAIN   },
+	{ "pages",           "PAGES",                  PAGES,       LEVEL_MAIN   },
+	{ "version",         "EDITION",                SIMPLE,      LEVEL_MAIN   },
+	{ "note",            "NOTES",                  SIMPLE,      LEVEL_MAIN   },
+	{ "annote",          "NOTES",                  SIMPLE,      LEVEL_MAIN   },
+	{ "annotation",      "ANNOTATION",             SIMPLE,      LEVEL_MAIN   },
+	{ "issn",            "ISSN",                   SIMPLE,      LEVEL_HOST   },
+	{ "abstract",        "ABSTRACT",               SIMPLE,      LEVEL_MAIN   },
+	{ "addendum",        "ADDENDUM",               SIMPLE,      LEVEL_MAIN   },
+	{ "doi",             "DOI",                    SIMPLE,      LEVEL_MAIN   },
+	{ "eprint",          "",                       BT_EPRINT,   LEVEL_MAIN   },
+	{ "eprinttype",      "",                       BT_EPRINT,   LEVEL_MAIN   },
+	{ "url",             "",                       BT_URL,      LEVEL_MAIN   },
+	{ "urldate",         "URLDATE",                SIMPLE,      LEVEL_MAIN   },
+	{ "urlday",          "?urlday?",               SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "urlmonth",        "?urlmonth?",             SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "urlyear",         "?urlyear?",              SIMPLE,      LEVEL_MAIN   }, /* WRONG */
+	{ "address",         "ADDRESS",                SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",                 SIMPLE,      LEVEL_MAIN   },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "entrysubtype",    "",                       BLT_SUBTYPE, LEVEL_MAIN   },
+	{ "",                "INTERNAL_TYPE|ARTICLE",  ALWAYS,      LEVEL_MAIN   },
+	{ "",                "ISSUANCE|continuing",    ALWAYS,      LEVEL_HOST   },
+	{ "",                "RESOURCE|text",          ALWAYS,      LEVEL_MAIN   },
+	{ "",                "NGENRE|journal article", DEFAULT,     LEVEL_MAIN   },
+	{ "",                "GENRE|periodical",       DEFAULT,     LEVEL_HOST   }
 };
 
 /* Book */
 
 static lookups book[] = {
-	{ "author",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
-	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "redactor",        "REDACTOR",     PERSON, LEVEL_MAIN },
-	{ "annotator",       "ANNOTATOR",    PERSON, LEVEL_MAIN },
-	{ "commentator",     "COMMENTATOR",  PERSON, LEVEL_MAIN },
-	{ "translator",      "TRANSLATOR",   PERSON, LEVEL_MAIN },
-	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
-	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
-	{ "maintitle",       "TITLE",        TITLE,  LEVEL_HOST },
-	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
-	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
-	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
-	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
-	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
-	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
-	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
-	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
-	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
-	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
-	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
-	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST }, /* WRONG */
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
-	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
-	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
-	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
-	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
-	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
-	{ "",                "ISSUANCE|monographic", ALWAYS, LEVEL_MAIN },
-	{ "",                "GENRE|book",   ALWAYS, LEVEL_MAIN }
+	{ "author",          "AUTHOR",               PERSON,     LEVEL_MAIN },
+	{ "editor",          "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editora",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editorb",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editorc",         "EDITOR",               BLT_EDITOR, LEVEL_MAIN },
+	{ "editortype",      "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editoratype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editorbtype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "editorctype",     "",                     BLT_SKIP,   LEVEL_MAIN },
+	{ "director",        "DIRECTOR",             PERSON,     LEVEL_MAIN },
+	{ "producer",        "PRODUCER",             PERSON,     LEVEL_MAIN },
+	{ "execproducer",    "PRODUCER",             PERSON,     LEVEL_MAIN },
+	{ "writer",          "AUTHOR",               PERSON,     LEVEL_MAIN },
+	{ "redactor",        "REDACTOR",             PERSON,     LEVEL_MAIN },
+	{ "annotator",       "ANNOTATOR",            PERSON,     LEVEL_MAIN },
+	{ "commentator",     "COMMENTATOR",          PERSON,     LEVEL_MAIN },
+	{ "translator",      "TRANSLATOR",           PERSON,     LEVEL_MAIN },
+	{ "introduction",    "INTROAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",          PERSON,     LEVEL_MAIN },
+	{ "title",           "TITLE",                TITLE,      LEVEL_MAIN },
+	{ "subtitle",        "SUBTITLE",             TITLE,      LEVEL_MAIN },
+	{ "titleaddon",      "TITLEADDON",           TITLE,      LEVEL_MAIN },
+	{ "maintitle",       "TITLE",                TITLE,      LEVEL_HOST },
+	{ "mainsubtitle",    "SUBTITLE",             TITLE,      LEVEL_HOST },
+	{ "maintitleaddon",  "TITLEADDON",           TITLE,      LEVEL_HOST },
+	{ "language",        "LANGUAGE",             SIMPLE,     LEVEL_MAIN },
+	{ "year",            "YEAR",                 SIMPLE,     LEVEL_MAIN },
+	{ "month",           "MONTH",                SIMPLE,     LEVEL_MAIN },
+	{ "date",            "DATE",                 SIMPLE,     LEVEL_MAIN },   /*WRONG*/
+	{ "origlanguage",    "LANGUAGE",             SIMPLE,     LEVEL_ORIG },
+	{ "origyear",        "YEAR",                 SIMPLE,     LEVEL_ORIG },
+	{ "origdate",        "DATE",                 SIMPLE,     LEVEL_ORIG },
+	{ "origtitle",       "TITLE",                SIMPLE,     LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",              SIMPLE,     LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",            SIMPLE,     LEVEL_ORIG },
+	{ "volume",          "VOLUME",               SIMPLE,     LEVEL_HOST },
+	{ "part",            "PART",                 SIMPLE,     LEVEL_HOST },
+	{ "edition",         "EDITION",              SIMPLE,     LEVEL_MAIN },
+	{ "volumes",         "NUMVOLUMES",           SIMPLE,     LEVEL_HOST },
+	{ "series",          "TITLE",                SIMPLE,     LEVEL_HOST }, /* WRONG */
+	{ "number",          "NUMBER",               SIMPLE,     LEVEL_MAIN },
+	{ "note",            "NOTES",                SIMPLE,     LEVEL_MAIN },
+	{ "annote",          "NOTES",                SIMPLE,     LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",           SIMPLE,     LEVEL_MAIN },
+	{ "publisher",       "PUBLISHER",            SIMPLE,     LEVEL_MAIN },
+	{ "location",        "ADDRESS",              SIMPLE,     LEVEL_MAIN },
+	{ "isbn",            "ISBN",                 SIMPLE,     LEVEL_MAIN },
+	{ "chapter",         "CHAPTER",              SIMPLE,     LEVEL_MAIN },
+	{ "pages",           "?pages?",              SIMPLE,     LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",          SIMPLE,     LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",             SIMPLE,     LEVEL_MAIN },
+	{ "doi",             "DOI",                  SIMPLE,     LEVEL_MAIN },
+	{ "eprint",          "",                     BT_EPRINT,  LEVEL_MAIN },
+	{ "eprinttype",      "",                     BT_EPRINT,  LEVEL_MAIN },
+	{ "url",             "",                     BT_URL,     LEVEL_MAIN },
+	{ "urldate",         "URLDATE",              SIMPLE,     LEVEL_MAIN },
+	{ "urlday",          "?urlday?",             SIMPLE,     LEVEL_MAIN },
+	{ "urlmonth",        "?urlmonth?",           SIMPLE,     LEVEL_MAIN },
+	{ "urlyear",         "?urlyear?",            SIMPLE,     LEVEL_MAIN },
+	{ "address",         "ADDRESS",              SIMPLE,     LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",               SIMPLE,     LEVEL_MAIN },
+	{ "",                "INTERNAL_TYPE|BOOK",   ALWAYS,     LEVEL_MAIN },
+	{ "",                "RESOURCE|text",        ALWAYS,     LEVEL_MAIN },
+	{ "",                "ISSUANCE|monographic", ALWAYS,     LEVEL_MAIN },
+	{ "",                "GENRE|book",           ALWAYS,     LEVEL_MAIN }
 };
 
 /* Booklet */
@@ -178,25 +183,26 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
+	{ "pages",           "?pages?",      SIMPLE, LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -225,8 +231,8 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
 	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
 	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
@@ -236,6 +242,7 @@
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
 	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
@@ -247,23 +254,24 @@
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "pages",           "?pages?",    SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "pagetotal",       "?pagetotal?",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",    SIMPLE, LEVEL_MAIN },
+	{ "pages",           "?pages?",      SIMPLE, LEVEL_MAIN }, /* WRONG */
+	{ "pagetotal",       "?pagetotal?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -295,8 +303,8 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
 	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
 	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
@@ -310,6 +318,7 @@
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
 	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
@@ -318,25 +327,26 @@
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
 	{ "volumes",         "NUMVOLUMES",   SIMPLE, LEVEL_HOST },
-	{ "series",          "?series?",     SIMPLE, LEVEL_HOST }, /* WRONG */
+	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES+1 }, /* WRONG */
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_HOST },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|INBOOK",    ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -361,10 +371,10 @@
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
 	{ "bookauthor",      "AUTHOR",       PERSON, LEVEL_HOST },
 	{ "booktitle",       "TITLE",        TITLE,  LEVEL_HOST },
 	{ "booksubtitle",    "SUBTITLE",     TITLE,  LEVEL_HOST },
@@ -393,10 +403,11 @@
 	{ "mainsubtitle",    "SUBTITLE",     TITLE,  LEVEL_SERIES },
 	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_SERIES },
 
-	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST+2 }, /* WRONG */
+	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES+1 }, /* WRONG */
 
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
 	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
 	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
 	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
 	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
@@ -406,16 +417,17 @@
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN }, /* WRONG */
-	{ "addendum",        "?addendum?",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|INCOLLECTION",    ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -448,8 +460,8 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_HOST },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_HOST },
 	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
 	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
@@ -468,6 +480,11 @@
 	{ "organization",    "ORGANIZER:CORP", SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
+	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
@@ -475,22 +492,23 @@
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_HOST },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_HOST },
 	{ "isbn",            "ISBN",         SIMPLE, LEVEL_MAIN },
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN }, /* WRONG */
-	{ "addendum",        "?addendnum?",  SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?urlday?",     SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?urlmonth?",   SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?urlyear?",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|INPROCEEDINGS",    ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -520,20 +538,20 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN }, /*WRONG*/
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
 	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
 	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN }, /*WRONG*/
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "series",          "TITLE",        SIMPLE, LEVEL_HOST },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP", SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
@@ -541,16 +559,17 @@
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "?????????",    SIMPLE, LEVEL_MAIN }, /* WRONG */
 	{ "pagetotal",       "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|REPORT",       ALWAYS, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",     ALWAYS, LEVEL_MAIN },
@@ -580,24 +599,25 @@
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "howpublished",    "",       HOWPUBLISHED, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|MISC",       ALWAYS, LEVEL_MAIN },
 };
@@ -624,24 +644,25 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",    SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
         { "",                "RESOURCE|software, multimedia",    ALWAYS, LEVEL_MAIN },
 	{ "",                "NGENRE|web page",       ALWAYS, LEVEL_MAIN },
@@ -657,21 +678,22 @@
 	{ "day",             "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "year",            "YEAR",         SIMPLE, LEVEL_MAIN },
-	{ "version",         "???????",      SIMPLE, LEVEL_MAIN },
-	{ "type",            "GENRE",  BIBTEX_GENRE, LEVEL_MAIN },
+	{ "version",         "EDITION",      SIMPLE, LEVEL_MAIN },
+	{ "type",            "GENRE",  BT_GENRE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "RESOURCE|text",   ALWAYS, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|PATENT",    ALWAYS, LEVEL_MAIN },
@@ -680,53 +702,59 @@
 
 /*
  * An entire issue of a periodical
+ *
+ * "The title of the periodical is given in the title field. If the issue has 
+ * its own title in addition to the main title of the periodical, it goes in 
+ * the issuetitle field. The editor is omissible..."
  */
 static lookups periodical[] = {
-	{ "editor",          "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editora",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorb",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editorc",         "EDITOR",       BLT_EDITOR, LEVEL_MAIN },
-	{ "editortype",      "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editoratype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorbtype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "editorctype",     "",             BLT_SKIP,   LEVEL_MAIN },
-	{ "director",        "DIRECTOR",     PERSON, LEVEL_MAIN },
-	{ "producer",        "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "execproducer",    "PRODUCER",     PERSON, LEVEL_MAIN },
-	{ "writer",          "AUTHOR",       PERSON, LEVEL_MAIN },
-	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
-	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
-	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
-	{ "issuetitle",      "TITLE",        TITLE,  LEVEL_HOST },
-	{ "issuesubtitle",   "SUBTITLE",     TITLE,  LEVEL_HOST },
-	{ "issuetitleaddon", "TITLEADDON",   TITLE,  LEVEL_HOST },
-	{ "series",          "TITLE",        SIMPLE, LEVEL_SERIES },
-	{ "volume",          "VOLUME",       SIMPLE, LEVEL_MAIN },
-	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
-	{ "issue",           "ISSUE",        SIMPLE, LEVEL_MAIN },
-	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
-	{ "day",             "PARTDAY",      SIMPLE, LEVEL_MAIN },
-	{ "month",           "PARTMONTH",    SIMPLE, LEVEL_MAIN },
-	{ "year",            "PARTYEAR",     SIMPLE, LEVEL_MAIN },
-	{ "pages",           "PAGES",        PAGES,  LEVEL_MAIN },
-	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "issn",            "ISSN",         SIMPLE, LEVEL_HOST },
-	{ "addendum",        "?????",        SIMPLE, LEVEL_MAIN },
-	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
-	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
-	{ "urlday",          "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlmonth",        "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "urlyear",         "?????",        SIMPLE, LEVEL_MAIN }, /* WRONG */
-	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
-	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
-	{ "",                "ISSUANCE|continuing",    ALWAYS, LEVEL_MAIN },
-	{ "",                "RESOURCE|text",          ALWAYS, LEVEL_MAIN },
-	{ "",                "GENRE|periodical",       ALWAYS, LEVEL_MAIN }
+	{ "editor",          "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editora",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editorb",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editorc",         "EDITOR",              BLT_EDITOR, LEVEL_MAIN   },
+	{ "editortype",      "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editoratype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editorbtype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "editorctype",     "",                    BLT_SKIP,   LEVEL_MAIN   },
+	{ "director",        "DIRECTOR",            PERSON,     LEVEL_MAIN   },
+	{ "producer",        "PRODUCER",            PERSON,     LEVEL_MAIN   },
+	{ "execproducer",    "PRODUCER",            PERSON,     LEVEL_MAIN   },
+	{ "writer",          "AUTHOR",              PERSON,     LEVEL_MAIN   },
+	{ "title",           "TITLE",               TITLE,      LEVEL_HOST   },
+	{ "subtitle",        "SUBTITLE",            TITLE,      LEVEL_HOST   },
+	{ "titleaddon",      "TITLEADDON",          TITLE,      LEVEL_HOST   },
+	{ "issuetitle",      "TITLE",               TITLE,      LEVEL_MAIN   },
+	{ "issuesubtitle",   "SUBTITLE",            TITLE,      LEVEL_MAIN   },
+	{ "issuetitleaddon", "TITLEADDON",          TITLE,      LEVEL_MAIN   },
+	{ "series",          "TITLE",               SIMPLE,     LEVEL_SERIES },
+	{ "volume",          "VOLUME",              SIMPLE,     LEVEL_MAIN   },
+	{ "number",          "NUMBER",              SIMPLE,     LEVEL_MAIN   },
+	{ "issue",           "ISSUE",               SIMPLE,     LEVEL_MAIN   },
+	{ "date",            "DATE",                SIMPLE,     LEVEL_MAIN   },   /*WRONG*/
+	{ "day",             "PARTDAY",             SIMPLE,     LEVEL_MAIN   },
+	{ "month",           "PARTMONTH",           SIMPLE,     LEVEL_MAIN   },
+	{ "year",            "PARTYEAR",            SIMPLE,     LEVEL_MAIN   },
+	{ "pages",           "PAGES",               PAGES,      LEVEL_MAIN   },
+	{ "note",            "NOTES",               SIMPLE,     LEVEL_MAIN   },
+	{ "annote",          "NOTES",               SIMPLE,     LEVEL_MAIN   },
+	{ "annotation",      "ANNOTATION",          SIMPLE,     LEVEL_MAIN   },
+	{ "issn",            "ISSN",                SIMPLE,     LEVEL_HOST   },
+	{ "addendum",        "ADDENDUM",            SIMPLE,     LEVEL_MAIN   },
+	{ "doi",             "DOI",                 SIMPLE,     LEVEL_MAIN   },
+	{ "eprint",          "",                    BT_EPRINT,  LEVEL_MAIN   },
+	{ "eprinttype",      "",                    BT_EPRINT,  LEVEL_MAIN   },
+	{ "url",             "",                    BT_URL,     LEVEL_MAIN   },
+	{ "urldate",         "URLDATE",             SIMPLE,     LEVEL_MAIN   },
+	{ "urlday",          "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "urlmonth",        "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "urlyear",         "?????",               SIMPLE,     LEVEL_MAIN   }, /* WRONG */
+	{ "address",         "ADDRESS",             SIMPLE,     LEVEL_MAIN   },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
+	{ "refnum",          "REFNUM",              SIMPLE,     LEVEL_MAIN   },
+	{ "",                "ISSUANCE|continuing", ALWAYS,     LEVEL_HOST   },
+	{ "",                "RESOURCE|text",       ALWAYS,     LEVEL_MAIN   },
+	{ "",                "GENRE|issue",         ALWAYS,     LEVEL_MAIN   },
+	{ "",                "GENRE|periodical",    ALWAYS,     LEVEL_HOST   }
 };
 
 static lookups proceedings[] = {
@@ -751,8 +779,8 @@
 	{ "month",           "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "date",            "DATE",         SIMPLE, LEVEL_MAIN },   /*WRONG*/
 	{ "introduction",    "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "foreward",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
-	{ "afterward",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "foreword",        "INTROAUTHOR",  PERSON, LEVEL_MAIN },
+	{ "afterword",       "AFTERAUTHOR",  PERSON, LEVEL_MAIN },
 	{ "title",           "TITLE",        TITLE,  LEVEL_MAIN },
 	{ "subtitle",        "SUBTITLE",     TITLE,  LEVEL_MAIN },
 	{ "titleaddon",      "TITLEADDON",   TITLE,  LEVEL_MAIN },
@@ -761,6 +789,11 @@
 	{ "maintitleaddon",  "TITLEADDON",   TITLE,  LEVEL_HOST },
 	{ "language",        "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "origlanguage",    "LANGUAGE",     SIMPLE, LEVEL_ORIG },
+	{ "origdate",        "DATE",         SIMPLE, LEVEL_ORIG },
+	{ "origyear",        "YEAR",         SIMPLE, LEVEL_ORIG },
+	{ "origtitle",       "TITLE",        SIMPLE, LEVEL_ORIG },
+	{ "origlocation",    "ADDRESS",      SIMPLE, LEVEL_ORIG },
+	{ "origpublisher",   "PUBLISHER",    SIMPLE, LEVEL_ORIG },
 	{ "volume",          "VOLUME",       SIMPLE, LEVEL_HOST },
 	{ "part",            "PART",         SIMPLE, LEVEL_HOST },
 	{ "edition",         "EDITION",      SIMPLE, LEVEL_MAIN },
@@ -769,7 +802,7 @@
 	{ "number",          "NUMBER",       SIMPLE, LEVEL_MAIN },
 	{ "note",            "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",          "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",      "NOTES",        SIMPLE, LEVEL_MAIN },
+	{ "annotation",      "ANNOTATION",   SIMPLE, LEVEL_MAIN },
 	{ "organization",    "ORGANIZER:CORP",SIMPLE, LEVEL_MAIN },
 	{ "publisher",       "PUBLISHER",    SIMPLE, LEVEL_MAIN },
 	{ "location",        "ADDRESS",      SIMPLE, LEVEL_MAIN },
@@ -777,16 +810,17 @@
 	{ "chapter",         "CHAPTER",      SIMPLE, LEVEL_MAIN },
 	{ "pages",           "?????????",    SIMPLE, LEVEL_MAIN }, /* WRONG */
 	{ "pagetotal",       "?????????",    SIMPLE, LEVEL_MAIN },
-	{ "addendum",        "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "addendum",        "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "doi",             "DOI",          SIMPLE, LEVEL_MAIN },
-	{ "eprint",          "",       BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",      "",   BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",             "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "eprint",          "",       BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",      "",   BT_EPRINT, LEVEL_MAIN },
+	{ "url",             "",         BT_URL, LEVEL_MAIN },
 	{ "urldate",         "URLDATE",      SIMPLE, LEVEL_MAIN },
 	{ "urlday",          "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",        "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",         "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "address",         "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",          "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",                "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
         { "",                "RESOURCE|text",       ALWAYS, LEVEL_MAIN },
@@ -801,7 +835,7 @@
 	{ "title",       "TITLE",                TITLE,         LEVEL_MAIN },
 	{ "subtitle",    "SUBTITLE",             TITLE,         LEVEL_MAIN },
 	{ "titleaddon",  "TITLEADDON",           TITLE,         LEVEL_MAIN },
-	{ "type",        "GENRE",                BIBTEX_GENRE,  LEVEL_MAIN },
+	{ "type",        "GENRE",                BT_GENRE,  LEVEL_MAIN },
 	{ "institution", "SPONSOR:ASIS",         SIMPLE,        LEVEL_MAIN },
 	{ "year",        "YEAR",                 SIMPLE,        LEVEL_MAIN },
 	{ "month",       "MONTH",                SIMPLE,        LEVEL_MAIN },
@@ -810,23 +844,24 @@
 	{ "number",      "REPORTNUMBER",         SIMPLE,        LEVEL_MAIN },
 	{ "note",        "NOTES",                SIMPLE,        LEVEL_MAIN },
 	{ "annote",      "NOTES",                SIMPLE,        LEVEL_MAIN },
-	{ "annotation",  "NOTES",                SIMPLE,        LEVEL_MAIN },
-	{ "version",     "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "annotation",  "ANNOTATION",           SIMPLE,        LEVEL_MAIN },
+	{ "version",     "EDITION",              SIMPLE,        LEVEL_MAIN },
 	{ "location",    "ADDRESS",              SIMPLE,        LEVEL_MAIN },
 	{ "isrn",        "ISRN",                 SIMPLE,        LEVEL_MAIN },
 	{ "chapter",     "CHAPTER",              SIMPLE,        LEVEL_MAIN },
 	{ "pages",       "?????????",            SIMPLE,        LEVEL_MAIN }, /* WRONG */
 	{ "pagetotal",   "?????????",            SIMPLE,        LEVEL_MAIN },
-	{ "addendum",    "?????????",            SIMPLE,        LEVEL_MAIN },
+	{ "addendum",    "ADDENDUM",             SIMPLE,        LEVEL_MAIN },
 	{ "doi",         "DOI",                  SIMPLE,        LEVEL_MAIN },
-	{ "eprint",      "",                     BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "eprinttype",  "",                     BIBTEX_EPRINT, LEVEL_MAIN },
-	{ "url",         "",                     BIBTEX_URL,    LEVEL_MAIN },
+	{ "eprint",      "",                     BT_EPRINT, LEVEL_MAIN },
+	{ "eprinttype",  "",                     BT_EPRINT, LEVEL_MAIN },
+	{ "url",         "",                     BT_URL,    LEVEL_MAIN },
 	{ "urldate",     "URLDATE",              SIMPLE,        LEVEL_MAIN },
 	{ "urlday",      "?????????",            SIMPLE,        LEVEL_MAIN },
 	{ "urlmonth",    "?????????",            SIMPLE,        LEVEL_MAIN },
 	{ "urlyear",     "?????????",            SIMPLE,        LEVEL_MAIN },
 	{ "address",     "ADDRESS",              SIMPLE,        LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",      "REFNUM",               SIMPLE,        LEVEL_MAIN },
 	{ "",            "INTERNAL_TYPE|REPORT", ALWAYS,        LEVEL_MAIN },
 	{ "",            "RESOURCE|text",        ALWAYS,        LEVEL_MAIN },
@@ -844,16 +879,17 @@
 	{ "month",        "MONTH",        SIMPLE, LEVEL_MAIN },
 	{ "day",          "DAY",          SIMPLE, LEVEL_MAIN },
 	{ "date",         "DATE",         SIMPLE, LEVEL_MAIN },
-	{ "url",          "",         BIBTEX_URL, LEVEL_MAIN },
+	{ "url",          "",         BT_URL, LEVEL_MAIN },
 	{ "urlday",       "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlmonth",     "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "urlyear",      "?????????",    SIMPLE, LEVEL_MAIN },
 	{ "language",     "LANGUAGE",     SIMPLE, LEVEL_MAIN },
 	{ "note",         "NOTES",        SIMPLE, LEVEL_MAIN },
 	{ "annote",       "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "annotation",   "NOTES",        SIMPLE, LEVEL_MAIN },
-	{ "addendum",     "?????????",    SIMPLE, LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",   SIMPLE, LEVEL_MAIN },
+	{ "addendum",     "ADDENDUM",     SIMPLE, LEVEL_MAIN },
 	{ "address",      "ADDRESS",      SIMPLE, LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",       "REFNUM",       SIMPLE, LEVEL_MAIN },
 	{ "",             "INTERNAL_TYPE|BOOK",    ALWAYS, LEVEL_MAIN },
 	{ "",             "RESOURCE|text",ALWAYS, LEVEL_MAIN },
@@ -874,7 +910,7 @@
 	{ "school",       "DEGREEGRANTOR:ASIS",   BLT_SCHOOL,      LEVEL_MAIN },
 	{ "doi",          "DOI",                  SIMPLE,          LEVEL_MAIN },
 	{ "howpublished", "",                     HOWPUBLISHED,    LEVEL_MAIN },
-	{ "url",          "",                     BIBTEX_URL,      LEVEL_MAIN },
+	{ "url",          "",                     BT_URL,      LEVEL_MAIN },
 	{ "urldate",      "URLDATE",              SIMPLE,          LEVEL_MAIN },
 	{ "urlday",       "?urlday?",             SIMPLE,          LEVEL_MAIN },
 	{ "urlmonth",     "?urlmonth?",           SIMPLE,          LEVEL_MAIN },
@@ -883,8 +919,9 @@
 	{ "location",     "ADDRESS",              SIMPLE,          LEVEL_MAIN },
 	{ "note",         "NOTES",                SIMPLE,          LEVEL_MAIN },
 	{ "annote",       "NOTES",                SIMPLE,          LEVEL_MAIN },
-	{ "annotation",   "NOTES",                SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
 	{ "address",      "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",       "REFNUM",               SIMPLE,          LEVEL_MAIN },
 	{ "",             "INTERNAL_TYPE|THESIS", ALWAYS,          LEVEL_MAIN },
 	{ "",             "RESOURCE|text",        ALWAYS,          LEVEL_MAIN },
@@ -905,7 +942,7 @@
 	{ "school",       "DEGREEGRANTOR:ASIS",   BLT_SCHOOL,      LEVEL_MAIN },
 	{ "doi",          "DOI",                  SIMPLE,          LEVEL_MAIN },
 	{ "howpublished", "",                     HOWPUBLISHED,    LEVEL_MAIN },
-	{ "url",          "",                     BIBTEX_URL,      LEVEL_MAIN },
+	{ "url",          "",                     BT_URL,      LEVEL_MAIN },
 	{ "urldate",      "URLDATE",              SIMPLE,          LEVEL_MAIN },
 	{ "urlday",       "?urlday?",             SIMPLE,          LEVEL_MAIN },
 	{ "urlmonth",     "?urlmonth?",           SIMPLE,          LEVEL_MAIN },
@@ -914,8 +951,9 @@
 	{ "location",     "ADDRESS",              SIMPLE,          LEVEL_MAIN },
 	{ "note",         "NOTES",                SIMPLE,          LEVEL_MAIN },
 	{ "annote",       "NOTES",                SIMPLE,          LEVEL_MAIN },
-	{ "annotation",   "NOTES",                SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",           SIMPLE,          LEVEL_MAIN },
 	{ "address",      "ADDRESS",              SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",       "REFNUM",               SIMPLE,          LEVEL_MAIN },
 	{ "",             "INTERNAL_TYPE|THESIS", ALWAYS,          LEVEL_MAIN },
 	{ "",             "RESOURCE|text",        ALWAYS,          LEVEL_MAIN },
@@ -937,7 +975,7 @@
 	{ "school",       "DEGREEGRANTOR:ASIS",    BLT_SCHOOL,      LEVEL_MAIN },
 	{ "doi",          "DOI",                   SIMPLE,          LEVEL_MAIN },
 	{ "howpublished", "",                      HOWPUBLISHED,    LEVEL_MAIN },
-	{ "url",          "",                      BIBTEX_URL,      LEVEL_MAIN },
+	{ "url",          "",                      BT_URL,      LEVEL_MAIN },
 	{ "urldate",      "URLDATE",               SIMPLE,          LEVEL_MAIN },
 	{ "urlday",       "?urlday?",              SIMPLE,          LEVEL_MAIN },
 	{ "urlmonth",     "?urlmonth?",            SIMPLE,          LEVEL_MAIN },
@@ -946,8 +984,9 @@
 	{ "location",     "ADDRESS",               SIMPLE,          LEVEL_MAIN },
 	{ "note",         "NOTES",                 SIMPLE,          LEVEL_MAIN },
 	{ "annote",       "NOTES",                 SIMPLE,          LEVEL_MAIN },
-	{ "annotation",   "NOTES",                 SIMPLE,          LEVEL_MAIN },
+	{ "annotation",   "ANNOTATION",            SIMPLE,          LEVEL_MAIN },
 	{ "address",      "ADDRESS",               SIMPLE,          LEVEL_MAIN },
+	{ "hyphenation",     "LANGCATALOG",            SIMPLE,      LEVEL_MAIN   },
 	{ "refnum",       "REFNUM",                SIMPLE,          LEVEL_MAIN },
 	{ "",             "INTERNAL_TYPE|THESIS",  ALWAYS,          LEVEL_MAIN },
 	{ "",             "RESOURCE|text",         ALWAYS,          LEVEL_MAIN },
diff --git a/bibutils/iso639_2.c b/bibutils/iso639_2.c
new file mode 100644
--- /dev/null
+++ b/bibutils/iso639_2.c
@@ -0,0 +1,645 @@
+/*
+ * iso639-2 language codes
+ */
+#include <string.h>
+#include "iso639_2.h"
+
+typedef struct {
+	char *code1;
+	char *code2;
+	unsigned char main;
+	char *language;
+} iso639_2_t;
+
+static iso639_2_t iso639_2[] = {
+	{ "abk", "",    1, "Abkhazian" },
+	{ "ace", "",    1, "Achenese" },
+	{ "ace", "",    1, "Achinese" },
+	{ "ach", "",    1, "Acoli" },
+	{ "ada", "",    1, "Adangme" },
+	{ "ady", "",    1, "Adygei" },
+	{ "ady", "",    1, "Adyghe" },
+	{ "aar", "",    1, "Afar" },
+	{ "afh", "",    1, "Afrihili" },
+	{ "afr", "",    1, "Afrikaans" },
+	{ "afa", "",    1, "Afroasiatic languages" },
+	{ "ain", "",    1, "Ainu" },
+	{ "aka", "",    1, "Akan" },
+	{ "akk", "",    1, "Akkadian" },
+	{ "alb", "sqi", 1, "Albanian" },
+	{ "gsw", "",    1, "Alemannic" },
+	{ "ale", "",    1, "Aleut" },
+	{ "alg", "",    1, "Algonquian languages" },
+	{ "gsw", "",    1, "Alsatian" },
+	{ "alt", "",    1, "Altai, Southern" },
+	{ "tut", "",    1, "Altaic languages" },
+	{ "amh", "",    1, "Amharic" },
+	{ "egy", "",    1, "Ancient Egyptian" },
+	{ "grc", "",    1, "Ancient Greek" },
+	{ "anp", "",    1, "Angika" },
+	{ "apa", "",    1, "Apache languages" },
+	{ "arc", "",    1, "Aramaic, Imperial" },
+	{ "arc", "",    1, "Aramaic, Official" },
+	{ "arp", "",    1, "Arapaho" },
+	{ "arw", "",    1, "Arawak" },
+	{ "arg", "",    1, "Argonese" },
+	{ "arm", "hye", 1, "Armenian" },
+	{ "rup", "",    1, "Aromanian" },
+	{ "art", "",    1, "Artificial languages" },
+	{ "rup", "",    1, "Arumanian" },
+	{ "asm", "",    1, "Assamese" },
+	{ "ast", "",    1, "Asturian" },
+	{ "ast", "",    1, "Asturleonese" },
+	{ "ath", "",    1, "Athabaskan languages" },
+	{ "aus", "",    1, "Australian languages" },
+	{ "map", "",    1, "Austronesian languages" },
+	{ "ava", "",    1, "Avaric" },
+	{ "ave", "",    1, "Avestan" },
+	{ "awa", "",    1, "Awadhi" },
+	{ "aze", "",    1, "Azerbaijani" },
+	{ "ast", "",    1, "Bable" },
+	{ "ban", "",    1, "Balinese" },
+	{ "bat", "",    1, "Baltic languages" },
+	{ "bal", "",    1, "Baluchi" },
+	{ "bam", "",    1, "Bambara" },
+	{ "bai", "",    1, "Bamileke languages" },
+	{ "bad", "",    1, "Banda languages" },
+	{ "bnt", "",    1, "Bantu languages" },
+	{ "bas", "",    1, "Basa" },
+	{ "bak", "",    1, "Bashkir" },
+	{ "baq", "eus", 1, "Basque" },
+	{ "bej", "",    1, "Bedawiyet" },
+	{ "bej", "",    1, "Beja" },
+	{ "bel", "",    1, "Belarusian" },
+	{ "bem", "",    1, "Bemba" },
+	{ "ben", "",    1, "Bengali" },
+	{ "ber", "",    1, "Berber languages" },
+	{ "bho", "",    1, "Bhojpuri" },
+	{ "bih", "",    1, "Bihari languages" },
+	{ "bik", "",    1, "Bikol" },
+	{ "byn", "",    1, "Bilin" },
+	{ "bin", "",    1, "Bini" },
+	{ "bis", "",    1, "Bislama" },
+	{ "bla", "",    1, "Blackfoot" },
+	{ "byn", "",    1, "Blin" },
+	{ "zbl", "",    1, "Blissymbols" },
+	{ "bos", "",    1, "Bosnian" },
+	{ "bra", "",    1, "Braj" },
+	{ "btk", "",    1, "Bratak languages" },
+	{ "bre", "",    1, "Breton" },
+	{ "bug", "",    1, "Buginese" },
+	{ "bul", "",    1, "Bulgarian" },
+	{ "bua", "",    1, "Buriat" },
+	{ "bur", "mya", 1, "Burmese" },
+	{ "cad", "",    1, "Caddo" },
+	{ "spa", "",    0, "Castilian" },
+	{ "cat", "",    1, "Catalan" },
+	{ "cau", "",    1, "Caucasian languages" },
+	{ "ceb", "",    1, "Cebuano" },
+	{ "cel", "",    1, "Celtic languages" },
+	{ "cai", "",    1, "Central American Indian languages" },
+	{ "khm", "",    1, "Central Khmer" },
+	{ "chg", "",    1, "Chagatai" },
+	{ "cmc", "",    1, "Chamic languages" },
+	{ "cha", "",    1, "Chamorro" },
+	{ "che", "",    1, "Chechen" },
+	{ "chr", "",    1, "Cherokee" },
+	{ "nya", "",    1, "Chewa" },
+	{ "chy", "",    1, "Cheyenne" },
+	{ "chb", "",    1, "Chibcha" },
+	{ "nya", "",    1, "Chichewa" },
+	{ "chi", "zho", 1, "Chinese" },
+	{ "chn", "",    1, "Chinook Jargon" },
+	{ "chp", "",    1, "Chipewyan" },
+	{ "cho", "",    1, "Choctaw" },
+	{ "zha", "",    1, "Chuang" },
+	{ "chu", "",    1, "Church Slavic" },
+	{ "chu", "",    1, "Church Slavonic" },
+	{ "chk", "",    1, "Chuukese" },
+	{ "chv", "",    1, "Chuvash" },
+	{ "kbd", "",    1, "Circassian" },
+	{ "nwc", "",    1, "Classical Nepal Bhasa" },
+	{ "nwc", "",    1, "Classical Newari" },
+	{ "syc", "",    1, "Classical Syriac" },
+	{ "rar", "",    1, "Cook Islands Maori" },
+	{ "cop", "",    1, "Coptic" },
+	{ "cor", "",    1, "Cornish" },
+	{ "cos", "",    1, "Corsican" },
+	{ "cre", "",    1, "Cree" },
+	{ "mus", "",    1, "Creek" },
+	{ "crp", "",    1, "creoles and pidgins" },
+	{ "cpe", "",    1, "creoles and pidgins, English-based" },
+	{ "cpf", "",    1, "creoles and pidgins, French-based" },
+	{ "cpp", "",    1, "creoles and pidgins, Portuguese-based" },
+	{ "crh", "",    1, "Crimean Tartar" },
+	{ "crh", "",    1, "Crimean Turkish" },
+	{ "hrv", "",    1, "Croatian" },
+	{ "cus", "",    1, "Cushitic languages" },
+	{ "cze", "ces", 1, "Czech" },
+	{ "dak", "",    1, "Dakota" },
+	{ "dan", "",    1, "Danish" },
+	{ "dar", "",    1, "Dargwa" },
+	{ "del", "",    1, "Delaware" },
+	{ "chp", "",    1, "Dene Suline" },
+	{ "div", "",    1, "Dhivehi" },
+	{ "din", "",    1, "Dinka" },
+	{ "div", "",    1, "Divehi" },
+	{ "doi", "",    1, "Dogri" },
+	{ "dgr", "",    1, "Dogrib" },
+	{ "dra", "",    1, "Dravidian languages" },
+	{ "dua", "",    1, "Duala" },
+	{ "dut", "",    1, "Dutch" },
+	{ "dum", "",    1, "Dutch, Middle" },
+	{ "dyu", "",    1, "Dyula" },
+	{ "dzo", "",    1, "Dzongkha" },
+	{ "frs", "",    1, "Eastern Frisian" },
+	{ "bin", "",    1, "Edo" },
+	{ "efi", "",    1, "Efik" },
+	{ "egy", "",    1, "Egyptian (Ancient)" },
+	{ "eka", "",    1, "Ekajuk" },
+	{ "elx", "",    1, "Elamite" },
+	{ "eng", "",    1, "English" },
+	{ "enm", "",    0, "English, Middle" },
+	{ "ang", "",    0, "English, Old" },
+	{ "myv", "",    1, "Erzya" },
+	{ "epo", "",    1, "Esperanto" },
+	{ "est", "",    1, "Estonian" },
+	{ "ewe", "",    1, "Ewe" },
+	{ "ewo", "",    1, "Ewondo" },
+	{ "fan", "",    1, "Fang" },
+	{ "fat", "",    1, "Fanti" },
+	{ "fao", "",    1, "Faroese" },
+	{ "fij", "",    1, "Fijian" },
+	{ "fil", "",    1, "Filipino" },
+	{ "fin", "",    1, "Finnish" },
+	{ "fiu", "",    1, "Finno-Ugric languages" },
+	{ "dut", "",    1, "Flemish" },
+	{ "fon", "",    1, "Fon" },
+	{ "fre", "fra", 1, "French" },
+	{ "frm", "",    0, "French, Middle" },
+	{ "fro", "",    0, "French, Old" },
+	{ "frs", "",    1, "Frisian, Eastern" },
+	{ "frr", "",    1, "Frisian, Northern" },
+	{ "fry", "",    1, "Frisian, Western" },
+	{ "fur", "",    1, "Friulian" },
+	{ "ful", "",    1, "Fulah" },
+	{ "gaa", "",    1, "Ga" },
+	{ "gla", "",    1, "Gaelic" },
+	{ "car", "",    1, "Galibi Carib" },
+	{ "lug", "",    1, "Ganda" },
+	{ "gay", "",    1, "Gayo" },
+	{ "gba", "",    1, "Gbaya" },
+	{ "gez", "",    1, "Ge'ez" },
+	{ "geo", "kat", 1, "Georgian" },
+	{ "ger", "deu", 1, "German" },
+	{ "nds", "",    1, "German, Low" },
+	{ "gmh", "",    1, "German, Middle High" },
+	{ "goh", "",    1, "German, Old High" },
+	{ "gem", "",    1, "Germanic languages" },
+	{ "kik", "",    1, "Gikuyu" },
+	{ "gil", "",    1, "Gilbertese" },
+	{ "gon", "",    1, "Gondi" },
+	{ "gor", "",    1, "Gorontalo" },
+	{ "got", "",    1, "Gothic" },
+	{ "grb", "",    1, "Grebo" },
+	{ "grc", "",    1, "Greek, Ancient" },
+	{ "gre", "ell", 1, "Greek, Modern" },
+	{ "kal", "",    1, "Greenlandic" },
+	{ "grn", "",    1, "Guarani" },
+	{ "guj", "",    1, "Gujarati" },
+	{ "gwi", "",    1, "Gwich'in" },
+	{ "hai", "",    1, "Haida" },
+	{ "hat", "",    1, "Haitian" },
+	{ "hat", "",    1, "Haitian Creole" },
+	{ "hau", "",    1, "Hausa" },
+	{ "haw", "",    1, "Hawaiian" },
+	{ "heb", "",    1, "Hebrew" },
+	{ "hil", "",    1, "Hiligaynon" },
+	{ "him", "",    1, "Himachali languages" },
+	{ "hin", "",    1, "Hindi" },
+	{ "hmo", "",    1, "Hiri Motu" },
+	{ "hit", "",    1, "Hittite" },
+	{ "hmn", "",    1, "Hmong" },
+	{ "hun", "",    1, "Hungarian" },
+	{ "hup", "",    1, "Hupa" },
+	{ "iba", "",    1, "Iban" },
+	{ "ice", "isl", 1, "Icelandic" },
+	{ "ido", "",    1, "Ido" },
+	{ "ibo", "",    1, "Igbo" },
+	{ "ijo", "",    1, "Ijo languages" },
+	{ "ilo", "",    1, "Iloko" },
+	{ "arc", "",    1, "Imperial Aramaic" },
+	{ "smn", "",    1, "Inari Sami" },
+	{ "inc", "",    1, "Indic languages" },
+	{ "ine", "",    1, "Indo-European languages" },
+	{ "ind", "",    1, "Indonesian" },
+	{ "inh", "",    1, "Ingush" },
+	{ "ina", "",    1, "Interlingua" },
+	{ "ile", "",    1, "Interlingue, Occidental" },
+	{ "iku", "",    1, "Inuktitut" },
+	{ "ipk", "",    1, "Inupiaq" },
+	{ "ira", "",    1, "Iranian languages" },
+	{ "mga", "",    1, "Irish, Middle" },
+	{ "sga", "",    1, "Irish, Old" },
+	{ "iro", "",    1, "Iroquoian languages" },
+	{ "ita", "",    1, "Italian" },
+	{ "jpn", "",    1, "Japanese" },
+	{ "jav", "",    1, "Javanese" },
+	{ "kac", "",    1, "Jingpho" },
+	{ "jrb", "",    1, "Judaeo-Arabic" },
+	{ "jpr", "",    1, "Judaeo-Persian" },
+	{ "kab", "",    1, "Kabyle" },
+	{ "kac", "",    1, "Kachin" },
+	{ "kal", "",    1, "Kalaallisut" },
+	{ "xal", "",    1, "Kalmyk" },
+	{ "kam", "",    1, "Kamba" },
+	{ "kan", "",    1, "Kannada" },
+	{ "kau", "",    1, "Kanuri" },
+	{ "pam", "",    1, "Kapampangan" },
+	{ "kaa", "",    1, "Kara-Kalpak" },
+	{ "krc", "",    1, "Karachay-Balkar" },
+	{ "krl", "",    1, "Karelian" },
+	{ "kar", "",    1, "Karen languages" },
+	{ "kas", "",    1, "Kashmiri" },
+	{ "csb", "",    1, "Kashubian" },
+	{ "kaw", "",    1, "Kawi" },
+	{ "kaz", "",    1, "Kazakh" },
+	{ "kha", "",    1, "Khasi" },
+	{ "khi", "",    1, "Khoisan languages" },
+	{ "kho", "",    1, "Khotanese" },
+	{ "kik", "",    1, "Kikuyu" },
+	{ "kmb", "",    1, "Kimbundu" },
+	{ "kin", "",    1, "Kinyarwanda" },
+	{ "kir", "",    1, "Kirghiz" },
+	{ "gil", "",    1, "Kiribati" },
+	{ "tlh", "",    1, "Klingon" },
+	{ "kom", "",    1, "Komi" },
+	{ "kon", "",    1, "Kongo" },
+	{ "kok", "",    1, "Konkani" },
+	{ "kor", "",    1, "Korean" },
+	{ "kos", "",    1, "Kosraean" },
+	{ "kpe", "",    1, "Kpelle" },
+	{ "kro", "",    1, "Kru languages" },
+	{ "kua", "",    1, "Kuanyama" },
+	{ "kum", "",    1, "Kumyk" },
+	{ "kur", "",    1, "Kurdish" },
+	{ "kru", "",    1, "Kurukh" },
+	{ "kut", "",    1, "Kutenai" },
+	{ "kua", "",    1, "Kwanyama" },
+	{ "kir", "",    1, "Kyrgyz" },
+	{ "lad", "",    1, "Ladino" },
+	{ "lah", "",    1, "Lahnda" },
+	{ "lam", "",    1, "Lamba" },
+	{ "day", "",    1, "Land Dayak languages" },
+	{ "lao", "",    1, "Lao" },
+	{ "lat", "",    1, "Latin" },
+	{ "lav", "",    1, "Latvian" },
+	{ "ast", "",    1, "Leonese" },
+	{ "ltz", "",    1, "Letzeburgesch" },
+	{ "lez", "",    1, "Lezghian" },
+	{ "lim", "",    1, "Limburgan" },
+	{ "lim", "",    1, "Limburger" },
+	{ "lim", "",    1, "Limburgish" },
+	{ "lin", "",    1, "Lingala" },
+	{ "lit", "",    1, "Lithuanian" },
+	{ "jbo", "",    1, "Lojban" },
+	{ "nds", "",    1, "Low German" },
+	{ "nds", "",    1, "Low Saxon" },
+	{ "dsb", "",    1, "Lower Sorbian" },
+	{ "loz", "",    1, "Lozi" },
+	{ "lub", "",    1, "Luba-Katanga" },
+	{ "lua", "",    1, "Luba-Lulua" },
+	{ "lui", "",    1, "Luiseno" },
+	{ "smj", "",    1, "Lule Sami" },
+	{ "lun", "",    1, "Lunda" },
+	{ "luo", "",    1, "Luo" },
+	{ "luo", "",    1, "Luo (Kenya and Tanzania)" },
+	{ "lus", "",    1, "Lushai" },
+	{ "ltz", "",    1, "Luxembourgish" },
+	{ "mas", "",    1, "Maasai" },
+	{ "rup", "",    1, "Macedo-Romanian" },
+	{ "mac", "mkd", 1, "Macedonian" },
+	{ "mad", "",    1, "Madurese" },
+	{ "mag", "",    1, "Magahi" },
+	{ "mai", "",    1, "Maithili" },
+	{ "mak", "",    1, "Makasar" },
+	{ "mlg", "",    1, "Malagasy" },
+	{ "may", "msa", 1, "Malay" },
+	{ "mal", "",    1, "Malayalam" },
+	{ "div", "",    1, "Maldivian" },
+	{ "mlt", "",    1, "Maltese" },
+	{ "mnc", "",    1, "Manchu" },
+	{ "mdr", "",    1, "Mandar" },
+	{ "man", "",    1, "Mandingo" },
+	{ "mni", "",    1, "Manipuri" },
+	{ "mno", "",    1, "Manobo languages" },
+	{ "glv", "",    1, "Manx" },
+	{ "mao", "mri", 1, "Maori" },
+	{ "arn", "",    1, "Mapuche" },
+	{ "arn", "",    1, "Mapudungun" },
+	{ "mar", "",    1, "Marathi" },
+	{ "chm", "",    1, "Mari" },
+	{ "mah", "",    1, "Marshallese" },
+	{ "mwr", "",    1, "Marwari" },
+	{ "myn", "",    1, "Mayan languages" },
+	{ "men", "",    1, "Mende" },
+	{ "mic", "",    1, "Mi'kmaq" },
+	{ "mic", "",    1, "Micmac" },
+	{ "dum", "",    1, "Middle Dutch" },
+	{ "enm", "",    1, "Middle English" },
+	{ "frm", "",    1, "Middle French" },
+	{ "gmh", "",    1, "Middle High German" },
+	{ "mga", "",    1, "Middle Irish" },
+	{ "pal", "",    1, "Middle Persian" },
+	{ "min", "",    1, "Minangkabau" },
+	{ "mwl", "",    1, "Mirandese" },
+	{ "gre", "ell", 1, "Modern Greek" },
+	{ "moh", "",    1, "Mohawk" },
+	{ "mdf", "",    1, "Moksha" },
+	{ "mkh", "",    1, "Mon-Khmer languages" },
+	{ "lol", "",    1, "Mongo" },
+	{ "mon", "",    1, "Mongolian" },
+	{ "mos", "",    1, "Mossi" },
+	{ "mul", "",    1, "Multiple languages" },
+	{ "mun", "",    1, "Munda languages" },
+	{ "nqo", "",    1, "N'Ko" },
+	{ "nah", "",    1, "Nahuatl" },
+	{ "nau", "",    1, "Nauruan" },
+	{ "nav", "",    1, "Navaho" },
+	{ "nav", "",    1, "Navajo" },
+	{ "ndo", "",    1, "Ndonga" },
+	{ "nap", "",    1, "Neapolitan" },
+	{ "new", "",    1, "Nepal Bhasa" },
+	{ "nep", "",    1, "Nepali" },
+	{ "new", "",    1, "Newari" },
+	{ "nia", "",    1, "Nias" },
+	{ "nic", "",    1, "Niger-Congo languages" },
+	{ "ssa", "",    1, "Nilo-Saharan languages" },
+	{ "niu", "",    1, "Niuean" },
+	{ "nog", "",    1, "Nogai" },
+	{ "non", "",    0, "Norse, Old" },
+	{ "nai", "",    1, "North American Indian languages" },
+	{ "frr", "",    1, "Northern Frisian" },
+	{ "nde", "",    1, "Northern Ndebele" },
+	{ "sme", "",    1, "Northern Sami" },
+	{ "nso", "",    1, "Northern Sotho" },
+	{ "nob", "",    1, "Norwegian Bokmaal" },
+	{ "nno", "",    1, "Norwegian Nynorsk" },
+	{ "zxx", "",    1, "Not linguistic content; not applicable" },
+	{ "nub", "",    1, "Nubian languages" },
+	{ "iii", "",    1, "Nuosu" },
+	{ "nym", "",    1, "Nyamwezi" },
+	{ "nya", "",    1, "Nyanja" },
+	{ "nyn", "",    1, "Nyankole" },
+	{ "nyr", "",    1, "Nyoro" },
+	{ "nzi", "",    1, "Nzima" },
+	{ "oci", "",    1, "Occitan" },
+	{ "pro", "",    0, "Occitan, Old" },
+	{ "arc", "",    1, "Official Aramaic" },
+	{ "xal", "",    1, "Oirat" },
+	{ "oji", "",    1, "Ojibwa" },
+	{ "chu", "",    1, "Old Bulgarian" },
+	{ "chu", "",    1, "Old Church Slavonic" },
+	{ "ang", "",    1, "Old English" },
+	{ "fro", "",    1, "Old French" },
+	{ "goh", "",    1, "Old High German" },
+	{ "sga", "",    1, "Old Irish" },
+	{ "nwc", "",    1, "Old Newari" },
+	{ "non", "",    1, "Old Norse" },
+	{ "pro", "",    1, "Old Occitan" },
+	{ "peo", "",    1, "Old Persian" },
+	{ "pro", "",    1, "Old Provencal" },
+	{ "chu", "",    1, "Old Slavonic" },
+	{ "ori", "",    1, "Oriya" },
+	{ "orm", "",    1, "Oromo" },
+	{ "osa", "",    1, "Osage" },
+	{ "oss", "",    1, "Ossetian" },
+	{ "oss", "",    1, "Ossetic" },
+	{ "oto", "",    1, "Otomian languages" },
+	{ "ota", "",    1, "Ottoman Turkish" },
+	{ "pal", "",    1, "Pahlavi" },
+	{ "pau", "",    1, "Palauan" },
+	{ "pli", "",    1, "Pali" },
+	{ "pam", "",    1, "Pampanga" },
+	{ "pag", "",    1, "Pangasinan" },
+	{ "pan", "",    1, "Panjabi" },
+	{ "pap", "",    1, "Papiamento" },
+	{ "paa", "",    1, "Papuan languages" },
+	{ "pus", "",    1, "Pashto" },
+	{ "pus", "",    1, "Pashto language" },
+	{ "nso", "",    1, "Pedi" },
+	{ "per", "fas", 1, "Persian" },
+	{ "pal", "",    0, "Persian, Middle" },
+	{ "peo", "",    0, "Persian, Old" },
+	{ "phi", "",    1, "Philippine languages" },
+	{ "phn", "",    1, "Phoenician" },
+	{ "fil", "",    0, "Pilipino" },
+	{ "pon", "",    1, "Pohnpeian" },
+	{ "pol", "",    1, "Polish" },
+	{ "por", "",    1, "Portuguese" },
+	{ "pra", "",    1, "Prakit" },
+	{ "pro", "",    0, "Provencal, Old" },
+	{ "pan", "",    1, "Punjabi" },
+	{ "que", "",    1, "Quechua" },
+	{ "raj", "",    1, "Rajasthani" },
+	{ "rap", "",    1, "Rapanui" },
+	{ "rar", "",    1, "Rarotongan" },
+	{ "roa", "",    1, "Romance languages" },
+	{ "rum", "ron", 1, "Romanian" },
+	{ "roh", "",    1, "Romansh" },	
+	{ "rom", "",    1, "Romany" },
+	{ "run", "",    1, "Rundi" },
+	{ "rus", "",    1, "Russian" },
+	{ "kho", "",    1, "Sakan" },
+	{ "sal", "",    1, "Salishan languages" },
+	{ "sam", "",    1, "Samaritan Aramaic" },
+	{ "smi", "",    1, "Sami languages" },
+	{ "smo", "",    1, "Samoan" },
+	{ "sad", "",    1, "Sandawe" },
+	{ "sag", "",    1, "Sango" },
+	{ "san", "",    1, "Sanskrit" },
+	{ "sat", "",    1, "Santali" },
+	{ "srd", "",    1, "Sardinian" },
+	{ "sas", "",    1, "Sasak" },
+	{ "nds", "",    1, "Saxon, Low" },
+	{ "sco", "",    1, "Scots" },
+	{ "gla", "",    1, "Scottish Gaelic" },
+	{ "sel", "",    1, "Selkup" },
+	{ "sem", "",    1, "Semitic languages" },
+	{ "nso", "",    1, "Sepedi" },
+	{ "srp", "",    1, "Serbian" },
+	{ "srr", "",    1, "Serer" },
+	{ "shn", "",    1, "Shan" },
+	{ "sna", "",    1, "Shona" },
+	{ "iii", "",    1, "Sichuan Yi" },
+	{ "scn", "",    1, "Sicilian" },
+	{ "sid", "",    1, "Sidamo" },
+	{ "sgn", "",    1, "Sign languages" },
+	{ "bla", "",    1, "Siksika" },
+	{ "snd", "",    1, "Sindhi" },
+	{ "sin", "",    1, "Sinhala" },
+	{ "sin", "",    1, "Sinhalese" },
+	{ "sit", "",    1, "Sino-Tibetan languages" },
+	{ "sio", "",    1, "Siouan languages" },
+	{ "sms", "",    1, "Skolt Sami" },
+	{ "den", "",    1, "Slave (Athapascan)" },
+	{ "sla", "",    1, "Slavic languages" },
+	{ "slo", "slk", 1, "Slovak" },
+	{ "slv", "",    1, "Slovenian" },
+	{ "sog", "",    1, "Sogdian" },
+	{ "som", "",    1, "Somali" },
+	{ "son", "",    1, "Songhay languages" },
+	{ "snk", "",    1, "Soninke" },
+	{ "wen", "",    1, "Sorbian languages" },
+	{ "dsb", "",    1, "Sorbian, Lower" },
+	{ "hsb", "",    1, "Sorbian, Upper" },
+	{ "sai", "",    1, "South American Indian languages" },
+	{ "alt", "",    1, "Southern Altai" },
+	{ "nbl", "",    1, "Southern Ndebele" },
+	{ "sma", "",    1, "Southern Sami" },
+	{ "sot", "",    1, "Southern Sotho" },
+	{ "spa", "",    1, "Spanish" },
+	{ "srn", "",    1, "Sranan Tongo" },
+	{ "zgh", "",    1, "Standard Moroccan Tamazight" },
+	{ "suk", "",    1, "Sukuma" },
+	{ "sux", "",    1, "Sumerian" },
+	{ "sun", "",    1, "Sundanese" },
+	{ "sus", "",    1, "Susu" },
+	{ "swa", "",    1, "Swahili" },
+	{ "ssw", "",    1, "Swati" },
+	{ "swe", "",    1, "Swedish" },
+	{ "gsw", "",    1, "Swiss German" },
+	{ "syr", "",    1, "Syriac" },
+	{ "tgl", "",    1, "Tagalog" },
+	{ "tah", "",    1, "Tahitian" },
+	{ "tai", "",    1, "Tai languages" },
+	{ "tgk", "",    1, "Tajik" },
+	{ "tmh", "",    1, "Tamashek" },
+	{ "tam", "",    1, "Tamil" },
+	{ "tat", "",    1, "Tatar" },
+	{ "tel", "",    1, "Telugu" },
+	{ "ter", "",    1, "Tereno" },
+	{ "tet", "",    1, "Tetum" },
+	{ "tha", "",    1, "Thai" },
+	{ "tib", "bod", 1, "Tibetan" },
+	{ "tig", "",    1, "Tigre" },
+	{ "tir", "",    1, "Tigrinya" },
+	{ "tem", "",    1, "Time" },
+	{ "tiv", "",    1, "Tiv" },
+	{ "tli", "",    1, "Tlingit" },
+	{ "tpi", "",    1, "Tok Pisin" },
+	{ "tkl", "",    1, "Tokelau" },
+	{ "tog", "",    1, "Tonga (Nyasa)" },
+	{ "ton", "",    1, "Tonga (Tonga Islands)" },
+	{ "tsi", "",    1, "Tsimshian" },
+	{ "tso", "",    1, "Tsonga" },
+	{ "tsn", "",    1, "Tswana" },
+	{ "tum", "",    1, "Tumbuka" },
+	{ "tup", "",    1, "Tupian languages" },
+	{ "tur", "",    1, "Turkish" },
+	{ "ota", "",    1, "Turkish, Ottoman" },
+	{ "tuk", "",    1, "Turkmen" },
+	{ "tvl", "",    1, "Tuvalu" },
+	{ "tyv", "",    1, "Tuvinian" },
+	{ "twi", "",    1, "Twi" },
+	{ "udm", "",    1, "Udmurt" },
+	{ "uga", "",    1, "Ugaritic" },
+	{ "uig", "",    1, "Uighur" },
+	{ "ukr", "",    1, "Ukranian" },
+	{ "umb", "",    1, "Umbundu" },
+	{ "mis", "",    1, "Uncoded languages" },
+	{ "und", "",    1, "Undetermined language" },
+	{ "hsb", "",    1, "Upper Sorbian" },
+	{ "urd", "",    1, "Urdu" },
+	{ "uig", "",    1, "Uyghur" },
+	{ "uzb", "",    1, "Uzbek" },
+	{ "vai", "",    1, "Vai" },
+	{ "cat", "",    1, "Valencian" },
+	{ "ven", "",    1, "Venda" },
+	{ "vie", "",    1, "Vietnamese" },
+	{ "vol", "",    1, "Volapuk" },
+	{ "vot", "",    1, "Voltic" },
+	{ "wak", "",    1, "Wakashan languages" },
+	{ "wln", "",    1, "Walloon" },
+	{ "war", "",    1, "Waray-Waray" },
+	{ "was", "",    1, "Washo" },
+	{ "wel", "cym", 1, "Welsh" },
+	{ "fry", "",    1, "Western Frisian" },
+	{ "wal", "",    1, "Wolaitta" },
+	{ "wal", "",    1, "Wolaytta" },
+	{ "wol", "",    1, "Wolof" },
+	{ "xho", "",    1, "Xhosa" },
+	{ "sah", "",    1, "Yakut" },
+	{ "yao", "",    1, "Yao" },
+	{ "yap", "",    1, "Yapese" },
+	{ "yid", "",    1, "Yidish" },
+	{ "yor", "",    1, "Yoruba" },
+	{ "ypk", "",    1, "Yupik languages" },
+	{ "znd", "",    1, "Zande languages" },
+	{ "zap", "",    1, "Zapotec" },
+	{ "zza", "",    1, "Zaza" },
+	{ "zza", "",    1, "Zazaki" },
+	{ "zen", "",    1, "Zenaga" },
+	{ "zha", "",    1, "Zhuang" },
+	{ "zul", "",    1, "Zulu" },
+	{ "zun", "",    1, "Zuni" },
+};
+static int niso639_2= sizeof( iso639_2 ) / sizeof( iso639_2[0] );
+
+char *
+iso639_2_from_code( char *code )
+{
+	int i;
+	for ( i=0; i<niso639_2; ++i ) {
+		if ( !iso639_2[i].main ) continue;
+		if ( !strcasecmp( iso639_2[i].code1, code ) )
+			return iso639_2[i].language;
+		if ( iso639_2[i].code2[0]!='\0' && !strcasecmp( iso639_2[i].code2, code ) )
+			return iso639_2[i].language;
+	}
+	return NULL;
+}
+
+char *
+iso639_2_from_language( char *lang )
+{
+	int i, n;
+	for ( i=0; i<niso639_2; ++i ) {
+		n = strcasecmp( iso639_2[i].language, lang );
+		if ( n==0 ) return iso639_2[i].code1;
+		if ( n > 0 ) return NULL;
+	}
+	return NULL;
+}
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static int
+check_alphabetical( void )
+{
+	char *l1, *l2;
+	int i, ret = 1;
+	l1 = iso639_2[0].language;
+	for ( i=0; i<niso639_2-1; ++i ) {
+		l2 = iso639_2[i+1].language;
+		if ( strcasecmp( l1, l2 ) >= 0 ) {
+			fprintf( stderr, "Swap '%s' and '%s'\n", l1, l2 );
+			ret = 0;
+		}
+		l1 = l2;
+	}
+	return ret;
+}
+
+int
+main( int argc, char *argv[] )
+{
+	int ok;
+	ok = check_alphabetical();
+	return EXIT_SUCCESS;
+}
+
+#endif
diff --git a/bibutils/iso639_2.h b/bibutils/iso639_2.h
new file mode 100644
--- /dev/null
+++ b/bibutils/iso639_2.h
@@ -0,0 +1,10 @@
+/*
+ * iso639-2 language codes
+ */
+#ifndef ISO639_2_H
+#define ISO639_2_H
+
+extern char * iso639_2_from_code( char *code );
+extern char * iso639_2_from_language( char *lang );
+
+#endif
diff --git a/bibutils/medin.c b/bibutils/medin.c
--- a/bibutils/medin.c
+++ b/bibutils/medin.c
@@ -15,6 +15,7 @@
 #include "xml.h"
 #include "xml_encoding.h"
 #include "medin.h"
+#include "iso639_2.h"
 #include "bibutils.h"
 
 void
@@ -206,7 +207,20 @@
 	newstr_free( &tmp );
 }
 
-
+/* <Langauge>eng</Language>
+ */
+static int
+medin_language( xml *node, fields *info, int level )
+{
+	char *code, *language;
+	int ok;
+	code = xml_data( node );
+	if ( !code ) return 1;
+	language = iso639_2_from_code( code );
+	if ( language ) ok = fields_add( info, "LANGUAGE", language, level );
+	else ok = fields_add( info, "LANGUAGE", code, level );
+	return ok;
+}
 
 /* <Journal>
  *    <ISSN>0027-8424</ISSN>
@@ -248,12 +262,13 @@
 		{ "Year",            NULL, NULL, "PARTYEAR",   1 },
 		{ "Month",           NULL, NULL, "PARTMONTH",  1 },
 		{ "Day",             NULL, NULL, "PARTDAY",    1 },
-		{ "Language",        NULL, NULL, "LANGUAGE",   1 },
 	};
 	int nc = sizeof( c ) / sizeof( c[0] );;
 	if ( xml_hasdata( node ) && !medin_doconvert( node, info, c, nc ) ) {
 		if ( xml_tagexact( node, "MedlineDate" ) )
 			medin_medlinedate( info, xml_data( node ), 1 );
+		if ( xml_tagexact( node, "Language" ) )
+			medin_language( node, info, 1 );
 	}
 	if ( node->down ) medin_journal1( node->down, info );
 	if ( node->next ) medin_journal1( node->next, info );
@@ -463,6 +478,8 @@
 		medin_abstract( node->down, info );
 	else if ( xml_tagexact( node, "AuthorList" ) )
 		medin_authorlist( node, info );
+	else if ( xml_tagexact( node, "Language" ) )
+		medin_language( node, info, 0 );
 	else if ( xml_tagexact( node, "Affiliation" ) )
 		fields_add( info, "ADDRESS", xml_data( node ), 0 );
 	if ( node->next ) medin_article( node->next, info );
diff --git a/bibutils/modsin.c b/bibutils/modsin.c
--- a/bibutils/modsin.c
+++ b/bibutils/modsin.c
@@ -472,10 +472,24 @@
 }
 
 static void
+modsin_languager( xml *node, fields *info, int level )
+{
+	if ( xml_tag_attrib( node, "languageTerm", "type", "text" ) ) {
+		if ( node->value && node->value->len )
+			fields_add( info, "LANGUAGE", node->value->data, level );
+	}
+	if ( node->next ) modsin_languager( node->next, info, level );
+}
+
+static void
 modsin_language( xml *node, fields *info, int level )
 {
+	/* Old versions of MODS had <language>English</language> */
 	if ( node->value && node->value->len )
 		fields_add( info, "LANGUAGE", node->value->data, level );
+
+	/* New versions of MODS have <language><languageTerm>English</languageTerm></language> */
+	if ( node->down ) modsin_languager( node->down, info, level );
 }
 
 static void
diff --git a/bibutils/modsout.c b/bibutils/modsout.c
--- a/bibutils/modsout.c
+++ b/bibutils/modsout.c
@@ -13,6 +13,7 @@
 #include "newstr.h"
 #include "newstr_conv.h"
 #include "fields.h"
+#include "iso639_2.h"
 #include "utf8.h"
 #include "modsout.h"
 #include "modstypes.h"
@@ -82,6 +83,15 @@
 }
 
 static void
+output_tab6( FILE *outptr, int level, char *tag, char *aname, char *avalue,
+		char *bname, char *bvalue, char *data, int cr )
+{
+	output_tab0( outptr, level );
+	fprintf( outptr, "<%s %s=\"%s\" %s=\"%s\">%s</%s>", tag,aname,avalue,bname,bvalue,data,tag);
+	if ( cr ) fprintf( outptr, "\n" );
+}
+
+static void
 output_fill2( FILE *outptr, int level, char *tag, fields *f, int n, int cr )
 {
 	char *value;
@@ -229,39 +239,35 @@
 {
 	convert   names[] = {
 	  { "author",                              "AUTHOR",          MARC_AUTHORITY },
-	  { "writer",                              "WRITER",          MARC_AUTHORITY },
-	  { "artist",                              "ARTIST",          MARC_AUTHORITY },
-	  { "cartographer",                        "CARTOGRAPHER",    MARC_AUTHORITY },
-	  { "commentator",                         "COMMENTATOR",     NO_AUTHORITY   },
-	  { "degree grantor",                      "DEGREEGRANTOR",   MARC_AUTHORITY },
-	  { "director",                            "DIRECTOR",        MARC_AUTHORITY },
 	  { "editor",                              "EDITOR",          MARC_AUTHORITY },
-	  { "inventor",                            "INVENTOR",        MARC_AUTHORITY },
-	  { "organizer of meeting",                "ORGANIZER",       MARC_AUTHORITY },
-	  { "patent holder",                       "ASSIGNEE",        MARC_AUTHORITY },
-	  { "performer",                           "PERFORMER",       MARC_AUTHORITY },
-	  { "recipient",                           "RECIPIENT",       MARC_AUTHORITY },
-	  { "redactor",                            "REDACTOR",        NO_AUTHORITY   },
-	  { "reporter",                            "REPORTER",        NO_AUTHORITY   },
-	  { "translator",                          "TRANSLATOR",      MARC_AUTHORITY },
-	  { "event",                               "EVENT",           NO_AUTHORITY   },
-	  { "sponsor",                             "SPONSOR",         MARC_AUTHORITY },
+	  { "annotator",                           "ANNOTATOR",       MARC_AUTHORITY },
+	  { "artist",                              "ARTIST",          MARC_AUTHORITY },
 	  { "author",                              "2ND_AUTHOR",      MARC_AUTHORITY },
 	  { "author",                              "3RD_AUTHOR",      MARC_AUTHORITY },
 	  { "author",                              "SUB_AUTHOR",      MARC_AUTHORITY },
 	  { "author",                              "COMMITTEE",       MARC_AUTHORITY },
 	  { "author",                              "COURT",           MARC_AUTHORITY },
 	  { "author",                              "LEGISLATIVEBODY", MARC_AUTHORITY },
-	  { "annotator",                           "ANNOTATOR",       MARC_AUTHORITY },
-	  { "commentator",                         "COMMENTATOR",     MARC_AUTHORITY },
-	  { "author of introduction, etc.",        "INTROAUTHOR",     MARC_AUTHORITY },
 	  { "author of afterword, colophon, etc.", "AFTERAUTHOR",     MARC_AUTHORITY },
-	  { "compiler",                            "COMPILER",        MARC_AUTHORITY },
+	  { "author of introduction, etc.",        "INTROAUTHOR",     MARC_AUTHORITY },
+	  { "cartographer",                        "CARTOGRAPHER",    MARC_AUTHORITY },
 	  { "collaborator",                        "COLLABORATOR",    MARC_AUTHORITY },
-	  { "redactor",                            "REDACTOR",        MARC_AUTHORITY },
+	  { "commentator",                         "COMMENTATOR",     MARC_AUTHORITY },
+	  { "compiler",                            "COMPILER",        MARC_AUTHORITY },
+	  { "degree grantor",                      "DEGREEGRANTOR",   MARC_AUTHORITY },
 	  { "director",                            "DIRECTOR",        MARC_AUTHORITY },
-	  { "producer",                            "PRODUCER",        MARC_AUTHORITY },
+	  { "event",                               "EVENT",           NO_AUTHORITY   },
+	  { "inventor",                            "INVENTOR",        MARC_AUTHORITY },
+	  { "organizer of meeting",                "ORGANIZER",       MARC_AUTHORITY },
+	  { "patent holder",                       "ASSIGNEE",        MARC_AUTHORITY },
 	  { "performer",                           "PERFORMER",       MARC_AUTHORITY },
+	  { "producer",                            "PRODUCER",        MARC_AUTHORITY },
+	  { "recipient",                           "RECIPIENT",       MARC_AUTHORITY },
+	  { "redactor",                            "REDACTOR",        MARC_AUTHORITY },
+	  { "reporter",                            "REPORTER",        MARC_AUTHORITY },
+	  { "sponsor",                             "SPONSOR",         MARC_AUTHORITY },
+	  { "translator",                          "TRANSLATOR",      MARC_AUTHORITY },
+	  { "writer",                              "WRITER",          MARC_AUTHORITY },
 	};
 	int i, n, nfields, ntypes = sizeof( names ) / sizeof( convert );
 	int f_asis, f_corp, f_conf;
@@ -416,17 +422,36 @@
 }
 
 static void
+output_language_core( fields *f, int n, FILE *outptr, int level )
+{
+	char *lang, *code;
+	lang = fields_value( f, n, FIELDS_CHRP );
+	code = iso639_2_from_language( lang );
+	output_tab1( outptr, level, "<language>\n" );
+	output_fill4( outptr, increment_level(level,1),
+		"languageTerm", "type", "text", f, n, 1 );
+	if ( code ) {
+		output_tab6( outptr, increment_level(level,1),
+			"languageTerm", "type", "code", "authority", "iso639-2b",
+			code, 1 );
+	}
+	output_tab1( outptr, level, "</language>\n" );
+}
+
+static void
 output_language( fields *f, FILE *outptr, int level )
 {
-	int n = fields_find( f, "LANGUAGE", level );
-	output_fill2( outptr, level, "language", f, n, 1 );
+	int n;
+	n = fields_find( f, "LANGUAGE", level );
+	if ( n!=-1 )
+		output_language_core( f, n, outptr, level );
 }
 
 static void
 output_description( fields *f, FILE *outptr, int level )
 {
 	int n = fields_find( f, "DESCRIPTION", level );
-	if (n != -1) {
+	if ( n!=-1 ) {
 		output_tab1( outptr, level, "<physicalDescription>\n" );
 		output_fill2( outptr, increment_level(level,1), "note", f, n, 1 );
 		output_tab1( outptr, level, "</physicalDescription>\n" );
@@ -613,6 +638,20 @@
 }
 
 static void
+output_recordInfo( fields *f, FILE *outptr, int level )
+{
+	int n;
+	n = fields_find( f, "LANGCATALOG", level );
+	if ( n!=-1 ) {
+		output_tab1( outptr, level, "<recordInfo>\n" );
+		output_tab1( outptr, increment_level(level,1), "<languageOfCataloging>\n" );
+		output_language_core( f, n, outptr, increment_level(level,2) );
+		output_tab1( outptr, increment_level(level,1), "</languageOfCataloging>\n" );
+		output_tab1( outptr, level, "</recordInfo>\n" );
+	}
+}
+
+static void
 output_genre( fields *f, FILE *outptr, int level )
 {
 	int i, ismarc, n;
@@ -678,29 +717,31 @@
 }
 
 static void
+output_annotation( fields *f, FILE *outptr, int level )
+{
+	int n = fields_find( f, "ANNOTATION", level );
+	output_fill4( outptr, level, "note", "type", "annotation", f, n, 1 );
+}
+
+static void
+output_addendum( fields *f, FILE *outptr, int level )
+{
+	int n = fields_find( f, "ADDENDUM", level );
+	output_fill4( outptr, level, "note", "type", "addendum", f, n, 1 );
+}
+
+static void
 output_timescited( fields *f, FILE *outptr, int level )
 {
 	int n = fields_find( f, "TIMESCITED", level );
-	char *value;
-	if ( n!=-1 ) {
-		value = fields_value( f, n, FIELDS_CHRP );
-		output_tab0( outptr, level );
-		fprintf( outptr, "<note>Times Cited: %s</note>\n", value );
-		fields_setused( f, n );
-	}
+	output_fill4( outptr, level, "note", "type", "times cited", f, n, 1 );
 }
 
 static void
 output_indexkey( fields *f, FILE *outptr, int level )
 {
 	int n = fields_find( f, "BIBKEY", level );
-	char *value;
-	if ( n!=-1 ) {
-		value = fields_value( f, n, FIELDS_CHRP );
-		output_tab0( outptr, level );
-		fprintf( outptr, "<note>Key: %s</note>\n", value );
-		fields_setused( f, n );
-	}
+	output_fill4( outptr, level, "note", "type", "bibliography key", f, n, 1 );
 }
 
 static void
@@ -737,6 +778,7 @@
 		{ "isi",       "ISIREFNUM", 0 },
 		{ "accessnum", "ACCESSNUM", 0 },
 		{ "jstor",     "JSTOR",     0 },
+		{ "isrn",      "ISRN",      0 },
 	};
 	int n, ntypes = sizeof( sn_types ) / sizeof( sn_types[0] );
 	int found, i, nfields;
@@ -883,12 +925,16 @@
 	}
 	output_abs(        f, outptr, level );
 	output_timescited( f, outptr, level );
+	output_annotation( f, outptr, level );
+	output_addendum  ( f, outptr, level );
 	output_indexkey(   f, outptr, level );
 	output_toc(        f, outptr, level );
 	output_key(        f, outptr, level );
 	output_sn(         f, outptr, level );
 	output_url(        f, outptr, level );
 	output_part(       f, outptr, level );
+
+	output_recordInfo( f, outptr, level );
 }
 
 static void
diff --git a/bibutils/reftypes.h b/bibutils/reftypes.h
--- a/bibutils/reftypes.h
+++ b/bibutils/reftypes.h
@@ -10,32 +10,33 @@
 #define REFTYPES_H
 
 /* Reftypes handled by core code */
-#define ALWAYS              (0)
-#define DEFAULT             (1)
+#define ALWAYS          (0)
+#define DEFAULT         (1)
 
 /* Reftypes to be handled by converters */
-#define SIMPLE              (2)
-#define TYPE                (3)
-#define PERSON              (4)
-#define DATE                (5)
-#define PAGES               (6)
-#define SERIALNO            (7)
-#define TITLE               (8)
-#define NOTES               (9)
-#define DOI                 (10)
-#define HOWPUBLISHED        (11)
-#define LINKEDFILE          (12)
-#define KEYWORD             (13)
-#define BIBTEX_URL          (14)
-#define BIBTEX_NOTE         (15)
-#define BIBTEX_SENTE        (16)
-#define BIBTEX_GENRE        (17)
-#define BIBTEX_EPRINT       (18)
-#define BIBTEX_ORGANIZATION (19)
-#define BLT_THESIS_TYPE     (20)
-#define BLT_SCHOOL          (21)
-#define BLT_EDITOR          (22)
-#define BLT_SKIP            (23)
+#define SIMPLE          (2)
+#define TYPE            (3)
+#define PERSON          (4)
+#define DATE            (5)
+#define PAGES           (6)
+#define SERIALNO        (7)
+#define TITLE           (8)
+#define NOTES           (9)
+#define DOI             (10)
+#define HOWPUBLISHED    (11)
+#define LINKEDFILE      (12)
+#define KEYWORD         (13)
+#define BT_URL          (14) /* Bibtex URL */
+#define BT_NOTE         (15) /* Bibtex Note */
+#define BT_SENTE        (16) /* Bibtex 'Sente' */
+#define BT_GENRE        (17) /* Bibtex Genre */
+#define BT_EPRINT       (18) /* Bibtex 'Eprint' */
+#define BT_ORG          (19) /* Bibtex Organization */
+#define BLT_THESIS_TYPE (20) /* Biblatex Thesis Type */
+#define BLT_SCHOOL      (21) /* Biblatex School */
+#define BLT_EDITOR      (22) /* Biblatex Editor */
+#define BLT_SUBTYPE     (23) /* Biblatex entrysubtype */
+#define BLT_SKIP        (24) /* Biblatex Skip Entry */
 
 typedef struct {
 	char *oldstr;
diff --git a/hs-bibutils.cabal b/hs-bibutils.cabal
--- a/hs-bibutils.cabal
+++ b/hs-bibutils.cabal
@@ -1,5 +1,5 @@
 name:               hs-bibutils
-version:            4.16
+version:            4.17
 homepage:           http://gorgias.mine.nu/repos/hs-bibutils/
 
 synopsis:           Haskell bindings to bibutils, the bibliography
@@ -45,23 +45,23 @@
     bibutils/gb18030.h bibutils/gb18030_enumeration.c bibutils/is_ws.c
     bibutils/intlis.h bibutils/intlis.c bibutils/is_ws.h
     bibutils/isiin.c bibutils/isiin.h bibutils/isiout.c
-    bibutils/isiout.h bibutils/isitypes.c bibutils/latex.c
-    bibutils/latex.h bibutils/list.c bibutils/list.h bibutils/marc.c
-    bibutils/marc.h bibutils/medin.c bibutils/medin.h
-    bibutils/modsin.c bibutils/modsin.h bibutils/modsout.c
-    bibutils/modsout.h bibutils/modstypes.c bibutils/modstypes.h
-    bibutils/mycvout.c bibutils/name.c bibutils/name.h
-    bibutils/newstr.c bibutils/newstr.h bibutils/newstr_conv.c
-    bibutils/newstr_conv.h bibutils/reftypes.c bibutils/reftypes.h
-    bibutils/risin.c bibutils/risin.h bibutils/risout.c
-    bibutils/risout.h bibutils/ristypes.c bibutils/vplist.c
-    bibutils/vplist.h bibutils/serialno.c bibutils/serialno.h
-    bibutils/strsearch.c bibutils/strsearch.h bibutils/title.c
-    bibutils/title.h bibutils/unicode. bibutils/unicode.c
-    bibutils/utf8.c bibutils/utf8.h bibutils/wordin.c
-    bibutils/wordin.h bibutils/wordout.c bibutils/wordout.h
-    bibutils/xml.c bibutils/xml.h bibutils/xml_encoding.c
-    bibutils/xml_encoding.h
+    bibutils/iso639_2.c bibutils/iso639_2.h bibutils/isiout.h
+    bibutils/isitypes.c bibutils/latex.c bibutils/latex.h
+    bibutils/list.c bibutils/list.h bibutils/marc.c bibutils/marc.h
+    bibutils/medin.c bibutils/medin.h bibutils/modsin.c
+    bibutils/modsin.h bibutils/modsout.c bibutils/modsout.h
+    bibutils/modstypes.c bibutils/modstypes.h bibutils/mycvout.c
+    bibutils/name.c bibutils/name.h bibutils/newstr.c
+    bibutils/newstr.h bibutils/newstr_conv.c bibutils/newstr_conv.h
+    bibutils/reftypes.c bibutils/reftypes.h bibutils/risin.c
+    bibutils/risin.h bibutils/risout.c bibutils/risout.h
+    bibutils/ristypes.c bibutils/vplist.c bibutils/vplist.h
+    bibutils/serialno.c bibutils/serialno.h bibutils/strsearch.c
+    bibutils/strsearch.h bibutils/title.c bibutils/title.h
+    bibutils/unicode. bibutils/unicode.c bibutils/utf8.c
+    bibutils/utf8.h bibutils/wordin.c bibutils/wordin.h
+    bibutils/wordout.c bibutils/wordout.h bibutils/xml.c
+    bibutils/xml.h bibutils/xml_encoding.c bibutils/xml_encoding.h
 
 library
     exposed-modules:  Text.Bibutils
@@ -83,15 +83,15 @@
         bibutils/endout.c bibutils/endtypes.c bibutils/endxmlin.c
         bibutils/entities.c bibutils/fields.c bibutils/gb18030.c
         bibutils/intlist.c bibutils/is_ws.c bibutils/isiin.c
-        bibutils/isiout.c bibutils/isitypes.c bibutils/latex.c
-        bibutils/list.c bibutils/marc.c bibutils/medin.c
-        bibutils/modsin.c bibutils/modsout.c bibutils/modstypes.c
-        bibutils/name.c bibutils/newstr.c bibutils/newstr_conv.c
-        bibutils/reftypes.c bibutils/risin.c bibutils/risout.c
-        bibutils/ristypes.c bibutils/vplist.c bibutils/serialno.c
-        bibutils/strsearch.c bibutils/title.c bibutils/unicode.c
-        bibutils/utf8.c bibutils/wordin.c bibutils/wordout.c
-        bibutils/xml.c bibutils/xml_encoding.c
+        bibutils/isiout.c bibutils/isitypes.c bibutils/iso639_2.c
+        bibutils/latex.c bibutils/list.c bibutils/marc.c
+        bibutils/medin.c bibutils/modsin.c bibutils/modsout.c
+        bibutils/modstypes.c bibutils/name.c bibutils/newstr.c
+        bibutils/newstr_conv.c bibutils/reftypes.c bibutils/risin.c
+        bibutils/risout.c bibutils/ristypes.c bibutils/vplist.c
+        bibutils/serialno.c bibutils/strsearch.c bibutils/title.c
+        bibutils/unicode.c bibutils/utf8.c bibutils/wordin.c
+        bibutils/wordout.c bibutils/xml.c bibutils/xml_encoding.c
 
     if impl(ghc >= 6.10)
        build-depends: base >= 4, syb
