Index: trunk/ippdb/src/ippdb.c
===================================================================
--- trunk/ippdb/src/ippdb.c	(revision 8368)
+++ trunk/ippdb/src/ippdb.c	(revision 8380)
@@ -64,8 +64,8 @@
 #define DETMASTERIMFILE_TABLE_NAME "detMasterImfile"
 #define DETMASTERIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
-#define DETRESIDIMFILEANALYSIS_TABLE_NAME "detResidImfileAnalysis"
-#define DETRESIDIMFILEANALYSIS_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
-#define DETRESIDEXPANALYSIS_TABLE_NAME "detResidExpAnalysis"
-#define DETRESIDEXPANALYSIS_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
+#define DETRESIDIMFILE_TABLE_NAME "detResidImfile"
+#define DETRESIDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
+#define DETRESIDEXP_TABLE_NAME "detResidExp"
+#define DETRESIDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define MAX_STRING_LENGTH 1024
 
@@ -15059,5 +15059,5 @@
 static void detNormalizedImfileRowFree(detNormalizedImfileRow *object);
 
-detNormalizedImfileRow *detNormalizedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe)
+detNormalizedImfileRow *detNormalizedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri)
 {
     detNormalizedImfileRow *object;
@@ -15070,5 +15070,4 @@
     object->class_id = psStringCopy(class_id);
     object->uri = psStringCopy(uri);
-    object->recipe = psStringCopy(recipe);
 
     return object;
@@ -15079,5 +15078,4 @@
     psFree(object->class_id);
     psFree(object->uri);
-    psFree(object->recipe);
 }
 
@@ -15113,9 +15111,4 @@
         return false;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
 
     status = psDBCreateTable(dbh, DETNORMALIZEDIMFILE_TABLE_NAME, md);
@@ -15131,5 +15124,5 @@
 }
 
-bool detNormalizedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe)
+bool detNormalizedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri)
 {
     psMetadata      *md;
@@ -15154,9 +15147,4 @@
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
         psFree(md);
         return false;
@@ -15183,5 +15171,5 @@
     return deleted;
 }
-bool detNormalizedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe)
+bool detNormalizedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri)
 {
     psArray         *rowSet;
@@ -15251,10 +15239,4 @@
         return false;
     }
-    *recipe = psMetadataLookupPtr(&status, row, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        psFree(row);
-        return false;
-    }
 
     psFree(row);
@@ -15265,5 +15247,5 @@
 bool detNormalizedImfileInsertObject(psDB *dbh, detNormalizedImfileRow *object)
 {
-    return detNormalizedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe);
+    return detNormalizedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri);
 }
 
@@ -15285,12 +15267,11 @@
     char            class_id[256];
     char            uri[256];
-    char            recipe[256];
-
-    if (!detNormalizedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe)) {
+
+    if (!detNormalizedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri, recipe);
+    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri);
 }
 
@@ -15411,9 +15392,4 @@
         return NULL;
     }
-    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, object->recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return NULL;
-    }
 
     return md;
@@ -15427,5 +15403,4 @@
     char            *class_id;
     char            *uri;
-    char            *recipe;
 
     det_id = psMetadataLookupS32(&status, md, "det_id");
@@ -15449,11 +15424,6 @@
         return false;
     }
-    recipe = psMetadataLookupPtr(&status, md, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        return false;
-    }
-
-    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri, recipe);
+
+    return detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri);
 }
 psArray *detNormalizedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -16477,12 +16447,12 @@
     return true;
 }
-static void detResidImfileAnalysisRowFree(detResidImfileAnalysisRow *object);
-
-detResidImfileAnalysisRow *detResidImfileAnalysisRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *recipe, const char *uri, const char *b1_uri, const char *b2_uri)
-{
-    detResidImfileAnalysisRow *object;
-
-    object = psAlloc(sizeof(detResidImfileAnalysisRow));
-    psMemSetDeallocator(object, (psFreeFunc)detResidImfileAnalysisRowFree);
+static void detResidImfileRowFree(detResidImfileRow *object);
+
+detResidImfileRow *detResidImfileRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *recipe, const char *uri, const char *b1_uri, const char *b2_uri)
+{
+    detResidImfileRow *object;
+
+    object = psAlloc(sizeof(detResidImfileRow));
+    psMemSetDeallocator(object, (psFreeFunc)detResidImfileRowFree);
 
     object->det_id = det_id;
@@ -16498,5 +16468,5 @@
 }
 
