Index: trunk/ippdb/src/ippdb.c
===================================================================
--- trunk/ippdb/src/ippdb.c	(revision 9044)
+++ trunk/ippdb/src/ippdb.c	(revision 9054)
@@ -4619,10 +4619,10 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "255")) {
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, "Primary Key", "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
         psFree(md);
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "255")) {
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, "Primary Key", "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
         psFree(md);
@@ -5123,10 +5123,10 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "255")) {
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, "Primary Key", "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
         psFree(md);
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "255")) {
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, "Primary Key", "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
         psFree(md);
@@ -5587,5 +5587,5 @@
 static void pzPendingImfileRowFree(pzPendingImfileRow *object);
 
-pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
+pzPendingImfileRow *pzPendingImfileRowAlloc(const char *exp_id, const char *camera, const char *telescope, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
 {
     pzPendingImfileRow *object;
@@ -5595,4 +5595,6 @@
 
     object->exp_id = psStringCopy(exp_id);
+    object->camera = psStringCopy(camera);
+    object->telescope = psStringCopy(telescope);
     object->bytes = bytes;
     object->md5sum = psStringCopy(md5sum);
@@ -5607,4 +5609,6 @@
 {
     psFree(object->exp_id);
+    psFree(object->camera);
+    psFree(object->telescope);
     psFree(object->md5sum);
     psFree(object->class);
@@ -5629,4 +5633,14 @@
         return false;
     }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, "Primary Key", "255")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, "Primary Key", "255")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "bytes", 0, NULL, 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bytes");
@@ -5667,5 +5681,5 @@
 }
 
-bool pzPendingImfileInsert(psDB * dbh, const char *exp_id, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
+bool pzPendingImfileInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, psS32 bytes, const char *md5sum, const char *class, const char *class_id, const char *uri)
 {
     psMetadata      *md;
@@ -5675,4 +5689,14 @@
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, camera)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, telescope)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
         psFree(md);
         return false;
@@ -5724,5 +5748,5 @@
     return deleted;
 }
-bool pzPendingImfilePop(psDB *dbh, char **exp_id, psS32 *bytes, char **md5sum, char **class, char **class_id, char **uri)
+bool pzPendingImfilePop(psDB *dbh, char **exp_id, char **camera, char **telescope, psS32 *bytes, char **md5sum, char **class, char **class_id, char **uri)
 {
     psArray         *rowSet;
@@ -5774,4 +5798,16 @@
         return false;
     }
+    *camera = psMetadataLookupPtr(&status, row, "camera");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
+        psFree(row);
+        return false;
+    }
+    *telescope = psMetadataLookupPtr(&status, row, "telescope");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
+        psFree(row);
+        return false;
+    }
     *bytes = psMetadataLookupS32(&status, row, "bytes");
     if (!status) {
@@ -5812,5 +5848,5 @@
 bool pzPendingImfileInsertObject(psDB *dbh, pzPendingImfileRow *object)
 {
-    return pzPendingImfileInsert(dbh, object->exp_id, object->bytes, object->md5sum, object->class, object->class_id, object->uri);
+    return pzPendingImfileInsert(dbh, object->exp_id, object->camera, object->telescope, object->bytes, object->md5sum, object->class, object->class_id, object->uri);
 }
 
@@ -5829,4 +5865,6 @@
 {
     char            exp_id[256];
+    char            camera[256];
+    char            telescope[256];
     psS32           bytes;
     char            md5sum[256];
@@ -5835,10 +5873,10 @@
     char            uri[256];
 
-    if (!pzPendingImfilePop(dbh, (char **)&exp_id, &bytes, (char **)&md5sum, (char **)&class, (char **)&class_id, (char **)&uri)) {
+    if (!pzPendingImfilePop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, &bytes, (char **)&md5sum, (char **)&class, (char **)&class_id, (char **)&uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return pzPendingImfileRowAlloc(exp_id, bytes, md5sum, class, class_id, uri);
+    return pzPendingImfileRowAlloc(exp_id, camera, telescope, bytes, md5sum, class, class_id, uri);
 }
 
@@ -5944,4 +5982,14 @@
         return NULL;
     }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, object->camera)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
+        psFree(md);
+        return NULL;
+    }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, object->telescope)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
+        psFree(md);
+        return NULL;
+    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "bytes", 0, NULL, object->bytes)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item bytes");
@@ -5977,4 +6025,6 @@
     bool            status;
     char            *exp_id;
+    char            *camera;
+    char            *telescope;
     psS32           bytes;
     char            *md5sum;
@@ -5988,4 +6038,14 @@
         return false;
     }
+    camera = psMetadataLookupPtr(&status, md, "camera");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
+        return false;
+    }
+    telescope = psMetadataLookupPtr(&status, md, "telescope");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
+        return false;
+    }
     bytes = psMetadataLookupS32(&status, md, "bytes");
     if (!status) {
@@ -6014,5 +6074,5 @@
     }
 
-    return pzPendingImfileRowAlloc(exp_id, bytes, md5sum, class, class_id, uri);
+    return pzPendingImfileRowAlloc(exp_id, camera, telescope, bytes, md5sum, class, class_id, uri);
 }
 psArray *pzPendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -6121,5 +6181,5 @@
 static void newExpRowFree(newExpRow *object);
 
