Index: /trunk/ippdb/configure.ac
===================================================================
--- /trunk/ippdb/configure.ac	(revision 9053)
+++ /trunk/ippdb/configure.ac	(revision 9054)
@@ -7,5 +7,5 @@
 AC_PREREQ(2.59)
 
-AC_INIT([ippdb], [0.0.37], [pan-starrs.ifa.hawaii.edu])
+AC_INIT([ippdb], [0.0.38], [pan-starrs.ifa.hawaii.edu])
 AC_CONFIG_SRCDIR([ippdb.pc.in])
 
Index: /trunk/ippdb/src/ippdb.c
===================================================================
--- /trunk/ippdb/src/ippdb.c	(revision 9053)
+++ /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)
Index: /trunk/ippdb/src/ippdb.h
===================================================================
--- /trunk/ippdb/src/ippdb.h	(revision 9053)
+++ /trunk/ippdb/src/ippdb.h	(revision 9054)
@@ -2466,4 +2466,6 @@
 typedef struct {
     char            *exp_id;
+    char            *camera;
+    char            *telescope;
     psS32           bytes;
     char            *md5sum;
@@ -2480,4 +2482,6 @@
 pzPendingImfileRow *pzPendingImfileRowAlloc(
     const char      *exp_id,
+    const char      *camera,
+    const char      *telescope,
     psS32           bytes,
     const char      *md5sum,
@@ -2515,4 +2519,6 @@
     psDB            *dbh,               ///< Database handle
     const char      *exp_id,
+    const char      *camera,
+    const char      *telescope,
     psS32           bytes,
     const char      *md5sum,
@@ -2541,4 +2547,6 @@
     psDB            *dbh,               ///< Database handle
     char            **exp_id,
+    char            **camera,
+    char            **telescope,
     psS32           *bytes,
     char            **md5sum,
@@ -2700,4 +2708,5 @@
 
 typedef struct {
+    char            *exp_tag;
     char            *exp_id;
     char            *camera;
@@ -2713,4 +2722,5 @@
 
 newExpRow *newExpRowAlloc(
+    const char      *exp_tag,
     const char      *exp_id,
     const char      *camera,
@@ -2747,4 +2757,5 @@
 bool newExpInsert(
     psDB            *dbh,               ///< Database handle
+    const char      *exp_tag,
     const char      *exp_id,
     const char      *camera,
@@ -2772,4 +2783,5 @@
 bool newExpPop(
     psDB            *dbh,               ///< Database handle
+    char            **exp_tag,
     char            **exp_id,
     char            **camera,
@@ -2931,5 +2943,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *class;
     char            *class_id;
@@ -2943,5 +2955,5 @@
 
 newImfileRow *newImfileRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class,
     const char      *class_id,
@@ -2976,5 +2988,5 @@
 bool newImfileInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class,
     const char      *class_id,
@@ -3000,5 +3012,5 @@
 bool newImfilePop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **class,
     char            **class_id,
@@ -3158,5 +3170,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *camera;
     char            *telescope;
@@ -3183,5 +3195,5 @@
 
 rawDetrendExpRow *rawDetrendExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *camera,
     const char      *telescope,
@@ -3229,5 +3241,5 @@
 bool rawDetrendExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *camera,
     const char      *telescope,
@@ -3266,5 +3278,5 @@
 bool rawDetrendExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **camera,
     char            **telescope,
@@ -3437,5 +3449,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *camera;
     char            *telescope;
@@ -3462,5 +3474,5 @@
 
 rawScienceExpRow *rawScienceExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *camera,
     const char      *telescope,
@@ -3508,5 +3520,5 @@
 bool rawScienceExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *camera,
     const char      *telescope,
@@ -3545,5 +3557,5 @@
 bool rawScienceExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **camera,
     char            **telescope,
@@ -3716,5 +3728,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *class;
     char            *class_id;
@@ -3741,5 +3753,5 @@
 
 rawImfileRow *rawImfileRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class,
     const char      *class_id,
@@ -3787,5 +3799,5 @@
 bool rawImfileInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class,
     const char      *class_id,
@@ -3824,5 +3836,5 @@
 bool rawImfilePop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **class,
     char            **class_id,
@@ -3995,5 +4007,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psS32           p1_version;
@@ -4006,5 +4018,5 @@
 
 p1PendingExpRow *p1PendingExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psS32           p1_version
@@ -4038,5 +4050,5 @@
 bool p1PendingExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psS32           p1_version
@@ -4061,5 +4073,5 @@
 bool p1PendingExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **recipe,
     psS32           *p1_version
@@ -4218,5 +4230,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psS32           p1_version;
@@ -4230,5 +4242,5 @@
 
 p2PendingExpRow *p2PendingExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psS32           p1_version,
@@ -4263,5 +4275,5 @@
 bool p2PendingExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psS32           p1_version,
@@ -4287,5 +4299,5 @@
 bool p2PendingExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **recipe,
     psS32           *p1_version,
@@ -4445,5 +4457,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -4459,5 +4471,5 @@
 
 p2PendingImfileRow *p2PendingImfileRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -4494,5 +4506,5 @@
 bool p2PendingImfileInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -4520,5 +4532,5 @@
 bool p2PendingImfilePop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **class_id,
     char            **uri,
@@ -4680,5 +4692,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     psS32           p1_version;
     psS32           p2_version;
@@ -4691,5 +4703,5 @@
 
 p2ProcessedExpRow *p2ProcessedExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     psS32           p1_version,
     psS32           p2_version
@@ -4723,5 +4735,5 @@
 bool p2ProcessedExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     psS32           p1_version,
     psS32           p2_version
@@ -4746,5 +4758,5 @@
 bool p2ProcessedExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     psS32           *p1_version,
     psS32           *p2_version
@@ -4903,5 +4915,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -4922,5 +4934,5 @@
 
 p2ProcessedImfileRow *p2ProcessedImfileRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -4962,5 +4974,5 @@
 bool p2ProcessedImfileInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -4993,5 +5005,5 @@
 bool p2ProcessedImfilePop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     char            **class_id,
     char            **uri,
@@ -5158,5 +5170,5 @@
 
 typedef struct {
-    char            *exp_id;
+    char            *exp_tag;
     psS32           p2_version;
     psS32           p3_version;
@@ -5169,5 +5181,5 @@
 
 p3PendingExpRow *p3PendingExpRowAlloc(
-    const char      *exp_id,
+    const char      *exp_tag,
     psS32           p2_version,
     psS32           p3_version
@@ -5201,5 +5213,5 @@
 bool p3PendingExpInsert(
     psDB            *dbh,               ///< Database handle
-    const char      *exp_id,
+    const char      *exp_tag,
     psS32           p2_version,
     psS32           p3_version
@@ -5224,5 +5236,5 @@
 bool p3PendingExpPop(
     psDB            *dbh,               ///< Database handle
-    char            **exp_id,
+    char            **exp_tag,
     psS32           *p2_version,
     psS32           *p3_version
@@ -5602,5 +5614,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     bool            include;
 } detInputExpRow;
@@ -5614,5 +5626,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     bool            include
 );
@@ -5647,5 +5659,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     bool            include
 );
@@ -5671,5 +5683,5 @@
     psS32           *det_id,
     psS32           *iteration,
-    char            **exp_id,
+    char            **exp_tag,
     bool            *include
 );
@@ -5828,5 +5840,5 @@
 typedef struct {
     psS32           det_id;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -5846,5 +5858,5 @@
 detProcessedImfileRow *detProcessedImfileRowAlloc(
     psS32           det_id,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -5885,5 +5897,5 @@
     psDB            *dbh,               ///< Database handle
     psS32           det_id,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -5915,5 +5927,5 @@
     psDB            *dbh,               ///< Database handle
     psS32           *det_id,
-    char            **exp_id,
+    char            **exp_tag,
     char            **class_id,
     char            **uri,
@@ -7231,5 +7243,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     char            *class_id;
     char            *uri;
@@ -7250,5 +7262,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -7290,5 +7302,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *class_id,
     const char      *uri,
@@ -7321,5 +7333,5 @@
     psS32           *det_id,
     psS32           *iteration,
-    char            **exp_id,
+    char            **exp_tag,
     char            **class_id,
     char            **uri,
@@ -7486,5 +7498,5 @@
     psS32           det_id;
     psS32           iteration;
-    char            *exp_id;
+    char            *exp_tag;
     char            *recipe;
     psF64           bg;
@@ -7504,5 +7516,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psF64           bg,
@@ -7543,5 +7555,5 @@
     psS32           det_id,
     psS32           iteration,
-    const char      *exp_id,
+    const char      *exp_tag,
     const char      *recipe,
     psF64           bg,
@@ -7573,5 +7585,5 @@
     psS32           *det_id,
     psS32           *iteration,
-    char            **exp_id,
+    char            **exp_tag,
     char            **recipe,
     psF64           *bg,
Index: /trunk/ippdb/tests/alloc.c
===================================================================
--- /trunk/ippdb/tests/alloc.c	(revision 9053)
+++ /trunk/ippdb/tests/alloc.c	(revision 9054)
@@ -384,5 +384,5 @@
         pzPendingImfileRow *object;
 
-        object = pzPendingImfileRowAlloc("a string", -32, "a string", "a string", "a string", "a string"    );
+        object = pzPendingImfileRowAlloc("a string", "a string", "a string", -32, "a string", "a string", "a string", "a string"    );
 
         if (!object) {
@@ -394,4 +394,12 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bytes == -32) {
             psFree(object);
@@ -421,10 +429,14 @@
         newExpRow       *object;
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", -32    );
-
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "a string", -32    );
+
+        if (!object) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -460,5 +472,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -489,5 +501,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -570,5 +582,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -651,5 +663,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -732,5 +744,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -757,5 +769,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -786,5 +798,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -823,5 +835,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -848,5 +860,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -905,5 +917,5 @@
         }
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -959,5 +971,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -984,5 +996,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1202,5 +1214,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1259,5 +1271,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insert.c
===================================================================
--- /trunk/ippdb/tests/insert.c	(revision 9053)
+++ /trunk/ippdb/tests/insert.c	(revision 9054)
@@ -163,20 +163,20 @@
         }
 
-        if (!pzPendingImfileInsert(dbh, "a string", -32, "a string", "a string", "a string", "a string")) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!newExpInsert(dbh, "a string", "a string", "a string", "a string", -32)) {
+        if (!pzPendingImfileInsert(dbh, "a string", "a string", "a string", -32, "a string", "a string", "a string", "a string")) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!newExpInsert(dbh, "a string", "a string", "a string", "a string", "a string", -32)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insertobject.c
===================================================================
--- /trunk/ippdb/tests/insertobject.c	(revision 9053)
+++ /trunk/ippdb/tests/insertobject.c	(revision 9054)
@@ -234,5 +234,5 @@
         }
 
-        object = pzPendingImfileRowAlloc("a string", -32, "a string", "a string", "a string", "a string");
+        object = pzPendingImfileRowAlloc("a string", "a string", "a string", -32, "a string", "a string", "a string", "a string");
         if (!object) {
             exit(EXIT_FAILURE);
@@ -256,5 +256,5 @@
         }
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", -32);
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "a string", -32);
         if (!object) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/metadatafromobject.c
===================================================================
--- /trunk/ippdb/tests/metadatafromobject.c	(revision 9053)
+++ /trunk/ippdb/tests/metadatafromobject.c	(revision 9054)
@@ -467,5 +467,5 @@
         bool            status;
 
-        object = pzPendingImfileRowAlloc("a string", -32, "a string", "a string", "a string", "a string");
+        object = pzPendingImfileRowAlloc("a string", "a string", "a string", -32, "a string", "a string", "a string", "a string");
         if (!object) {
             exit(EXIT_FAILURE);
@@ -483,4 +483,12 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataLookupS32(&status, md, "bytes") == -32) {
             psFree(md);
@@ -512,5 +520,5 @@
         bool            status;
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", -32);
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "a string", -32);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -524,4 +532,8 @@
         psFree(object);
 
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -565,5 +577,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -602,5 +614,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -691,5 +703,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -780,5 +792,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -869,5 +881,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -902,5 +914,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -939,5 +951,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -984,5 +996,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1017,5 +1029,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1082,5 +1094,5 @@
         psFree(object);
 
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1152,5 +1164,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1185,5 +1197,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1451,5 +1463,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1516,5 +1528,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_id"), "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/objectfrommetadata.c
===================================================================
--- /trunk/ippdb/tests/objectfrommetadata.c	(revision 9053)
+++ /trunk/ippdb/tests/objectfrommetadata.c	(revision 9054)
@@ -685,4 +685,12 @@
             exit(EXIT_FAILURE);
         }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddS32(md, PS_LIST_TAIL, "bytes", 0, NULL, -32)) {
             psFree(md);
@@ -718,4 +726,12 @@
             exit(EXIT_FAILURE);
         }
+        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (!object->bytes == -32) {
             psFree(object);
@@ -747,4 +763,8 @@
 
         md = psMetadataAlloc();
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
             psFree(md);
@@ -776,4 +796,8 @@
         psFree(md);
 
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
         if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -805,5 +829,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -830,5 +854,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -855,5 +879,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -932,5 +956,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1009,5 +1033,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1086,5 +1110,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1163,5 +1187,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1240,5 +1264,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1317,5 +1341,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1338,5 +1362,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1359,5 +1383,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1384,5 +1408,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1409,5 +1433,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1442,5 +1466,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1475,5 +1499,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1496,5 +1520,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1517,5 +1541,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1570,5 +1594,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1623,5 +1647,5 @@
 
         md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1644,5 +1668,5 @@
         psFree(md);
 
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1707,5 +1731,5 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1732,5 +1756,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -1753,5 +1777,5 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -1802,5 +1826,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -2137,5 +2161,5 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -2190,5 +2214,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -2243,5 +2267,5 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_id", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -2292,5 +2316,5 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->exp_id, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/pop.c
===================================================================
--- /trunk/ippdb/tests/pop.c	(revision 9053)
+++ /trunk/ippdb/tests/pop.c	(revision 9054)
@@ -219,4 +219,6 @@
         psDB            *dbh;
         char            exp_id[256];
+        char            camera[256];
+        char            telescope[256];
         psS32           bytes;
         char            md5sum[256];
@@ -230,13 +232,14 @@
         }
 
-        if (!pzPendingImfilePop(dbh, (char **)&exp_id, &bytes, (char **)&md5sum, (char **)&class, (char **)&class_id, (char **)&uri)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
+        if (!pzPendingImfilePop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, &bytes, (char **)&md5sum, (char **)&class, (char **)&class_id, (char **)&uri)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            exp_id[256];
         char            camera[256];
@@ -250,14 +253,14 @@
         }
 
-        if (!newExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!newExpPop(dbh, (char **)&exp_tag, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            class[256];
         char            class_id[256];
@@ -269,14 +272,14 @@
         }
 
-        if (!newImfilePop(dbh, (char **)&exp_id, (char **)&class, (char **)&class_id, (char **)&uri)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!newImfilePop(dbh, (char **)&exp_tag, (char **)&class, (char **)&class_id, (char **)&uri)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            camera[256];
         char            telescope[256];
@@ -301,14 +304,14 @@
         }
 
-        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)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        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)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            camera[256];
         char            telescope[256];
@@ -333,14 +336,14 @@
         }
 