-static void detResidImfileAnalysisRowFree(detResidImfileAnalysisRow *object)
+static void detResidImfileRowFree(detResidImfileRow *object)
 {
     psFree(object->exp_id);
@@ -16508,5 +16478,5 @@
 }
 
-bool detResidImfileAnalysisCreateTable(psDB *dbh)
+bool detResidImfileCreateTable(psDB *dbh)
 {
     psMetadata      *md;
@@ -16514,6 +16484,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRESIDIMFILEANALYSIS_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRESIDIMFILEANALYSIS_INDEX_NAME);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRESIDIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRESIDIMFILE_INDEX_NAME);
         psFree(md);
         return false;
@@ -16560,5 +16530,5 @@
     }
 
-    status = psDBCreateTable(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, md);
+    status = psDBCreateTable(dbh, DETRESIDIMFILE_TABLE_NAME, md);
 
     psFree(md);
@@ -16567,10 +16537,10 @@
 }
 
-bool detResidImfileAnalysisDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME);
-}
-
-bool detResidImfileAnalysisInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *recipe, const char *uri, const char *b1_uri, const char *b2_uri)
+bool detResidImfileDropTable(psDB *dbh)
+{
+    return psDBDropTable(dbh, DETRESIDIMFILE_TABLE_NAME);
+}
+
+bool detResidImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *class_id, const char *recipe, const char *uri, const char *b1_uri, const char *b2_uri)
 {
     psMetadata      *md;
@@ -16619,5 +16589,5 @@
     }
 
-    status = psDBInsertOneRow(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, md);
+    status = psDBInsertOneRow(dbh, DETRESIDIMFILE_TABLE_NAME, md);
     psFree(md);
 
@@ -16625,11 +16595,11 @@
 }
 
-long long detResidImfileAnalysisDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
+long long detResidImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     long long       deleted = 0;
 
-    long long count = psDBDeleteRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, where, limit);
+    long long count = psDBDeleteRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, limit);
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfileAnalysis");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfile");
         return count;
 
@@ -16639,5 +16609,5 @@
     return deleted;
 }
-bool detResidImfileAnalysisPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **class_id, char **recipe, char **uri, char **b1_uri, char **b2_uri)
+bool detResidImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **class_id, char **recipe, char **uri, char **b1_uri, char **b2_uri)
 {
     psArray         *rowSet;
@@ -16648,7 +16618,7 @@
     int             rowID;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, NULL, 1);
+    rowSet = psDBSelectRows(dbh, DETRESIDIMFILE_TABLE_NAME, NULL, 1);
     if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDIMFILEANALYSIS_INDEX_NAME);
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDIMFILE_INDEX_NAME);
         psFree(rowSet);
         return NULL;
@@ -16663,7 +16633,7 @@
     psFree(rowSet);
 
-    rowID = psMetadataLookupS32(&status, row, DETRESIDIMFILEANALYSIS_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDIMFILEANALYSIS_INDEX_NAME);
+    rowID = psMetadataLookupS32(&status, row, DETRESIDIMFILE_INDEX_NAME);
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDIMFILE_INDEX_NAME);
         psFree(row);
         return NULL;
@@ -16671,7 +16641,7 @@
 
     popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETRESIDIMFILEANALYSIS_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, popped, 0);
+    psMetadataAddS32(popped, PS_LIST_TAIL, DETRESIDIMFILE_INDEX_NAME, 0, NULL, rowID);
+
+    deleted = psDBDeleteRows(dbh, DETRESIDIMFILE_TABLE_NAME, popped, 0);
     if (deleted != 1) {
         psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
@@ -16737,13 +16707,13 @@
 }
 