-newExpRow *newExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
+newExpRow *newExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
 {
     newExpRow       *object;
@@ -6128,4 +6188,5 @@
     psMemSetDeallocator(object, (psFreeFunc)newExpRowFree);
 
+    object->exp_tag = psStringCopy(exp_tag);
     object->exp_id = psStringCopy(exp_id);
     object->camera = psStringCopy(camera);
@@ -6139,4 +6200,5 @@
 static void newExpRowFree(newExpRow *object)
 {
+    psFree(object->exp_tag);
     psFree(object->exp_id);
     psFree(object->camera);
@@ -6156,5 +6218,10 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
         psFree(md);
@@ -6194,5 +6261,5 @@
 }
 
-bool newExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
+bool newExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
 {
     psMetadata      *md;
@@ -6200,4 +6267,9 @@
 
     md = psMetadataAlloc();
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
@@ -6246,5 +6318,5 @@
     return deleted;
 }
-bool newExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles)
+bool newExpPop(psDB *dbh, char **exp_tag, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles)
 {
     psArray         *rowSet;
@@ -6290,4 +6362,10 @@
     psFree(popped);
 
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
+        psFree(row);
+        return false;
+    }
     *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
     if (!status) {
@@ -6328,5 +6406,5 @@
 bool newExpInsertObject(psDB *dbh, newExpRow *object)
 {
-    return newExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles);
+    return newExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles);
 }
 
@@ -6344,4 +6422,5 @@
 newExpRow *newExpPopObject(psDB *dbh)
 {
+    char            exp_tag[256];
     char            exp_id[256];
     char            camera[256];
@@ -6350,10 +6429,10 @@
     psS32           imfiles;
 
-    if (!newExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles)) {
+    if (!newExpPop(dbh, (char **)&exp_tag, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles);
+    return newExpRowAlloc(exp_tag, exp_id, camera, telescope, exp_type, imfiles);
 }
 
@@ -6454,4 +6533,9 @@
 
     md = psMetadataAlloc();
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
+        psFree(md);
+        return NULL;
+    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
@@ -6486,4 +6570,5 @@
 {
     bool            status;
+    char            *exp_tag;
     char            *exp_id;
     char            *camera;
@@ -6492,4 +6577,9 @@
     psS32           imfiles;
 
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
+        return false;
+    }
     exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     if (!status) {
@@ -6518,5 +6608,5 @@
     }
 
-    return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles);
+    return newExpRowAlloc(exp_tag, exp_id, camera, telescope, exp_type, imfiles);
 }
 psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -6625,5 +6715,5 @@
 static void newImfileRowFree(newImfileRow *object);
 
-newImfileRow *newImfileRowAlloc(const char *exp_id, const char *class, const char *class_id, const char *uri)
+newImfileRow *newImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri)
 {
     newImfileRow    *object;
@@ -6632,5 +6722,5 @@
     psMemSetDeallocator(object, (psFreeFunc)newImfileRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class = psStringCopy(class);
     object->class_id = psStringCopy(class_id);
@@ -6642,5 +6732,5 @@
 static void newImfileRowFree(newImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class);
     psFree(object->class_id);
@@ -6659,6 +6749,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -6692,5 +6782,5 @@
 }
 
-bool newImfileInsert(psDB * dbh, const char *exp_id, const char *class, const char *class_id, const char *uri)
+bool newImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri)
 {
     psMetadata      *md;
@@ -6698,6 +6788,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -6739,5 +6829,5 @@
     return deleted;
 }
-bool newImfilePop(psDB *dbh, char **exp_id, char **class, char **class_id, char **uri)
+bool newImfilePop(psDB *dbh, char **exp_tag, char **class, char **class_id, char **uri)
 {
     psArray         *rowSet;
@@ -6783,7 +6873,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -6815,5 +6905,5 @@
 bool newImfileInsertObject(psDB *dbh, newImfileRow *object)
 {
-    return newImfileInsert(dbh, object->exp_id, object->class, object->class_id, object->uri);
+    return newImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri);
 }
 
@@ -6831,15 +6921,15 @@
 newImfileRow *newImfilePopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class[256];
     char            class_id[256];
     char            uri[256];
 
-    if (!newImfilePop(dbh, (char **)&exp_id, (char **)&class, (char **)&class_id, (char **)&uri)) {
+    if (!newImfilePop(dbh, (char **)&exp_tag, (char **)&class, (char **)&class_id, (char **)&uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return newImfileRowAlloc(exp_id, class, class_id, uri);
+    return newImfileRowAlloc(exp_tag, class, class_id, uri);
 }
 
@@ -6940,6 +7030,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -6967,12 +7057,12 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class;
     char            *class_id;
     char            *uri;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -6993,5 +7083,5 @@
     }
 
-    return newImfileRowAlloc(exp_id, class, class_id, uri);
+    return newImfileRowAlloc(exp_tag, class, class_id, uri);
 }
 psArray *newImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -7100,5 +7190,5 @@
 static void rawDetrendExpRowFree(rawDetrendExpRow *object);
 