-        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)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        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)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            class[256];
         char            class_id[256];
@@ -365,14 +368,14 @@
         }
 
-        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)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        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)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            recipe[256];
         psS32           p1_version;
@@ -383,14 +386,14 @@
         }
 
-        if (!p1PendingExpPop(dbh, (char **)&exp_id, (char **)&recipe, &p1_version)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!p1PendingExpPop(dbh, (char **)&exp_tag, (char **)&recipe, &p1_version)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            recipe[256];
         psS32           p1_version;
@@ -402,14 +405,14 @@
         }
 
-        if (!p2PendingExpPop(dbh, (char **)&exp_id, (char **)&recipe, &p1_version, &p2_version)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!p2PendingExpPop(dbh, (char **)&exp_tag, (char **)&recipe, &p1_version, &p2_version)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            class_id[256];
         char            uri[256];
@@ -423,14 +426,14 @@
         }
 
-        if (!p2PendingImfilePop(dbh, (char **)&exp_id, (char **)&class_id, (char **)&uri, (char **)&recipe, &p1_version, &p2_version)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!p2PendingImfilePop(dbh, (char **)&exp_tag, (char **)&class_id, (char **)&uri, (char **)&recipe, &p1_version, &p2_version)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         psS32           p1_version;
         psS32           p2_version;
@@ -441,14 +444,14 @@
         }
 