-bool detResidImfileAnalysisInsertObject(psDB *dbh, detResidImfileAnalysisRow *object)
-{
-    return detResidImfileAnalysisInsert(dbh, object->det_id, object->iteration, object->exp_id, object->class_id, object->recipe, object->uri, object->b1_uri, object->b2_uri);
-}
-
-bool detResidImfileAnalysisInsertObjects(psDB *dbh, psArray *objects)
+bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
+{
+    return detResidImfileInsert(dbh, object->det_id, object->iteration, object->exp_id, object->class_id, object->recipe, object->uri, object->b1_uri, object->b2_uri);
+}
+
+bool detResidImfileInsertObjects(psDB *dbh, psArray *objects)
 {
     for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detResidImfileAnalysisInsertObject(dbh, objects->data[i])) {
+        if (!detResidImfileInsertObject(dbh, objects->data[i])) {
             return false;
         }
@@ -16753,5 +16723,5 @@
 }
 
-detResidImfileAnalysisRow *detResidImfileAnalysisPopObject(psDB *dbh)
+detResidImfileRow *detResidImfilePopObject(psDB *dbh)
 {
     psS32           det_id;
@@ -16764,19 +16734,19 @@
     char            b2_uri[256];
 
-    if (!detResidImfileAnalysisPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&class_id, (char **)&recipe, (char **)&uri, (char **)&b1_uri, (char **)&b2_uri)) {
+    if (!detResidImfilePop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&class_id, (char **)&recipe, (char **)&uri, (char **)&b1_uri, (char **)&b2_uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detResidImfileAnalysisRowAlloc(det_id, iteration, exp_id, class_id, recipe, uri, b1_uri, b2_uri);
-}
-
-bool detResidImfileAnalysisInsertFits(psDB *dbh, const psFits *fits)
+    return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, recipe, uri, b1_uri, b2_uri);
+}
+
+bool detResidImfileInsertFits(psDB *dbh, const psFits *fits)
 {
     psArray         *rowSet;
 
-    // move to (the first?) extension named  DETRESIDIMFILEANALYSIS_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETRESIDIMFILEANALYSIS_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETRESIDIMFILEANALYSIS_TABLE_NAME);
+    // move to (the first?) extension named  DETRESIDIMFILE_TABLE_NAME
+    if (!psFitsMoveExtName(fits, DETRESIDIMFILE_TABLE_NAME)) {
+        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETRESIDIMFILE_TABLE_NAME);
         return false;
     }
@@ -16796,5 +16766,5 @@
     }
 
-    if (!psDBInsertRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, rowSet)) {
+    if (!psDBInsertRows(dbh, DETRESIDIMFILE_TABLE_NAME, rowSet)) {
         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
         psFree(rowSet);
@@ -16807,9 +16777,9 @@
 }
 
-bool detResidImfileAnalysisPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
+bool detResidImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
 {
     char            query[MAX_STRING_LENGTH];
 
-    if (!detResidImfileAnalysisSelectRowsFits(dbh, fits, NULL, limit)) {
+    if (!detResidImfileSelectRowsFits(dbh, fits, NULL, limit)) {
         psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
         return false;
@@ -16819,5 +16789,5 @@
     if (snprintf(query, MAX_STRING_LENGTH,
                 "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRESIDIMFILEANALYSIS_TABLE_NAME, DETRESIDIMFILEANALYSIS_INDEX_NAME, limit) < 0) {
+                DETRESIDIMFILE_TABLE_NAME, DETRESIDIMFILE_INDEX_NAME, limit) < 0) {
         psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %s bytes", MAX_STRING_LENGTH);
         return false;
@@ -16832,10 +16802,10 @@
 }
 
-bool detResidImfileAnalysisSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
+bool detResidImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
     psU64           i;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
@@ -16844,6 +16814,6 @@
     // strip index column
     for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRESIDIMFILEANALYSIS_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDIMFILEANALYSIS_INDEX_NAME);
+        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRESIDIMFILE_INDEX_NAME)) {
+            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDIMFILE_INDEX_NAME);
             psFree(rowSet);
             return false;
@@ -16852,5 +16822,5 @@
 
     // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETRESIDIMFILEANALYSIS_TABLE_NAME)) {
+    if (!psFitsWriteTable(fits, NULL, rowSet, DETRESIDIMFILE_TABLE_NAME)) {
         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
         psFree(rowSet);
@@ -16863,5 +16833,5 @@
 }
 
-psMetadata *detResidImfileAnalysisMetadataFromObject(const detResidImfileAnalysisRow *object)
+psMetadata *detResidImfileMetadataFromObject(const detResidImfileRow *object)
 {
     psMetadata      *md;
@@ -16912,5 +16882,5 @@
 }
 
-detResidImfileAnalysisRow *detResidImfileAnalysisObjectFromMetadata(psMetadata *md)
+detResidImfileRow *detResidImfileObjectFromMetadata(psMetadata *md)
 {
     bool            status;
@@ -16965,7 +16935,7 @@
     }
 
-    return detResidImfileAnalysisRowAlloc(det_id, iteration, exp_id, class_id, recipe, uri, b1_uri, b2_uri);
-}
-psArray *detResidImfileAnalysisSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
+    return detResidImfileRowAlloc(det_id, iteration, exp_id, class_id, recipe, uri, b1_uri, b2_uri);
+}
+psArray *detResidImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
@@ -16973,5 +16943,5 @@
     psU64           i;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return NULL;