-rawDetrendExpRow *rawDetrendExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+rawDetrendExpRow *rawDetrendExpRowAlloc(const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     rawDetrendExpRow *object;
@@ -7107,5 +7197,5 @@
     psMemSetDeallocator(object, (psFreeFunc)rawDetrendExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->camera = psStringCopy(camera);
     object->telescope = psStringCopy(telescope);
@@ -7130,5 +7220,5 @@
 static void rawDetrendExpRowFree(rawDetrendExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->camera);
     psFree(object->telescope);
@@ -7148,6 +7238,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -7246,5 +7336,5 @@
 }
 
-bool rawDetrendExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+bool rawDetrendExpInsert(psDB * dbh, const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     psMetadata      *md;
@@ -7252,6 +7342,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -7358,5 +7448,5 @@
     return deleted;
 }
-bool rawDetrendExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
+bool rawDetrendExpPop(psDB *dbh, char **exp_tag, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
 {
     psArray         *rowSet;
@@ -7402,7 +7492,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -7512,5 +7602,5 @@
 bool rawDetrendExpInsertObject(psDB *dbh, rawDetrendExpRow *object)
 {
-    return rawDetrendExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
+    return rawDetrendExpInsert(dbh, object->exp_tag, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
 }
 
@@ -7528,5 +7618,5 @@
 rawDetrendExpRow *rawDetrendExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            camera[256];
     char            telescope[256];
@@ -7546,10 +7636,10 @@
     psF64           posang;
 
-    if (!rawDetrendExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
+    if (!rawDetrendExpPop(dbh, (char **)&exp_tag, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawDetrendExpRowAlloc(exp_tag, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 
@@ -7650,6 +7740,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -7742,5 +7832,5 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *camera;
     char            *telescope;
@@ -7760,7 +7850,7 @@
     psF64           posang;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -7846,5 +7936,5 @@
     }
 
-    return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawDetrendExpRowAlloc(exp_tag, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 psArray *rawDetrendExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -7953,5 +8043,5 @@
 static void rawScienceExpRowFree(rawScienceExpRow *object);
 
-rawScienceExpRow *rawScienceExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+rawScienceExpRow *rawScienceExpRowAlloc(const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     rawScienceExpRow *object;
@@ -7960,5 +8050,5 @@
     psMemSetDeallocator(object, (psFreeFunc)rawScienceExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->camera = psStringCopy(camera);
     object->telescope = psStringCopy(telescope);
@@ -7983,5 +8073,5 @@
 static void rawScienceExpRowFree(rawScienceExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->camera);
     psFree(object->telescope);
@@ -8001,6 +8091,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -8099,5 +8189,5 @@
 }
 
-bool rawScienceExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+bool rawScienceExpInsert(psDB * dbh, const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     psMetadata      *md;
@@ -8105,6 +8195,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -8211,5 +8301,5 @@
     return deleted;
 }
-bool rawScienceExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
+bool rawScienceExpPop(psDB *dbh, char **exp_tag, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
 {
     psArray         *rowSet;
@@ -8255,7 +8345,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -8365,5 +8455,5 @@
 bool rawScienceExpInsertObject(psDB *dbh, rawScienceExpRow *object)
 {
-    return rawScienceExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
+    return rawScienceExpInsert(dbh, object->exp_tag, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
 }
 
@@ -8381,5 +8471,5 @@
 rawScienceExpRow *rawScienceExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            camera[256];
     char            telescope[256];
@@ -8399,10 +8489,10 @@
     psF64           posang;
 
-    if (!rawScienceExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
+    if (!rawScienceExpPop(dbh, (char **)&exp_tag, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawScienceExpRowAlloc(exp_tag, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 
@@ -8503,6 +8593,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -8595,5 +8685,5 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *camera;
     char            *telescope;
@@ -8613,7 +8703,7 @@
     psF64           posang;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -8699,5 +8789,5 @@
     }
 
-    return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawScienceExpRowAlloc(exp_tag, camera, telescope, exp_type, imfiles, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 psArray *rawScienceExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -8806,5 +8896,5 @@
 static void rawImfileRowFree(rawImfileRow *object);
 
-rawImfileRow *rawImfileRowAlloc(const char *exp_id, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+rawImfileRow *rawImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     rawImfileRow    *object;
@@ -8813,5 +8903,5 @@
     psMemSetDeallocator(object, (psFreeFunc)rawImfileRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class = psStringCopy(class);
     object->class_id = psStringCopy(class_id);
@@ -8836,5 +8926,5 @@
 static void rawImfileRowFree(rawImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class);
     psFree(object->class_id);
@@ -8855,6 +8945,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -8953,5 +9043,5 @@
 }
 
-bool rawImfileInsert(psDB * dbh, const char *exp_id, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
+bool rawImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang)
 {
     psMetadata      *md;
@@ -8959,6 +9049,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -9065,5 +9155,5 @@
     return deleted;
 }
-bool rawImfilePop(psDB *dbh, char **exp_id, char **class, char **class_id, char **uri, char **exp_type, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
+bool rawImfilePop(psDB *dbh, char **exp_tag, char **class, char **class_id, char **uri, char **exp_type, char **filter, psF32 *airmass, psF64 *ra, psF64 *decl, psF32 *exp_time, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF64 *alt, psF64 *az, psF32 *ccd_temp, psF64 *posang)
 {
     psArray         *rowSet;
@@ -9109,7 +9199,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -9219,5 +9309,5 @@
 bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
 {
-    return rawImfileInsert(dbh, object->exp_id, object->class, object->class_id, object->uri, object->exp_type, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
+    return rawImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri, object->exp_type, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang);
 }
 
@@ -9235,5 +9325,5 @@
 rawImfileRow *rawImfilePopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class[256];
     char            class_id[256];
@@ -9253,10 +9343,10 @@
     psF64           posang;
 
-    if (!rawImfilePop(dbh, (char **)&exp_id, (char **)&class, (char **)&class_id, (char **)&uri, (char **)&exp_type, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
+    if (!rawImfilePop(dbh, (char **)&exp_tag, (char **)&class, (char **)&class_id, (char **)&uri, (char **)&exp_type, (char **)&filter, &airmass, &ra, &decl, &exp_time, &bg, &bg_stdev, &bg_mean_stdev, &alt, &az, &ccd_temp, &posang)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return rawImfileRowAlloc(exp_id, class, class_id, uri, exp_type, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawImfileRowAlloc(exp_tag, class, class_id, uri, exp_type, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 
@@ -9357,6 +9447,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -9449,5 +9539,5 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class;
     char            *class_id;
@@ -9467,7 +9557,7 @@
     psF64           posang;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -9553,5 +9643,5 @@
     }
 
-    return rawImfileRowAlloc(exp_id, class, class_id, uri, exp_type, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
+    return rawImfileRowAlloc(exp_tag, class, class_id, uri, exp_type, filter, airmass, ra, decl, exp_time, bg, bg_stdev, bg_mean_stdev, alt, az, ccd_temp, posang);
 }
 psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -9660,5 +9750,5 @@
 static void p1PendingExpRowFree(p1PendingExpRow *object);
 
-p1PendingExpRow *p1PendingExpRowAlloc(const char *exp_id, const char *recipe, psS32 p1_version)
+p1PendingExpRow *p1PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version)
 {
     p1PendingExpRow *object;
@@ -9667,5 +9757,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p1PendingExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->recipe = psStringCopy(recipe);
     object->p1_version = p1_version;
@@ -9676,5 +9766,5 @@
 static void p1PendingExpRowFree(p1PendingExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->recipe);
 }
@@ -9691,6 +9781,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -9719,5 +9809,5 @@
 }
 
-bool p1PendingExpInsert(psDB * dbh, const char *exp_id, const char *recipe, psS32 p1_version)
+bool p1PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version)
 {
     psMetadata      *md;
@@ -9725,6 +9815,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -9761,5 +9851,5 @@
     return deleted;
 }
-bool p1PendingExpPop(psDB *dbh, char **exp_id, char **recipe, psS32 *p1_version)
+bool p1PendingExpPop(psDB *dbh, char **exp_tag, char **recipe, psS32 *p1_version)
 {
     psArray         *rowSet;
@@ -9805,7 +9895,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -9831,5 +9921,5 @@
 bool p1PendingExpInsertObject(psDB *dbh, p1PendingExpRow *object)
 {
-    return p1PendingExpInsert(dbh, object->exp_id, object->recipe, object->p1_version);
+    return p1PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version);
 }
 
@@ -9847,14 +9937,14 @@
 p1PendingExpRow *p1PendingExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            recipe[256];
     psS32           p1_version;
 
-    if (!p1PendingExpPop(dbh, (char **)&exp_id, (char **)&recipe, &p1_version)) {
+    if (!p1PendingExpPop(dbh, (char **)&exp_tag, (char **)&recipe, &p1_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p1PendingExpRowAlloc(exp_id, recipe, p1_version);
+    return p1PendingExpRowAlloc(exp_tag, recipe, p1_version);
 }
 
@@ -9955,6 +10045,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -9977,11 +10067,11 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psS32           p1_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -9997,5 +10087,5 @@
     }
 
-    return p1PendingExpRowAlloc(exp_id, recipe, p1_version);
+    return p1PendingExpRowAlloc(exp_tag, recipe, p1_version);
 }
 psArray *p1PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -10104,5 +10194,5 @@
 static void p2PendingExpRowFree(p2PendingExpRow *object);
 
-p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_id, const char *recipe, psS32 p1_version, psS32 p2_version)
+p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version)
 {
     p2PendingExpRow *object;
@@ -10111,5 +10201,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p2PendingExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->recipe = psStringCopy(recipe);
     object->p1_version = p1_version;
@@ -10121,5 +10211,5 @@
 static void p2PendingExpRowFree(p2PendingExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->recipe);
 }
@@ -10136,6 +10226,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -10169,5 +10259,5 @@
 }
 
-bool p2PendingExpInsert(psDB * dbh, const char *exp_id, const char *recipe, psS32 p1_version, psS32 p2_version)
+bool p2PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version)
 {
     psMetadata      *md;
@@ -10175,6 +10265,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -10216,5 +10306,5 @@
     return deleted;
 }
-bool p2PendingExpPop(psDB *dbh, char **exp_id, char **recipe, psS32 *p1_version, psS32 *p2_version)
+bool p2PendingExpPop(psDB *dbh, char **exp_tag, char **recipe, psS32 *p1_version, psS32 *p2_version)
 {
     psArray         *rowSet;
@@ -10260,7 +10350,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -10292,5 +10382,5 @@
 bool p2PendingExpInsertObject(psDB *dbh, p2PendingExpRow *object)
 {
-    return p2PendingExpInsert(dbh, object->exp_id, object->recipe, object->p1_version, object->p2_version);
+    return p2PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version, object->p2_version);
 }
 
@@ -10308,15 +10398,15 @@
 p2PendingExpRow *p2PendingExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            recipe[256];
     psS32           p1_version;
     psS32           p2_version;
 
-    if (!p2PendingExpPop(dbh, (char **)&exp_id, (char **)&recipe, &p1_version, &p2_version)) {
+    if (!p2PendingExpPop(dbh, (char **)&exp_tag, (char **)&recipe, &p1_version, &p2_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p2PendingExpRowAlloc(exp_id, recipe, p1_version, p2_version);
+    return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version);
 }
 
@@ -10417,6 +10507,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -10444,12 +10534,12 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psS32           p1_version;
     psS32           p2_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -10470,5 +10560,5 @@
     }
 
-    return p2PendingExpRowAlloc(exp_id, recipe, p1_version, p2_version);
+    return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version);
 }
 psArray *p2PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -10577,5 +10667,5 @@
 static void p2PendingImfileRowFree(p2PendingImfileRow *object);
 
-p2PendingImfileRow *p2PendingImfileRowAlloc(const char *exp_id, const char *class_id, const char *uri, const char *recipe, psS32 p1_version, psS32 p2_version)
+p2PendingImfileRow *p2PendingImfileRowAlloc(const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psS32 p1_version, psS32 p2_version)
 {
     p2PendingImfileRow *object;
@@ -10584,5 +10674,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p2PendingImfileRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class_id = psStringCopy(class_id);
     object->uri = psStringCopy(uri);
@@ -10596,5 +10686,5 @@
 static void p2PendingImfileRowFree(p2PendingImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class_id);
     psFree(object->uri);
@@ -10613,6 +10703,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -10656,5 +10746,5 @@
 }
 
-bool p2PendingImfileInsert(psDB * dbh, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psS32 p1_version, psS32 p2_version)
+bool p2PendingImfileInsert(psDB * dbh, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psS32 p1_version, psS32 p2_version)
 {
     psMetadata      *md;
@@ -10662,6 +10752,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -10713,5 +10803,5 @@
     return deleted;
 }
-bool p2PendingImfilePop(psDB *dbh, char **exp_id, char **class_id, char **uri, char **recipe, psS32 *p1_version, psS32 *p2_version)
+bool p2PendingImfilePop(psDB *dbh, char **exp_tag, char **class_id, char **uri, char **recipe, psS32 *p1_version, psS32 *p2_version)
 {
     psArray         *rowSet;
@@ -10757,7 +10847,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -10801,5 +10891,5 @@
 bool p2PendingImfileInsertObject(psDB *dbh, p2PendingImfileRow *object)
 {
-    return p2PendingImfileInsert(dbh, object->exp_id, object->class_id, object->uri, object->recipe, object->p1_version, object->p2_version);
+    return p2PendingImfileInsert(dbh, object->exp_tag, object->class_id, object->uri, object->recipe, object->p1_version, object->p2_version);
 }
 
@@ -10817,5 +10907,5 @@
 p2PendingImfileRow *p2PendingImfilePopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class_id[256];
     char            uri[256];
@@ -10824,10 +10914,10 @@
     psS32           p2_version;
 
-    if (!p2PendingImfilePop(dbh, (char **)&exp_id, (char **)&class_id, (char **)&uri, (char **)&recipe, &p1_version, &p2_version)) {
+    if (!p2PendingImfilePop(dbh, (char **)&exp_tag, (char **)&class_id, (char **)&uri, (char **)&recipe, &p1_version, &p2_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p2PendingImfileRowAlloc(exp_id, class_id, uri, recipe, p1_version, p2_version);
+    return p2PendingImfileRowAlloc(exp_tag, class_id, uri, recipe, p1_version, p2_version);
 }
 
@@ -10928,6 +11018,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -10965,5 +11055,5 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -10972,7 +11062,7 @@
     psS32           p2_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -11003,5 +11093,5 @@
     }
 
-    return p2PendingImfileRowAlloc(exp_id, class_id, uri, recipe, p1_version, p2_version);
+    return p2PendingImfileRowAlloc(exp_tag, class_id, uri, recipe, p1_version, p2_version);
 }
 psArray *p2PendingImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -11110,5 +11200,5 @@
 static void p2ProcessedExpRowFree(p2ProcessedExpRow *object);
 
-p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_id, psS32 p1_version, psS32 p2_version)
+p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_tag, psS32 p1_version, psS32 p2_version)
 {
     p2ProcessedExpRow *object;
@@ -11117,5 +11207,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p2ProcessedExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->p1_version = p1_version;
     object->p2_version = p2_version;
@@ -11126,5 +11216,5 @@
 static void p2ProcessedExpRowFree(p2ProcessedExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
 }
 
@@ -11140,6 +11230,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -11168,5 +11258,5 @@
 }
 
-bool p2ProcessedExpInsert(psDB * dbh, const char *exp_id, psS32 p1_version, psS32 p2_version)
+bool p2ProcessedExpInsert(psDB * dbh, const char *exp_tag, psS32 p1_version, psS32 p2_version)
 {
     psMetadata      *md;
@@ -11174,6 +11264,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -11210,5 +11300,5 @@
     return deleted;
 }
-bool p2ProcessedExpPop(psDB *dbh, char **exp_id, psS32 *p1_version, psS32 *p2_version)
+bool p2ProcessedExpPop(psDB *dbh, char **exp_tag, psS32 *p1_version, psS32 *p2_version)
 {
     psArray         *rowSet;
@@ -11254,7 +11344,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -11280,5 +11370,5 @@
 bool p2ProcessedExpInsertObject(psDB *dbh, p2ProcessedExpRow *object)
 {
-    return p2ProcessedExpInsert(dbh, object->exp_id, object->p1_version, object->p2_version);
+    return p2ProcessedExpInsert(dbh, object->exp_tag, object->p1_version, object->p2_version);
 }
 
@@ -11296,14 +11386,14 @@
 p2ProcessedExpRow *p2ProcessedExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     psS32           p1_version;
     psS32           p2_version;
 
-    if (!p2ProcessedExpPop(dbh, (char **)&exp_id, &p1_version, &p2_version)) {
+    if (!p2ProcessedExpPop(dbh, (char **)&exp_tag, &p1_version, &p2_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p2ProcessedExpRowAlloc(exp_id, p1_version, p2_version);
+    return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version);
 }
 
@@ -11404,6 +11494,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -11426,11 +11516,11 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     psS32           p1_version;
     psS32           p2_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -11446,5 +11536,5 @@
     }
 
-    return p2ProcessedExpRowAlloc(exp_id, p1_version, p2_version);
+    return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version);
 }
 psArray *p2ProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -11553,5 +11643,5 @@
 static void p2ProcessedImfileRowFree(p2ProcessedImfileRow *object);
 
-p2ProcessedImfileRow *p2ProcessedImfileRowAlloc(const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, psS32 p1_version, psS32 p2_version)
+p2ProcessedImfileRow *p2ProcessedImfileRowAlloc(const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, psS32 p1_version, psS32 p2_version)
 {
     p2ProcessedImfileRow *object;
@@ -11560,5 +11650,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p2ProcessedImfileRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class_id = psStringCopy(class_id);
     object->uri = psStringCopy(uri);
@@ -11577,5 +11667,5 @@
 static void p2ProcessedImfileRowFree(p2ProcessedImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class_id);
     psFree(object->uri);
@@ -11596,6 +11686,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -11664,5 +11754,5 @@
 }
 
-bool p2ProcessedImfileInsert(psDB * dbh, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, psS32 p1_version, psS32 p2_version)
+bool p2ProcessedImfileInsert(psDB * dbh, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, psS32 p1_version, psS32 p2_version)
 {
     psMetadata      *md;
@@ -11670,6 +11760,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -11746,5 +11836,5 @@
     return deleted;
 }
-bool p2ProcessedImfilePop(psDB *dbh, char **exp_id, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri, psS32 *p1_version, psS32 *p2_version)
+bool p2ProcessedImfilePop(psDB *dbh, char **exp_tag, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri, psS32 *p1_version, psS32 *p2_version)
 {
     psArray         *rowSet;
@@ -11790,7 +11880,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -11864,5 +11954,5 @@
 bool p2ProcessedImfileInsertObject(psDB *dbh, p2ProcessedImfileRow *object)
 {
-    return p2ProcessedImfileInsert(dbh, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri, object->p1_version, object->p2_version);
+    return p2ProcessedImfileInsert(dbh, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri, object->p1_version, object->p2_version);
 }
 
@@ -11880,5 +11970,5 @@
 p2ProcessedImfileRow *p2ProcessedImfilePopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class_id[256];
     char            uri[256];
@@ -11892,10 +11982,10 @@
     psS32           p2_version;
 
-    if (!p2ProcessedImfilePop(dbh, (char **)&exp_id, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri, &p1_version, &p2_version)) {
+    if (!p2ProcessedImfilePop(dbh, (char **)&exp_tag, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri, &p1_version, &p2_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p2ProcessedImfileRowAlloc(exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, p1_version, p2_version);
+    return p2ProcessedImfileRowAlloc(exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, p1_version, p2_version);
 }
 
@@ -11996,6 +12086,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -12058,5 +12148,5 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -12070,7 +12160,7 @@
     psS32           p2_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -12126,5 +12216,5 @@
     }
 
-    return p2ProcessedImfileRowAlloc(exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, p1_version, p2_version);
+    return p2ProcessedImfileRowAlloc(exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, p1_version, p2_version);
 }
 psArray *p2ProcessedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -12233,5 +12323,5 @@
 static void p3PendingExpRowFree(p3PendingExpRow *object);
 
-p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_id, psS32 p2_version, psS32 p3_version)
+p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_tag, psS32 p2_version, psS32 p3_version)
 {
     p3PendingExpRow *object;
@@ -12240,5 +12330,5 @@
     psMemSetDeallocator(object, (psFreeFunc)p3PendingExpRowFree);
 
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->p2_version = p2_version;
     object->p3_version = p3_version;
@@ -12249,5 +12339,5 @@
 static void p3PendingExpRowFree(p3PendingExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
 }
 
@@ -12263,6 +12353,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -12291,5 +12381,5 @@
 }
 
-bool p3PendingExpInsert(psDB * dbh, const char *exp_id, psS32 p2_version, psS32 p3_version)
+bool p3PendingExpInsert(psDB * dbh, const char *exp_tag, psS32 p2_version, psS32 p3_version)
 {
     psMetadata      *md;
@@ -12297,6 +12387,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -12333,5 +12423,5 @@
     return deleted;
 }
-bool p3PendingExpPop(psDB *dbh, char **exp_id, psS32 *p2_version, psS32 *p3_version)
+bool p3PendingExpPop(psDB *dbh, char **exp_tag, psS32 *p2_version, psS32 *p3_version)
 {
     psArray         *rowSet;
@@ -12377,7 +12467,7 @@
     psFree(popped);
 
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -12403,5 +12493,5 @@
 bool p3PendingExpInsertObject(psDB *dbh, p3PendingExpRow *object)
 {
-    return p3PendingExpInsert(dbh, object->exp_id, object->p2_version, object->p3_version);
+    return p3PendingExpInsert(dbh, object->exp_tag, object->p2_version, object->p3_version);
 }
 
@@ -12419,14 +12509,14 @@
 p3PendingExpRow *p3PendingExpPopObject(psDB *dbh)
 {
-    char            exp_id[256];
+    char            exp_tag[256];
     psS32           p2_version;
     psS32           p3_version;
 
-    if (!p3PendingExpPop(dbh, (char **)&exp_id, &p2_version, &p3_version)) {
+    if (!p3PendingExpPop(dbh, (char **)&exp_tag, &p2_version, &p3_version)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return p3PendingExpRowAlloc(exp_id, p2_version, p3_version);
+    return p3PendingExpRowAlloc(exp_tag, p2_version, p3_version);
 }
 
@@ -12527,6 +12617,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -12549,11 +12639,11 @@
 {
     bool            status;
-    char            *exp_id;
+    char            *exp_tag;
     psS32           p2_version;
     psS32           p3_version;
 
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -12569,5 +12659,5 @@
     }
 
-    return p3PendingExpRowAlloc(exp_id, p2_version, p3_version);
+    return p3PendingExpRowAlloc(exp_tag, p2_version, p3_version);
 }
 psArray *p3PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -13090,5 +13180,5 @@
 static void detInputExpRowFree(detInputExpRow *object);
 
-detInputExpRow *detInputExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, bool include)
+detInputExpRow *detInputExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_tag, bool include)
 {
     detInputExpRow  *object;
@@ -13099,5 +13189,5 @@
     object->det_id = det_id;
     object->iteration = iteration;
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->include = include;
 
@@ -13107,5 +13197,5 @@
 static void detInputExpRowFree(detInputExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
 }
 
@@ -13131,6 +13221,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -13154,5 +13244,5 @@
 }
 
-bool detInputExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, bool include)
+bool detInputExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_tag, bool include)
 {
     psMetadata      *md;
@@ -13170,6 +13260,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -13201,5 +13291,5 @@
     return deleted;
 }
-bool detInputExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, bool *include)
+bool detInputExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_tag, bool *include)
 {
     psArray         *rowSet;
@@ -13257,7 +13347,7 @@
         return false;
     }
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -13277,5 +13367,5 @@
 bool detInputExpInsertObject(psDB *dbh, detInputExpRow *object)
 {
-    return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->include);
+    return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->include);
 }
 
@@ -13295,13 +13385,13 @@
     psS32           det_id;
     psS32           iteration;
-    char            exp_id[256];
+    char            exp_tag[256];
     bool            include;
 
-    if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_id, &include)) {
+    if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_tag, &include)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detInputExpRowAlloc(det_id, iteration, exp_id, include);
+    return detInputExpRowAlloc(det_id, iteration, exp_tag, include);
 }
 
@@ -13412,6 +13502,6 @@
         return NULL;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -13431,5 +13521,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     bool            include;
 
@@ -13444,7 +13534,7 @@
         return false;
     }
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -13455,5 +13545,5 @@
     }
 