-        if (!p2ProcessedExpPop(dbh, (char **)&exp_id, &p1_version, &p2_version)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        if (!p2ProcessedExpPop(dbh, (char **)&exp_tag, &p1_version, &p2_version)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         char            class_id[256];
         char            uri[256];
@@ -467,14 +470,14 @@
         }
 
-        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)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        char            exp_id[256];
+        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)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        char            exp_tag[256];
         psS32           p2_version;
         psS32           p3_version;
@@ -485,5 +488,5 @@
         }
 
-        if (!p3PendingExpPop(dbh, (char **)&exp_id, &p2_version, &p3_version)) { 
+        if (!p3PendingExpPop(dbh, (char **)&exp_tag, &p2_version, &p3_version)) { 
             exit(EXIT_FAILURE);
         }
@@ -513,5 +516,5 @@
         psS32           det_id;
         psS32           iteration;
-        char            exp_id[256];
+        char            exp_tag[256];
         bool            include;
 
@@ -521,15 +524,15 @@
         }
 
-        if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_id, &include)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psS32           det_id;
-        char            exp_id[256];
+        if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_tag, &include)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        psS32           det_id;
+        char            exp_tag[256];
         char            class_id[256];
         char            uri[256];
@@ -546,5 +549,5 @@
         }
 
-        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)) { 
             exit(EXIT_FAILURE);
         }
@@ -656,5 +659,5 @@
         psS32           det_id;
         psS32           iteration;
-        char            exp_id[256];
+        char            exp_tag[256];
         char            class_id[256];
         char            uri[256];
@@ -671,16 +674,16 @@
         }
 
-        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)) { 
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psS32           det_id;
-        psS32           iteration;
-        char            exp_id[256];
+        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)) { 
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+        psS32           det_id;
+        psS32           iteration;
+        char            exp_tag[256];
         char            recipe[256];
         psF64           bg;
@@ -696,5 +699,5 @@
         }
 
-        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)) { 
             exit(EXIT_FAILURE);
         }