@@ -16980,6 +16950,6 @@
     // strip index column
     for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRESIDIMFILEANALYSIS_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDIMFILEANALYSIS_INDEX_NAME);
+        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRESIDIMFILE_INDEX_NAME)) {
+            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDIMFILE_INDEX_NAME);
             psFree(rowSet);
             return false;
@@ -16993,5 +16963,5 @@
 
     for (i = 0; i < rowSet->n; i++) {
-        detResidImfileAnalysisRow *object = detResidImfileAnalysisObjectFromMetadata(rowSet->data[i]);
+        detResidImfileRow *object = detResidImfileObjectFromMetadata(rowSet->data[i]);
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -17002,11 +16972,11 @@
     return returnSet;
 }
-bool detResidImfileAnalysisDeleteObject(psDB *dbh, const detResidImfileAnalysisRow *object)
-{
-    psMetadata *where = detResidImfileAnalysisMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, where, 0);
+bool detResidImfileDeleteObject(psDB *dbh, const detResidImfileRow *object)
+{
+    psMetadata *where = detResidImfileMetadataFromObject(object);
+    long long count = psDBDeleteRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, 0);
     psFree(where)
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfileAnalysis");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfile");
         return false;
     }
@@ -17014,21 +16984,21 @@
         // XXX should this be a psAbort() instead?  It is possible that
         // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detResidImfileAnalysisRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detResidImfileAnalysisDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
+        psError(PS_ERR_UNKNOWN, true, "detResidImfileRow object matched more then one row.  Check your database schema");
+        return false;
+    }
+
+    return true;
+}
+long long detResidImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
 {
     long long       deleted = 0;
 
     for (long long i = 0; i < objects->n; i++) {
-        detResidImfileAnalysisRow *object = objects->data[i];
-        psMetadata *where = detResidImfileAnalysisMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETRESIDIMFILEANALYSIS_TABLE_NAME, where, limit);
+        detResidImfileRow *object = objects->data[i];
+        psMetadata *where = detResidImfileMetadataFromObject(object);
+        long long count = psDBDeleteRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, limit);
         psFree(where)
         if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfileAnalysis");
+            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidImfile");
             return count;
         }
@@ -17039,5 +17009,5 @@
     return deleted;
 }
-bool detResidImfileAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdcf)
+bool detResidImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -17045,9 +17015,9 @@
     psMetadata *output = psMetadataAlloc();
     for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detResidImfileAnalysisMetadataFromObject(objects->data[i]);