-    return detInputExpRowAlloc(det_id, iteration, exp_id, include);
+    return detInputExpRowAlloc(det_id, iteration, exp_tag, include);
 }
 psArray *detInputExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -13562,5 +13652,5 @@
 static void detProcessedImfileRowFree(detProcessedImfileRow *object);
 
-detProcessedImfileRow *detProcessedImfileRowAlloc(psS32 det_id, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
+detProcessedImfileRow *detProcessedImfileRowAlloc(psS32 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
 {
     detProcessedImfileRow *object;
@@ -13570,5 +13660,5 @@
 
     object->det_id = det_id;
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class_id = psStringCopy(class_id);
     object->uri = psStringCopy(uri);
@@ -13585,5 +13675,5 @@
 static void detProcessedImfileRowFree(detProcessedImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class_id);
     psFree(object->uri);
@@ -13609,6 +13699,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -13667,5 +13757,5 @@
 }
 
-bool detProcessedImfileInsert(psDB * dbh, psS32 det_id, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
+bool detProcessedImfileInsert(psDB * dbh, psS32 det_id, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
 {
     psMetadata      *md;
@@ -13678,6 +13768,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -13744,5 +13834,5 @@
     return deleted;
 }
-bool detProcessedImfilePop(psDB *dbh, psS32 *det_id, char **exp_id, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
+bool detProcessedImfilePop(psDB *dbh, psS32 *det_id, char **exp_tag, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
 {
     psArray         *rowSet;
@@ -13794,7 +13884,7 @@
         return false;
     }
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -13856,5 +13946,5 @@
 bool detProcessedImfileInsertObject(psDB *dbh, detProcessedImfileRow *object)
 {
-    return detProcessedImfileInsert(dbh, object->det_id, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri);
+    return detProcessedImfileInsert(dbh, object->det_id, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri);
 }
 
@@ -13873,5 +13963,5 @@
 {
     psS32           det_id;
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class_id[256];
     char            uri[256];
@@ -13883,10 +13973,10 @@
     char            b2_uri[256];
 
-    if (!detProcessedImfilePop(dbh, &det_id, (char **)&exp_id, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
+    if (!detProcessedImfilePop(dbh, &det_id, (char **)&exp_tag, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detProcessedImfileRowAlloc(det_id, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
+    return detProcessedImfileRowAlloc(det_id, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -13992,6 +14082,6 @@
         return NULL;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -14045,5 +14135,5 @@
     bool            status;
     psS32           det_id;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -14060,7 +14150,7 @@
         return false;
     }
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -14106,5 +14196,5 @@
     }
 
-    return detProcessedImfileRowAlloc(det_id, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
+    return detProcessedImfileRowAlloc(det_id, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 psArray *detProcessedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -16694,5 +16784,5 @@
 static void detResidImfileRowFree(detResidImfileRow *object);
 
-detResidImfileRow *detResidImfileRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
+detResidImfileRow *detResidImfileRowAlloc(psS32 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
 {
     detResidImfileRow *object;
@@ -16703,5 +16793,5 @@
     object->det_id = det_id;
     object->iteration = iteration;
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->class_id = psStringCopy(class_id);
     object->uri = psStringCopy(uri);
@@ -16718,5 +16808,5 @@
 static void detResidImfileRowFree(detResidImfileRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->class_id);
     psFree(object->uri);
@@ -16747,6 +16837,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -16805,5 +16895,5 @@
 }
 
-bool detResidImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
+bool detResidImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_tag, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
 {
     psMetadata      *md;
@@ -16821,6 +16911,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -16887,5 +16977,5 @@
     return deleted;
 }
-bool detResidImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
+bool detResidImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_tag, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
 {
     psArray         *rowSet;
@@ -16943,7 +17033,7 @@
         return false;
     }
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -17005,5 +17095,5 @@
 bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
 {
-    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_id, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri);
+    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri);
 }
 
@@ -17023,5 +17113,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            exp_id[256];
+    char            exp_tag[256];
     char            class_id[256];
     char            uri[256];
@@ -17033,10 +17123,10 @@
     char            b2_uri[256];
 
-    if (!detResidImfilePop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
+    if (!detResidImfilePop(dbh, &det_id, &iteration, (char **)&exp_tag, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
+    return detResidImfileRowAlloc(det_id, iteration, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -17147,6 +17237,6 @@
         return NULL;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -17201,5 +17291,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -17221,7 +17311,7 @@
         return false;
     }
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -17267,5 +17357,5 @@
     }
 
-    return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
+    return detResidImfileRowAlloc(det_id, iteration, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -17374,5 +17464,5 @@
 static void detResidExpRowFree(detResidExpRow *object);
 
-detResidExpRow *detResidExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, bool accept)
+detResidExpRow *detResidExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, bool accept)
 {
     detResidExpRow  *object;
@@ -17383,5 +17473,5 @@
     object->det_id = det_id;
     object->iteration = iteration;
-    object->exp_id = psStringCopy(exp_id);
+    object->exp_tag = psStringCopy(exp_tag);
     object->recipe = psStringCopy(recipe);
     object->bg = bg;
@@ -17397,5 +17487,5 @@
 static void detResidExpRowFree(detResidExpRow *object)
 {
-    psFree(object->exp_id);
+    psFree(object->exp_tag);
     psFree(object->recipe);
     psFree(object->b1_uri);
@@ -17424,6 +17514,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -17477,5 +17567,5 @@
 }
 
-bool detResidExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, bool accept)
+bool detResidExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri, bool accept)
 {
     psMetadata      *md;
@@ -17493,6 +17583,6 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return false;
@@ -17554,5 +17644,5 @@
     return deleted;
 }
-bool detResidExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri, bool *accept)
+bool detResidExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_tag, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri, bool *accept)
 {
     psArray         *rowSet;
@@ -17610,7 +17700,7 @@
         return false;
     }
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         psFree(row);
         return false;
@@ -17666,5 +17756,5 @@
 bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
 {
-    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri, object->accept);
+    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri, object->accept);
 }
 
@@ -17684,5 +17774,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            exp_id[256];
+    char            exp_tag[256];
     char            recipe[256];
     psF64           bg;
@@ -17693,10 +17783,10 @@
     bool            accept;
 
-    if (!detResidExpPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri, &accept)) {
+    if (!detResidExpPop(dbh, &det_id, &iteration, (char **)&exp_tag, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri, &accept)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, accept);
+    return detResidExpRowAlloc(det_id, iteration, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, accept);
 }
 
@@ -17807,6 +17897,6 @@
         return NULL;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, object->exp_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
         psFree(md);
         return NULL;
@@ -17856,5 +17946,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psF64           bg;
@@ -17875,7 +17965,7 @@
         return false;
     }
-    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
+    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
         return false;
     }
@@ -17916,5 +18006,5 @@
     }
 
-    return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, accept);
+    return detResidExpRowAlloc(det_id, iteration, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, accept);
 }
 psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