+        psMetadata *md = detResidImfileMetadataFromObject(objects->data[i]);
         if (!psMetadataAddMetadata(
             output,
             PS_LIST_TAIL,
-            DETRESIDIMFILEANALYSIS_TABLE_NAME,
+            DETRESIDIMFILE_TABLE_NAME,
             PS_META_DUPLICATE_OK,
             NULL,
@@ -17070,12 +17040,12 @@
     return true;
 }
-static void detResidExpAnalysisRowFree(detResidExpAnalysisRow *object);
-
-detResidExpAnalysisRow *detResidExpAnalysisRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, bool keep, bool accept)
-{
-    detResidExpAnalysisRow *object;
-
-    object = psAlloc(sizeof(detResidExpAnalysisRow));
-    psMemSetDeallocator(object, (psFreeFunc)detResidExpAnalysisRowFree);
+static void detResidExpRowFree(detResidExpRow *object);
+
+detResidExpRow *detResidExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, bool keep, bool accept)
+{
+    detResidExpRow  *object;
+
+    object = psAlloc(sizeof(detResidExpRow));
+    psMemSetDeallocator(object, (psFreeFunc)detResidExpRowFree);
 
     object->det_id = det_id;
@@ -17089,5 +17059,5 @@
 }
 
-static void detResidExpAnalysisRowFree(detResidExpAnalysisRow *object)
+static void detResidExpRowFree(detResidExpRow *object)
 {
     psFree(object->exp_id);
@@ -17095,5 +17065,5 @@
 }
 
-bool detResidExpAnalysisCreateTable(psDB *dbh)
+bool detResidExpCreateTable(psDB *dbh)
 {
     psMetadata      *md;
@@ -17101,6 +17071,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRESIDEXPANALYSIS_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRESIDEXPANALYSIS_INDEX_NAME);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRESIDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRESIDEXP_INDEX_NAME);
         psFree(md);
         return false;
@@ -17137,5 +17107,5 @@
     }
 
-    status = psDBCreateTable(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, md);
+    status = psDBCreateTable(dbh, DETRESIDEXP_TABLE_NAME, md);
 
     psFree(md);
@@ -17144,10 +17114,10 @@
 }
 
-bool detResidExpAnalysisDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETRESIDEXPANALYSIS_TABLE_NAME);
-}
-
-bool detResidExpAnalysisInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, bool keep, bool accept)
+bool detResidExpDropTable(psDB *dbh)
+{
+    return psDBDropTable(dbh, DETRESIDEXP_TABLE_NAME);
+}
+
+bool detResidExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *recipe, bool keep, bool accept)
 {
     psMetadata      *md;
@@ -17186,5 +17156,5 @@
     }
 
-    status = psDBInsertOneRow(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, md);
+    status = psDBInsertOneRow(dbh, DETRESIDEXP_TABLE_NAME, md);
     psFree(md);
 
@@ -17192,11 +17162,11 @@
 }
 
-long long detResidExpAnalysisDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
+long long detResidExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     long long       deleted = 0;
 
-    long long count = psDBDeleteRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, where, limit);
+    long long count = psDBDeleteRows(dbh, DETRESIDEXP_TABLE_NAME, where, limit);
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExpAnalysis");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExp");
         return count;
 
@@ -17206,5 +17176,5 @@
     return deleted;
 }
-bool detResidExpAnalysisPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **recipe, bool *keep, bool *accept)
+bool detResidExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **recipe, bool *keep, bool *accept)
 {
     psArray         *rowSet;
@@ -17215,7 +17185,7 @@
     int             rowID;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, NULL, 1);
+    rowSet = psDBSelectRows(dbh, DETRESIDEXP_TABLE_NAME, NULL, 1);
     if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDEXPANALYSIS_INDEX_NAME);
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDEXP_INDEX_NAME);
         psFree(rowSet);
         return NULL;
@@ -17230,7 +17200,7 @@
     psFree(rowSet);
 
-    rowID = psMetadataLookupS32(&status, row, DETRESIDEXPANALYSIS_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDEXPANALYSIS_INDEX_NAME);
+    rowID = psMetadataLookupS32(&status, row, DETRESIDEXP_INDEX_NAME);
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDEXP_INDEX_NAME);
         psFree(row);
         return NULL;
@@ -17238,7 +17208,7 @@
 
     popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETRESIDEXPANALYSIS_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, popped, 0);
+    psMetadataAddS32(popped, PS_LIST_TAIL, DETRESIDEXP_INDEX_NAME, 0, NULL, rowID);
+
+    deleted = psDBDeleteRows(dbh, DETRESIDEXP_TABLE_NAME, popped, 0);
     if (deleted != 1) {
         psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
@@ -17292,13 +17262,13 @@
 }
 
-bool detResidExpAnalysisInsertObject(psDB *dbh, detResidExpAnalysisRow *object)
-{
-    return detResidExpAnalysisInsert(dbh, object->det_id, object->iteration, object->exp_id, object->recipe, object->keep, object->accept);
-}
-
-bool detResidExpAnalysisInsertObjects(psDB *dbh, psArray *objects)
+bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
+{
+    return detResidExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->recipe, object->keep, object->accept);
+}
+
+bool detResidExpInsertObjects(psDB *dbh, psArray *objects)
 {
     for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detResidExpAnalysisInsertObject(dbh, objects->data[i])) {
+        if (!detResidExpInsertObject(dbh, objects->data[i])) {
             return false;
         }
@@ -17308,5 +17278,5 @@
 }
 
-detResidExpAnalysisRow *detResidExpAnalysisPopObject(psDB *dbh)
+detResidExpRow *detResidExpPopObject(psDB *dbh)
 {
     psS32           det_id;
@@ -17317,19 +17287,19 @@
     bool            accept;
 
-    if (!detResidExpAnalysisPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&recipe, &keep, &accept)) {
+    if (!detResidExpPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&recipe, &keep, &accept)) {
         psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
 
-    return detResidExpAnalysisRowAlloc(det_id, iteration, exp_id, recipe, keep, accept);
-}
-
-bool detResidExpAnalysisInsertFits(psDB *dbh, const psFits *fits)
+    return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, keep, accept);
+}
+
+bool detResidExpInsertFits(psDB *dbh, const psFits *fits)
 {
     psArray         *rowSet;
 
-    // move to (the first?) extension named  DETRESIDEXPANALYSIS_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETRESIDEXPANALYSIS_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETRESIDEXPANALYSIS_TABLE_NAME);
+    // move to (the first?) extension named  DETRESIDEXP_TABLE_NAME
+    if (!psFitsMoveExtName(fits, DETRESIDEXP_TABLE_NAME)) {
+        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETRESIDEXP_TABLE_NAME);
         return false;
     }
@@ -17349,5 +17319,5 @@
     }
 
-    if (!psDBInsertRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, rowSet)) {
+    if (!psDBInsertRows(dbh, DETRESIDEXP_TABLE_NAME, rowSet)) {
         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
         psFree(rowSet);
@@ -17360,9 +17330,9 @@
 }
 
-bool detResidExpAnalysisPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
+bool detResidExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
 {
     char            query[MAX_STRING_LENGTH];
 
-    if (!detResidExpAnalysisSelectRowsFits(dbh, fits, NULL, limit)) {
+    if (!detResidExpSelectRowsFits(dbh, fits, NULL, limit)) {
         psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
         return false;
@@ -17372,5 +17342,5 @@
     if (snprintf(query, MAX_STRING_LENGTH,
                 "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRESIDEXPANALYSIS_TABLE_NAME, DETRESIDEXPANALYSIS_INDEX_NAME, limit) < 0) {
+                DETRESIDEXP_TABLE_NAME, DETRESIDEXP_INDEX_NAME, limit) < 0) {
         psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %s bytes", MAX_STRING_LENGTH);
         return false;
@@ -17385,10 +17355,10 @@
 }
 
-bool detResidExpAnalysisSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
+bool detResidExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
     psU64           i;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, DETRESIDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
@@ -17397,6 +17367,6 @@
     // strip index column
     for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRESIDEXPANALYSIS_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDEXPANALYSIS_INDEX_NAME);
+        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRESIDEXP_INDEX_NAME)) {
+            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDEXP_INDEX_NAME);
             psFree(rowSet);
             return false;
@@ -17405,5 +17375,5 @@
 
     // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETRESIDEXPANALYSIS_TABLE_NAME)) {
+    if (!psFitsWriteTable(fits, NULL, rowSet, DETRESIDEXP_TABLE_NAME)) {
         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
         psFree(rowSet);
@@ -17416,5 +17386,5 @@
 }
 
-psMetadata *detResidExpAnalysisMetadataFromObject(const detResidExpAnalysisRow *object)
+psMetadata *detResidExpMetadataFromObject(const detResidExpRow *object)
 {
     psMetadata      *md;
@@ -17455,5 +17425,5 @@
 }
 
-detResidExpAnalysisRow *detResidExpAnalysisObjectFromMetadata(psMetadata *md)
+detResidExpRow *detResidExpObjectFromMetadata(psMetadata *md)
 {
     bool            status;
@@ -17496,7 +17466,7 @@
     }
 
-    return detResidExpAnalysisRowAlloc(det_id, iteration, exp_id, recipe, keep, accept);
-}
-psArray *detResidExpAnalysisSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
+    return detResidExpRowAlloc(det_id, iteration, exp_id, recipe, keep, accept);
+}
+psArray *detResidExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
@@ -17504,5 +17474,5 @@
     psU64           i;
 
-    rowSet = psDBSelectRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, DETRESIDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return NULL;
@@ -17511,6 +17481,6 @@
     // strip index column
     for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRESIDEXPANALYSIS_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDEXPANALYSIS_INDEX_NAME);
+        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRESIDEXP_INDEX_NAME)) {
+            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRESIDEXP_INDEX_NAME);
             psFree(rowSet);
             return false;
@@ -17524,5 +17494,5 @@
 
     for (i = 0; i < rowSet->n; i++) {
-        detResidExpAnalysisRow *object = detResidExpAnalysisObjectFromMetadata(rowSet->data[i]);
+        detResidExpRow *object = detResidExpObjectFromMetadata(rowSet->data[i]);
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -17533,11 +17503,11 @@
     return returnSet;
 }
-bool detResidExpAnalysisDeleteObject(psDB *dbh, const detResidExpAnalysisRow *object)
-{
-    psMetadata *where = detResidExpAnalysisMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, where, 0);
+bool detResidExpDeleteObject(psDB *dbh, const detResidExpRow *object)
+{
+    psMetadata *where = detResidExpMetadataFromObject(object);
+    long long count = psDBDeleteRows(dbh, DETRESIDEXP_TABLE_NAME, where, 0);
     psFree(where)
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExpAnalysis");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExp");
         return false;
     }
@@ -17545,21 +17515,21 @@
         // XXX should this be a psAbort() instead?  It is possible that
         // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detResidExpAnalysisRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detResidExpAnalysisDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
+        psError(PS_ERR_UNKNOWN, true, "detResidExpRow object matched more then one row.  Check your database schema");
+        return false;
+    }
+
+    return true;
+}
+long long detResidExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
 {
     long long       deleted = 0;
 
     for (long long i = 0; i < objects->n; i++) {
-        detResidExpAnalysisRow *object = objects->data[i];
-        psMetadata *where = detResidExpAnalysisMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETRESIDEXPANALYSIS_TABLE_NAME, where, limit);
+        detResidExpRow *object = objects->data[i];
+        psMetadata *where = detResidExpMetadataFromObject(object);
+        long long count = psDBDeleteRows(dbh, DETRESIDEXP_TABLE_NAME, where, limit);
         psFree(where)
         if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExpAnalysis");
+            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detResidExp");
             return count;
         }
@@ -17570,5 +17540,5 @@
     return deleted;
 }
-bool detResidExpAnalysisPrintObjects(FILE *stream, psArray *objects, bool mdcf)
+bool detResidExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -17576,9 +17546,9 @@
     psMetadata *output = psMetadataAlloc();
     for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detResidExpAnalysisMetadataFromObject(objects->data[i]);
+        psMetadata *md = detResidExpMetadataFromObject(objects->data[i]);
         if (!psMetadataAddMetadata(
             output,
             PS_LIST_TAIL,
-            DETRESIDEXPANALYSIS_TABLE_NAME,
+            DETRESIDEXP_TABLE_NAME,
             PS_META_DUPLICATE_OK,
             NULL,
