Index: trunk/ippdb/src/ippdb.c
===================================================================
--- trunk/ippdb/src/ippdb.c	(revision 9307)
+++ trunk/ippdb/src/ippdb.c	(revision 9423)
@@ -1,5 +1,24 @@
+/*
+ * code.c
+ *
+ * Copyright (C) 2006  Joshua Hoblitt
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * program; see the file COPYING. If not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
 /*
  *
- * This file was generated by glueforge 0.25
+ * This file was generated by glueforge 0.29
  *
  * Do NOT directly edit this file.
@@ -12,82 +31,45 @@
 #include "ippdb.h"
 
-#define IPPDB_DEFAULT_INDEX_NAME "position"
 #define WEATHER_TABLE_NAME "weather"
-#define WEATHER_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define SKYP_TRANSPARENCY_TABLE_NAME "skyp_transparency"
-#define SKYP_TRANSPARENCY_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define SKYP_ABSORPTION_TABLE_NAME "skyp_absorption"
-#define SKYP_ABSORPTION_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define SKYP_EMISSION_TABLE_NAME "skyp_emission"
-#define SKYP_EMISSION_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DIMM_TABLE_NAME "dimm"
-#define DIMM_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define SKYP_IR_TABLE_NAME "skyp_ir"
-#define SKYP_IR_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DOME_TABLE_NAME "dome"
-#define DOME_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define TELESCOPE_TABLE_NAME "telescope"
-#define TELESCOPE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define SUMMITEXP_TABLE_NAME "summitExp"
-#define SUMMITEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define PZPENDINGEXP_TABLE_NAME "pzPendingExp"
-#define PZPENDINGEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define PZPENDINGIMFILE_TABLE_NAME "pzPendingImfile"
-#define PZPENDINGIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define NEWEXP_TABLE_NAME "newExp"
-#define NEWEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define NEWIMFILE_TABLE_NAME "newImfile"
-#define NEWIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define RAWDETRENDEXP_TABLE_NAME "rawDetrendExp"
-#define RAWDETRENDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define RAWSCIENCEEXP_TABLE_NAME "rawScienceExp"
-#define RAWSCIENCEEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define RAWIMFILE_TABLE_NAME "rawImfile"
-#define RAWIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P1PENDINGEXP_TABLE_NAME "p1PendingExp"
-#define P1PENDINGEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P2PENDINGEXP_TABLE_NAME "p2PendingExp"
-#define P2PENDINGEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P2PENDINGIMFILE_TABLE_NAME "p2PendingImfile"
-#define P2PENDINGIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P2PROCESSEDEXP_TABLE_NAME "p2ProcessedExp"
-#define P2PROCESSEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P2PROCESSEDIMFILE_TABLE_NAME "p2ProcessedImfile"
-#define P2PROCESSEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P3PENDINGEXP_TABLE_NAME "p3PendingExp"
-#define P3PENDINGEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define P3PROCESSEDEXP_TABLE_NAME "p3ProcessedExp"
-#define P3PROCESSEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETRUN_TABLE_NAME "detRun"
-#define DETRUN_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETINPUTEXP_TABLE_NAME "detInputExp"
-#define DETINPUTEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETPROCESSEDIMFILE_TABLE_NAME "detProcessedImfile"
-#define DETPROCESSEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETPROCESSEDEXP_TABLE_NAME "detProcessedExp"
-#define DETPROCESSEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETSTACKEDIMFILE_TABLE_NAME "detStackedImfile"
-#define DETSTACKEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETNORMALIZEDSTATIMFILE_TABLE_NAME "detNormalizedStatImfile"
-#define DETNORMALIZEDSTATIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETNORMALIZEDIMFILE_TABLE_NAME "detNormalizedImfile"
-#define DETNORMALIZEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETNORMALIZEDEXP_TABLE_NAME "detNormalizedExp"
-#define DETNORMALIZEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETMASTERFRAME_TABLE_NAME "detMasterFrame"
-#define DETMASTERFRAME_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define DETMASTERIMFILE_TABLE_NAME "detMasterImfile"
-#define DETMASTERIMFILE_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 DETRUNSUMMARY_TABLE_NAME "detRunSummary"
-#define DETRUNSUMMARY_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
 #define MAX_STRING_LENGTH 1024
 
-psDB *ippdbInit(const char *host, const char *user, const char *passwd, const char *dbname)
-{
-    return psDBInit(host, user, passwd, dbname);
+psDB *ippdbInit(const char *host, const char *user, const char *passwd, const char *dbname, unsigned int port)
+{
+    return psDBInit(host, user, passwd, dbname, port);
 }
 
@@ -103,10 +85,4 @@
     psMetadata *clean = psMetadataCopy(NULL, md);
 
-    // don't bother to check the return status as the key we are trying to
-    // remove may or may not be there
-    // XXX someday psErr should be checked -- the only acceptable error is key
-    // not found
-    psMetadataRemoveKey(clean, IPPDB_DEFAULT_INDEX_NAME);
-    
     if (!ippdbPrintMetadataRaw(stream, clean, mdcf)) {
         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
@@ -205,10 +181,4 @@
     for (long i = 0; i < psArrayLength(mds); i++) {
         psMetadata *md = psMetadataCopy(NULL, mds->data[i]);
-        // don't bother to check the return status as the key we are trying to
-        // remove may or may not be there 
-        // XXX someday psErr should be checked -- the only acceptable error
-        // is key not found
-
-        psMetadataRemoveKey(md, IPPDB_DEFAULT_INDEX_NAME);
         if (!psMetadataAddMetadata(output, PS_LIST_TAIL, mdname, PS_META_DUPLICATE_OK, NULL, md)) {
             psError(PS_ERR_UNKNOWN, false, "failed to add a metadata item");
@@ -288,9 +258,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, WEATHER_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", WEATHER_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddF32(md, PS_LIST_TAIL, "temp01", 0, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item temp01");
@@ -403,96 +368,4 @@
     return deleted;
 }
-bool weatherPop(psDB *dbh, psF32 *temp01, psF32 *humi01, psF32 *temp02, psF32 *humi02, psF32 *temp03, psF32 *humi03, psF32 *pressure)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, WEATHER_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", WEATHER_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, WEATHER_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", WEATHER_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, WEATHER_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, WEATHER_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *temp01 = psMetadataLookupF32(&status, row, "temp01");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item temp01");
-        psFree(row);
-        return false;
-    }
-    *humi01 = psMetadataLookupF32(&status, row, "humi01");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item humi01");
-        psFree(row);
-        return false;
-    }
-    *temp02 = psMetadataLookupF32(&status, row, "temp02");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item temp02");
-        psFree(row);
-        return false;
-    }
-    *humi02 = psMetadataLookupF32(&status, row, "humi02");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item humi02");
-        psFree(row);
-        return false;
-    }
-    *temp03 = psMetadataLookupF32(&status, row, "temp03");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item temp03");
-        psFree(row);
-        return false;
-    }
-    *humi03 = psMetadataLookupF32(&status, row, "humi03");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item humi03");
-        psFree(row);
-        return false;
-    }
-    *pressure = psMetadataLookupF32(&status, row, "pressure");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item pressure");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool weatherInsertObject(psDB *dbh, weatherRow *object)
 {
@@ -509,22 +382,4 @@
 
     return true;
-}
-
-weatherRow *weatherPopObject(psDB *dbh)
-{
-    psF32           temp01;
-    psF32           humi01;
-    psF32           temp02;
-    psF32           humi02;
-    psF32           temp03;
-    psF32           humi03;
-    psF32           pressure;
-
-    if (!weatherPop(dbh, &temp01, &humi01, &temp02, &humi02, &temp03, &humi03, &pressure)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return weatherRowAlloc(temp01, humi01, temp02, humi02, temp03, humi03, pressure);
 }
 
@@ -564,46 +419,11 @@
 }
 
-bool weatherPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!weatherSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                WEATHER_TABLE_NAME, WEATHER_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool weatherSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, WEATHER_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, WEATHER_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", WEATHER_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -722,13 +542,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, WEATHER_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", WEATHER_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -847,9 +658,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, SKYP_TRANSPARENCY_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", SKYP_TRANSPARENCY_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
@@ -962,96 +768,4 @@
     return deleted;
 }
-bool skyp_transparencyPop(psDB *dbh, char **filter, psF64 *trans, psS32 *nstars, psF64 *ra, psF64 *decl, psF32 *exptime, psF64 *sky_bright)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, SKYP_TRANSPARENCY_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_TRANSPARENCY_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, SKYP_TRANSPARENCY_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_TRANSPARENCY_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, SKYP_TRANSPARENCY_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, SKYP_TRANSPARENCY_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *filter = psMetadataLookupPtr(&status, row, "filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
-        psFree(row);
-        return false;
-    }
-    *trans = psMetadataLookupF64(&status, row, "trans");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item trans");
-        psFree(row);
-        return false;
-    }
-    *nstars = psMetadataLookupS32(&status, row, "nstars");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item nstars");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *exptime = psMetadataLookupF32(&status, row, "exptime");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exptime");
-        psFree(row);
-        return false;
-    }
-    *sky_bright = psMetadataLookupF64(&status, row, "sky_bright");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sky_bright");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool skyp_transparencyInsertObject(psDB *dbh, skyp_transparencyRow *object)
 {
@@ -1068,22 +782,4 @@
 
     return true;
-}
-
-skyp_transparencyRow *skyp_transparencyPopObject(psDB *dbh)
-{
-    char            filter[256];
-    psF64           trans;
-    psS32           nstars;
-    psF64           ra;
-    psF64           decl;
-    psF32           exptime;
-    psF64           sky_bright;
-
-    if (!skyp_transparencyPop(dbh, (char **)&filter, &trans, &nstars, &ra, &decl, &exptime, &sky_bright)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return skyp_transparencyRowAlloc(filter, trans, nstars, ra, decl, exptime, sky_bright);
 }
 
@@ -1123,46 +819,11 @@
 }
 
-bool skyp_transparencyPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!skyp_transparencySelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                SKYP_TRANSPARENCY_TABLE_NAME, SKYP_TRANSPARENCY_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool skyp_transparencySelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, SKYP_TRANSPARENCY_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, SKYP_TRANSPARENCY_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_TRANSPARENCY_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -1281,13 +942,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, SKYP_TRANSPARENCY_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_TRANSPARENCY_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -1408,9 +1060,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, SKYP_ABSORPTION_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", SKYP_ABSORPTION_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "disperser_id", 0, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item disperser_id");
@@ -1543,108 +1190,4 @@
     return deleted;
 }
-bool skyp_absorptionPop(psDB *dbh, char **disperser_id, psF32 *atmcomp1, psF32 *atmcomp2, psF32 *atmcomp3, psS32 *nstars, psF64 *ra, psF64 *decl, psF32 *exptime, psF64 *sky_bright)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, SKYP_ABSORPTION_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_ABSORPTION_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, SKYP_ABSORPTION_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_ABSORPTION_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, SKYP_ABSORPTION_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, SKYP_ABSORPTION_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *disperser_id = psMetadataLookupPtr(&status, row, "disperser_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item disperser_id");
-        psFree(row);
-        return false;
-    }
-    *atmcomp1 = psMetadataLookupF32(&status, row, "atmcomp1");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp1");
-        psFree(row);
-        return false;
-    }
-    *atmcomp2 = psMetadataLookupF32(&status, row, "atmcomp2");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp2");
-        psFree(row);
-        return false;
-    }
-    *atmcomp3 = psMetadataLookupF32(&status, row, "atmcomp3");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp3");
-        psFree(row);
-        return false;
-    }
-    *nstars = psMetadataLookupS32(&status, row, "nstars");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item nstars");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *exptime = psMetadataLookupF32(&status, row, "exptime");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exptime");
-        psFree(row);
-        return false;
-    }
-    *sky_bright = psMetadataLookupF64(&status, row, "sky_bright");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sky_bright");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool skyp_absorptionInsertObject(psDB *dbh, skyp_absorptionRow *object)
 {
@@ -1661,24 +1204,4 @@
 
     return true;
-}
-
-skyp_absorptionRow *skyp_absorptionPopObject(psDB *dbh)
-{
-    char            disperser_id[256];
-    psF32           atmcomp1;
-    psF32           atmcomp2;
-    psF32           atmcomp3;
-    psS32           nstars;
-    psF64           ra;
-    psF64           decl;
-    psF32           exptime;
-    psF64           sky_bright;
-
-    if (!skyp_absorptionPop(dbh, (char **)&disperser_id, &atmcomp1, &atmcomp2, &atmcomp3, &nstars, &ra, &decl, &exptime, &sky_bright)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return skyp_absorptionRowAlloc(disperser_id, atmcomp1, atmcomp2, atmcomp3, nstars, ra, decl, exptime, sky_bright);
 }
 
@@ -1718,46 +1241,11 @@
 }
 
-bool skyp_absorptionPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!skyp_absorptionSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                SKYP_ABSORPTION_TABLE_NAME, SKYP_ABSORPTION_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool skyp_absorptionSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, SKYP_ABSORPTION_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, SKYP_ABSORPTION_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_ABSORPTION_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -1898,13 +1386,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, SKYP_ABSORPTION_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_ABSORPTION_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -2022,9 +1501,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, SKYP_EMISSION_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", SKYP_EMISSION_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "disperser_id", 0, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item disperser_id");
@@ -2127,90 +1601,4 @@
     return deleted;
 }
-bool skyp_emissionPop(psDB *dbh, char **disperser_id, psF32 *atmcomp1, psF32 *atmcomp2, psF32 *atmcomp3, psF32 *continuum, psF32 *exptime)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, SKYP_EMISSION_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_EMISSION_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, SKYP_EMISSION_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_EMISSION_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, SKYP_EMISSION_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, SKYP_EMISSION_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *disperser_id = psMetadataLookupPtr(&status, row, "disperser_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item disperser_id");
-        psFree(row);
-        return false;
-    }
-    *atmcomp1 = psMetadataLookupF32(&status, row, "atmcomp1");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp1");
-        psFree(row);
-        return false;
-    }
-    *atmcomp2 = psMetadataLookupF32(&status, row, "atmcomp2");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp2");
-        psFree(row);
-        return false;
-    }
-    *atmcomp3 = psMetadataLookupF32(&status, row, "atmcomp3");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item atmcomp3");
-        psFree(row);
-        return false;
-    }
-    *continuum = psMetadataLookupF32(&status, row, "continuum");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item continuum");
-        psFree(row);
-        return false;
-    }
-    *exptime = psMetadataLookupF32(&status, row, "exptime");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exptime");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool skyp_emissionInsertObject(psDB *dbh, skyp_emissionRow *object)
 {
@@ -2227,21 +1615,4 @@
 
     return true;
-}
-
-skyp_emissionRow *skyp_emissionPopObject(psDB *dbh)
-{
-    char            disperser_id[256];
-    psF32           atmcomp1;
-    psF32           atmcomp2;
-    psF32           atmcomp3;
-    psF32           continuum;
-    psF32           exptime;
-
-    if (!skyp_emissionPop(dbh, (char **)&disperser_id, &atmcomp1, &atmcomp2, &atmcomp3, &continuum, &exptime)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return skyp_emissionRowAlloc(disperser_id, atmcomp1, atmcomp2, atmcomp3, continuum, exptime);
 }
 
@@ -2281,46 +1652,11 @@
 }
 
-bool skyp_emissionPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!skyp_emissionSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                SKYP_EMISSION_TABLE_NAME, SKYP_EMISSION_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool skyp_emissionSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, SKYP_EMISSION_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, SKYP_EMISSION_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_EMISSION_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -2428,13 +1764,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, SKYP_EMISSION_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_EMISSION_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -2553,9 +1880,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DIMM_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DIMM_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddF32(md, PS_LIST_TAIL, "sigmax", 0, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item sigmax");
@@ -2668,96 +1990,4 @@
     return deleted;
 }
-bool dimmPop(psDB *dbh, psF32 *sigmax, psF32 *sigmay, psF32 *fwhm, psF64 *ra, psF64 *decl, psF32 *expttime, char **telescope_id)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DIMM_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DIMM_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DIMM_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DIMM_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DIMM_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DIMM_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *sigmax = psMetadataLookupF32(&status, row, "sigmax");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sigmax");
-        psFree(row);
-        return false;
-    }
-    *sigmay = psMetadataLookupF32(&status, row, "sigmay");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sigmay");
-        psFree(row);
-        return false;
-    }
-    *fwhm = psMetadataLookupF32(&status, row, "fwhm");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fwhm");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *expttime = psMetadataLookupF32(&status, row, "expttime");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item expttime");
-        psFree(row);
-        return false;
-    }
-    *telescope_id = psMetadataLookupPtr(&status, row, "telescope_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope_id");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool dimmInsertObject(psDB *dbh, dimmRow *object)
 {
@@ -2774,22 +2004,4 @@
 
     return true;
-}
-
-dimmRow *dimmPopObject(psDB *dbh)
-{
-    psF32           sigmax;
-    psF32           sigmay;
-    psF32           fwhm;
-    psF64           ra;
-    psF64           decl;
-    psF32           expttime;
-    char            telescope_id[256];
-
-    if (!dimmPop(dbh, &sigmax, &sigmay, &fwhm, &ra, &decl, &expttime, (char **)&telescope_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return dimmRowAlloc(sigmax, sigmay, fwhm, ra, decl, expttime, telescope_id);
 }
 
@@ -2829,46 +2041,11 @@
 }
 
-bool dimmPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!dimmSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DIMM_TABLE_NAME, DIMM_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool dimmSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DIMM_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DIMM_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DIMM_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -2987,13 +2164,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DIMM_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DIMM_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -3110,9 +2278,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, SKYP_IR_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", SKYP_IR_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddF64(md, PS_LIST_TAIL, "sky_bright", 0, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item sky_bright");
@@ -3215,90 +2378,4 @@
     return deleted;
 }
-bool skyp_irPop(psDB *dbh, psF64 *sky_bright, psF64 *sky_var, psF64 *ra, psF64 *decl, psF32 *fov_x, psF32 *fov_y)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, SKYP_IR_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_IR_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, SKYP_IR_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SKYP_IR_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, SKYP_IR_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, SKYP_IR_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *sky_bright = psMetadataLookupF64(&status, row, "sky_bright");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sky_bright");
-        psFree(row);
-        return false;
-    }
-    *sky_var = psMetadataLookupF64(&status, row, "sky_var");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sky_var");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *fov_x = psMetadataLookupF32(&status, row, "fov_x");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fov_x");
-        psFree(row);
-        return false;
-    }
-    *fov_y = psMetadataLookupF32(&status, row, "fov_y");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fov_y");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool skyp_irInsertObject(psDB *dbh, skyp_irRow *object)
 {
@@ -3315,21 +2392,4 @@
 
     return true;
-}
-
-skyp_irRow *skyp_irPopObject(psDB *dbh)
-{
-    psF64           sky_bright;
-    psF64           sky_var;
-    psF64           ra;
-    psF64           decl;
-    psF32           fov_x;
-    psF32           fov_y;
-
-    if (!skyp_irPop(dbh, &sky_bright, &sky_var, &ra, &decl, &fov_x, &fov_y)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return skyp_irRowAlloc(sky_bright, sky_var, ra, decl, fov_x, fov_y);
 }
 
@@ -3369,46 +2429,11 @@
 }
 
-bool skyp_irPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!skyp_irSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                SKYP_IR_TABLE_NAME, SKYP_IR_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool skyp_irSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, SKYP_IR_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, SKYP_IR_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_IR_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -3516,13 +2541,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, SKYP_IR_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SKYP_IR_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -3637,9 +2653,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DOME_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DOME_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddF32(md, PS_LIST_TAIL, "az", 0, NULL, 0.0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item az");
@@ -3722,78 +2733,4 @@
     return deleted;
 }
-bool domePop(psDB *dbh, psF32 *az, bool *open, bool *light, bool *track)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DOME_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DOME_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DOME_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DOME_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DOME_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DOME_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *az = psMetadataLookupF32(&status, row, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        psFree(row);
-        return false;
-    }
-    *open = psMetadataLookupBool(&status, row, "open");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item open");
-        psFree(row);
-        return false;
-    }
-    *light = psMetadataLookupBool(&status, row, "light");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item light");
-        psFree(row);
-        return false;
-    }
-    *track = psMetadataLookupBool(&status, row, "track");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item track");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool domeInsertObject(psDB *dbh, domeRow *object)
 {
@@ -3810,19 +2747,4 @@
 
     return true;
-}
-
-domeRow *domePopObject(psDB *dbh)
-{
-    psF32           az;
-    bool            open;
-    bool            light;
-    bool            track;
-
-    if (!domePop(dbh, &az, &open, &light, &track)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return domeRowAlloc(az, open, light, track);
 }
 
@@ -3862,46 +2784,11 @@
 }
 
-bool domePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!domeSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DOME_TABLE_NAME, DOME_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool domeSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DOME_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DOME_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DOME_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -3987,13 +2874,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DOME_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DOME_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -4110,9 +2988,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, TELESCOPE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", TELESCOPE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "guide", 0, NULL, "255")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item guide");
@@ -4205,84 +3078,4 @@
     return deleted;
 }
-bool telescopePop(psDB *dbh, char **guide, psF32 *alt, psF32 *az, psF64 *ra, psF64 *decl)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, TELESCOPE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", TELESCOPE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, TELESCOPE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", TELESCOPE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, TELESCOPE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, TELESCOPE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *guide = psMetadataLookupPtr(&status, row, "guide");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item guide");
-        psFree(row);
-        return false;
-    }
-    *alt = psMetadataLookupF32(&status, row, "alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item alt");
-        psFree(row);
-        return false;
-    }
-    *az = psMetadataLookupF32(&status, row, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool telescopeInsertObject(psDB *dbh, telescopeRow *object)
 {
@@ -4299,20 +3092,4 @@
 
     return true;
-}
-
-telescopeRow *telescopePopObject(psDB *dbh)
-{
-    char            guide[256];
-    psF32           alt;
-    psF32           az;
-    psF64           ra;
-    psF64           decl;
-
-    if (!telescopePop(dbh, (char **)&guide, &alt, &az, &ra, &decl)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return telescopeRowAlloc(guide, alt, az, ra, decl);
 }
 
@@ -4352,46 +3129,11 @@
 }
 
-bool telescopePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!telescopeSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                TELESCOPE_TABLE_NAME, TELESCOPE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool telescopeSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, TELESCOPE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, TELESCOPE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", TELESCOPE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -4488,13 +3230,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, TELESCOPE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", TELESCOPE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -4615,9 +3348,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, SUMMITEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", SUMMITEXP_INDEX_NAME);
-        psFree(md);
-        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");
@@ -4710,84 +3438,4 @@
     return deleted;
 }
-bool summitExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, char **uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, SUMMITEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SUMMITEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, SUMMITEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", SUMMITEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, SUMMITEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, SUMMITEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
-        psFree(row);
-        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;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool summitExpInsertObject(psDB *dbh, summitExpRow *object)
 {
@@ -4804,20 +3452,4 @@
 
     return true;
-}
-
-summitExpRow *summitExpPopObject(psDB *dbh)
-{
-    char            exp_id[256];
-    char            camera[256];
-    char            telescope[256];
-    char            exp_type[256];
-    char            uri[256];
-
-    if (!summitExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, (char **)&uri)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return summitExpRowAlloc(exp_id, camera, telescope, exp_type, uri);
 }
 
@@ -4857,46 +3489,11 @@
 }
 
-bool summitExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!summitExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                SUMMITEXP_TABLE_NAME, SUMMITEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool summitExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, SUMMITEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, SUMMITEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SUMMITEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -4993,13 +3590,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, SUMMITEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", SUMMITEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -5119,9 +3707,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, PZPENDINGEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", PZPENDINGEXP_INDEX_NAME);
-        psFree(md);
-        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");
@@ -5214,84 +3797,4 @@
     return deleted;
 }
-bool pzPendingExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, PZPENDINGEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", PZPENDINGEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, PZPENDINGEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", PZPENDINGEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, PZPENDINGEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, PZPENDINGEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
-        psFree(row);
-        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;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *imfiles = psMetadataLookupS32(&status, row, "imfiles");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool pzPendingExpInsertObject(psDB *dbh, pzPendingExpRow *object)
 {
@@ -5308,20 +3811,4 @@
 
     return true;
-}
-
-pzPendingExpRow *pzPendingExpPopObject(psDB *dbh)
-{
-    char            exp_id[256];
-    char            camera[256];
-    char            telescope[256];
-    char            exp_type[256];
-    psS32           imfiles;
-
-    if (!pzPendingExpPop(dbh, (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 pzPendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles);
 }
 
@@ -5361,46 +3848,11 @@
 }
 
-bool pzPendingExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!pzPendingExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                PZPENDINGEXP_TABLE_NAME, PZPENDINGEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool pzPendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, PZPENDINGEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, PZPENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", PZPENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -5497,13 +3949,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, PZPENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", PZPENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -5629,9 +4072,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, PZPENDINGIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", PZPENDINGIMFILE_INDEX_NAME);
-        psFree(md);
-        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");
@@ -5754,102 +4192,4 @@
     return deleted;
 }
-bool pzPendingImfilePop(psDB *dbh, char **exp_id, char **camera, char **telescope, psS32 *bytes, char **md5sum, char **class, char **class_id, char **uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, PZPENDINGIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", PZPENDINGIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, PZPENDINGIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", PZPENDINGIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, PZPENDINGIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, PZPENDINGIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *exp_id = psMetadataLookupPtr(&status, row, "exp_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
-        psFree(row);
-        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) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bytes");
-        psFree(row);
-        return false;
-    }
-    *md5sum = psMetadataLookupPtr(&status, row, "md5sum");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item md5sum");
-        psFree(row);
-        return false;
-    }
-    *class = psMetadataLookupPtr(&status, row, "class");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool pzPendingImfileInsertObject(psDB *dbh, pzPendingImfileRow *object)
 {
@@ -5866,23 +4206,4 @@
 
     return true;
-}
-
-pzPendingImfileRow *pzPendingImfilePopObject(psDB *dbh)
-{
-    char            exp_id[256];
-    char            camera[256];
-    char            telescope[256];
-    psS32           bytes;
-    char            md5sum[256];
-    char            class[256];
-    char            class_id[256];
-    char            uri[256];
-
-    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, camera, telescope, bytes, md5sum, class, class_id, uri);
 }
 
@@ -5922,46 +4243,11 @@
 }
 
-bool pzPendingImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!pzPendingImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                PZPENDINGIMFILE_TABLE_NAME, PZPENDINGIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool pzPendingImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, PZPENDINGIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, PZPENDINGIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", PZPENDINGIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -6091,13 +4377,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, PZPENDINGIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", PZPENDINGIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -6219,9 +4496,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, NEWEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", NEWEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -6324,90 +4596,4 @@
     return deleted;
 }
-bool newExpPop(psDB *dbh, char **exp_tag, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, NEWEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", NEWEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, NEWEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", NEWEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, NEWEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, NEWEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_id");
-        psFree(row);
-        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;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *imfiles = psMetadataLookupS32(&status, row, "imfiles");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool newExpInsertObject(psDB *dbh, newExpRow *object)
 {
@@ -6424,21 +4610,4 @@
 
     return true;
-}
-
-newExpRow *newExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            exp_id[256];
-    char            camera[256];
-    char            telescope[256];
-    char            exp_type[256];
-    psS32           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_tag, exp_id, camera, telescope, exp_type, imfiles);
 }
 
@@ -6478,46 +4647,11 @@
 }
 
-bool newExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!newExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                NEWEXP_TABLE_NAME, NEWEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool newExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, NEWEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, NEWEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", NEWEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -6625,13 +4759,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, NEWEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", NEWEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -6750,9 +4875,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, NEWIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", NEWIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -6835,78 +4955,4 @@
     return deleted;
 }
-bool newImfilePop(psDB *dbh, char **exp_tag, char **class, char **class_id, char **uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, NEWIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", NEWIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, NEWIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", NEWIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, NEWIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, NEWIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *class = psMetadataLookupPtr(&status, row, "class");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool newImfileInsertObject(psDB *dbh, newImfileRow *object)
 {
@@ -6923,19 +4969,4 @@
 
     return true;
-}
-
-newImfileRow *newImfilePopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            class[256];
-    char            class_id[256];
-    char            uri[256];
-
-    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_tag, class, class_id, uri);
 }
 
@@ -6975,46 +5006,11 @@
 }
 
-bool newImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!newImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                NEWIMFILE_TABLE_NAME, NEWIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool newImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, NEWIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, NEWIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", NEWIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -7100,13 +5096,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, NEWIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", NEWIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -7241,9 +5228,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, RAWDETRENDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", RAWDETRENDEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -7466,162 +5448,4 @@
     return deleted;
 }
-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, char **object)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, RAWDETRENDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWDETRENDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, RAWDETRENDEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWDETRENDEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, RAWDETRENDEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, RAWDETRENDEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *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;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *imfiles = psMetadataLookupS32(&status, row, "imfiles");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
-        psFree(row);
-        return false;
-    }
-    *filter = psMetadataLookupPtr(&status, row, "filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
-        psFree(row);
-        return false;
-    }
-    *airmass = psMetadataLookupF32(&status, row, "airmass");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item airmass");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *exp_time = psMetadataLookupF32(&status, row, "exp_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *alt = psMetadataLookupF64(&status, row, "alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item alt");
-        psFree(row);
-        return false;
-    }
-    *az = psMetadataLookupF64(&status, row, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        psFree(row);
-        return false;
-    }
-    *ccd_temp = psMetadataLookupF32(&status, row, "ccd_temp");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ccd_temp");
-        psFree(row);
-        return false;
-    }
-    *posang = psMetadataLookupF64(&status, row, "posang");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item posang");
-        psFree(row);
-        return false;
-    }
-    *object = psMetadataLookupPtr(&status, row, "object");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item object");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool rawDetrendExpInsertObject(psDB *dbh, rawDetrendExpRow *object)
 {
@@ -7638,33 +5462,4 @@
 
     return true;
-}
-
-rawDetrendExpRow *rawDetrendExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            camera[256];
-    char            telescope[256];
-    char            exp_type[256];
-    psS32           imfiles;
-    char            filter[256];
-    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;
-    char            object[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, (char **)&object)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    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, object);
 }
 
@@ -7704,46 +5499,11 @@
 }
 
-bool rawDetrendExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!rawDetrendExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                RAWDETRENDEXP_TABLE_NAME, RAWDETRENDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool rawDetrendExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, RAWDETRENDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWDETRENDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -7985,13 +5745,4 @@
     }
 
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, RAWDETRENDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWDETRENDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
-    }
-
     // convert psMetadata rows to row objects
 
@@ -8124,9 +5875,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, RAWSCIENCEEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", RAWSCIENCEEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -8349,162 +6095,4 @@
     return deleted;
 }
-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, char **object)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, RAWSCIENCEEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWSCIENCEEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, RAWSCIENCEEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWSCIENCEEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, RAWSCIENCEEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, RAWSCIENCEEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *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;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *imfiles = psMetadataLookupS32(&status, row, "imfiles");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
-        psFree(row);
-        return false;
-    }
-    *filter = psMetadataLookupPtr(&status, row, "filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
-        psFree(row);
-        return false;
-    }
-    *airmass = psMetadataLookupF32(&status, row, "airmass");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item airmass");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *exp_time = psMetadataLookupF32(&status, row, "exp_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *alt = psMetadataLookupF64(&status, row, "alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item alt");
-        psFree(row);
-        return false;
-    }
-    *az = psMetadataLookupF64(&status, row, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        psFree(row);
-        return false;
-    }
-    *ccd_temp = psMetadataLookupF32(&status, row, "ccd_temp");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ccd_temp");
-        psFree(row);
-        return false;
-    }
-    *posang = psMetadataLookupF64(&status, row, "posang");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item posang");
-        psFree(row);
-        return false;
-    }
-    *object = psMetadataLookupPtr(&status, row, "object");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item object");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool rawScienceExpInsertObject(psDB *dbh, rawScienceExpRow *object)
 {
@@ -8521,33 +6109,4 @@
 
     return true;
-}
-
-rawScienceExpRow *rawScienceExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            camera[256];
-    char            telescope[256];
-    char            exp_type[256];
-    psS32           imfiles;
-    char            filter[256];
-    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;
-    char            object[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, (char **)&object)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    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, object);
 }
 
@@ -8587,46 +6146,11 @@
 }
 
-bool rawScienceExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!rawScienceExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                RAWSCIENCEEXP_TABLE_NAME, RAWSCIENCEEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool rawScienceExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, RAWSCIENCEEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWSCIENCEEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -8868,13 +6392,4 @@
     }
 
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, RAWSCIENCEEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWSCIENCEEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
-    }
-
     // convert psMetadata rows to row objects
 
@@ -9008,9 +6523,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, RAWIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", RAWIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -9233,162 +6743,4 @@
     return deleted;
 }
-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, char **object)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, RAWIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, RAWIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", RAWIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, RAWIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, RAWIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *class = psMetadataLookupPtr(&status, row, "class");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        return false;
-    }
-    *exp_type = psMetadataLookupPtr(&status, row, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        psFree(row);
-        return false;
-    }
-    *filter = psMetadataLookupPtr(&status, row, "filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
-        psFree(row);
-        return false;
-    }
-    *airmass = psMetadataLookupF32(&status, row, "airmass");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item airmass");
-        psFree(row);
-        return false;
-    }
-    *ra = psMetadataLookupF64(&status, row, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        psFree(row);
-        return false;
-    }
-    *decl = psMetadataLookupF64(&status, row, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        psFree(row);
-        return false;
-    }
-    *exp_time = psMetadataLookupF32(&status, row, "exp_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *alt = psMetadataLookupF64(&status, row, "alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item alt");
-        psFree(row);
-        return false;
-    }
-    *az = psMetadataLookupF64(&status, row, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        psFree(row);
-        return false;
-    }
-    *ccd_temp = psMetadataLookupF32(&status, row, "ccd_temp");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ccd_temp");
-        psFree(row);
-        return false;
-    }
-    *posang = psMetadataLookupF64(&status, row, "posang");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item posang");
-        psFree(row);
-        return false;
-    }
-    *object = psMetadataLookupPtr(&status, row, "object");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item object");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
 {
@@ -9405,33 +6757,4 @@
 
     return true;
-}
-
-rawImfileRow *rawImfilePopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            class[256];
-    char            class_id[256];
-    char            uri[256];
-    char            exp_type[256];
-    char            filter[256];
-    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;
-    char            object[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, (char **)&object)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    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, object);
 }
 
@@ -9471,46 +6794,11 @@
 }
 
-bool rawImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!rawImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                RAWIMFILE_TABLE_NAME, RAWIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool rawImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, RAWIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, RAWIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -9752,13 +7040,4 @@
     }
 
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, RAWIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", RAWIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
-    }
-
     // convert psMetadata rows to row objects
 
@@ -9872,9 +7151,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P1PENDINGEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P1PENDINGEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -9947,72 +7221,4 @@
     return deleted;
 }
-bool p1PendingExpPop(psDB *dbh, char **exp_tag, char **recipe, psS32 *p1_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P1PENDINGEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P1PENDINGEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P1PENDINGEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P1PENDINGEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P1PENDINGEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P1PENDINGEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *recipe = psMetadataLookupPtr(&status, row, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        psFree(row);
-        return false;
-    }
-    *p1_version = psMetadataLookupS32(&status, row, "p1_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p1_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p1PendingExpInsertObject(psDB *dbh, p1PendingExpRow *object)
 {
@@ -10029,18 +7235,4 @@
 
     return true;
-}
-
-p1PendingExpRow *p1PendingExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            recipe[256];
-    psS32           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_tag, recipe, p1_version);
 }
 
@@ -10080,46 +7272,11 @@
 }
 
-bool p1PendingExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p1PendingExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P1PENDINGEXP_TABLE_NAME, P1PENDINGEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p1PendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P1PENDINGEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P1PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P1PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -10194,13 +7351,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P1PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P1PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -10317,9 +7465,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P2PENDINGEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P2PENDINGEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -10402,78 +7545,4 @@
     return deleted;
 }
-bool p2PendingExpPop(psDB *dbh, char **exp_tag, char **recipe, psS32 *p1_version, psS32 *p2_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P2PENDINGEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PENDINGEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P2PENDINGEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PENDINGEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P2PENDINGEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P2PENDINGEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *recipe = psMetadataLookupPtr(&status, row, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        psFree(row);
-        return false;
-    }
-    *p1_version = psMetadataLookupS32(&status, row, "p1_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p1_version");
-        psFree(row);
-        return false;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p2PendingExpInsertObject(psDB *dbh, p2PendingExpRow *object)
 {
@@ -10490,19 +7559,4 @@
 
     return true;
-}
-
-p2PendingExpRow *p2PendingExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            recipe[256];
-    psS32           p1_version;
-    psS32           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_tag, recipe, p1_version, p2_version);
 }
 
@@ -10542,46 +7596,11 @@
 }
 
-bool p2PendingExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p2PendingExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P2PENDINGEXP_TABLE_NAME, P2PENDINGEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p2PendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P2PENDINGEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P2PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -10667,13 +7686,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P2PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -10794,9 +7804,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P2PENDINGIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P2PENDINGIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -10899,90 +7904,4 @@
     return deleted;
 }
-bool p2PendingImfilePop(psDB *dbh, char **exp_tag, char **class_id, char **uri, char **recipe, psS32 *p1_version, psS32 *p2_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P2PENDINGIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PENDINGIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P2PENDINGIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PENDINGIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P2PENDINGIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P2PENDINGIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *p1_version = psMetadataLookupS32(&status, row, "p1_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p1_version");
-        psFree(row);
-        return false;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p2PendingImfileInsertObject(psDB *dbh, p2PendingImfileRow *object)
 {
@@ -10999,21 +7918,4 @@
 
     return true;
-}
-
-p2PendingImfileRow *p2PendingImfilePopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-    psS32           p1_version;
-    psS32           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_tag, class_id, uri, recipe, p1_version, p2_version);
 }
 
@@ -11053,46 +7955,11 @@
 }
 
-bool p2PendingImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p2PendingImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P2PENDINGIMFILE_TABLE_NAME, P2PENDINGIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p2PendingImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P2PENDINGIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P2PENDINGIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PENDINGIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -11200,13 +8067,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P2PENDINGIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PENDINGIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -11321,9 +8179,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P2PROCESSEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P2PROCESSEDEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -11396,72 +8249,4 @@
     return deleted;
 }
-bool p2ProcessedExpPop(psDB *dbh, char **exp_tag, psS32 *p1_version, psS32 *p2_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P2PROCESSEDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PROCESSEDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P2PROCESSEDEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PROCESSEDEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P2PROCESSEDEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P2PROCESSEDEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *p1_version = psMetadataLookupS32(&status, row, "p1_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p1_version");
-        psFree(row);
-        return false;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p2ProcessedExpInsertObject(psDB *dbh, p2ProcessedExpRow *object)
 {
@@ -11478,18 +8263,4 @@
 
     return true;
-}
-
-p2ProcessedExpRow *p2ProcessedExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    psS32           p1_version;
-    psS32           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_tag, p1_version, p2_version);
 }
 
@@ -11529,46 +8300,11 @@
 }
 
-bool p2ProcessedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p2ProcessedExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P2PROCESSEDEXP_TABLE_NAME, P2PROCESSEDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p2ProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P2PROCESSEDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P2PROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -11643,13 +8379,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P2PROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -11777,9 +8504,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P2PROCESSEDIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P2PROCESSEDIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -11932,120 +8654,4 @@
     return deleted;
 }
-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;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P2PROCESSEDIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PROCESSEDIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P2PROCESSEDIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P2PROCESSEDIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P2PROCESSEDIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P2PROCESSEDIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-    *p1_version = psMetadataLookupS32(&status, row, "p1_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p1_version");
-        psFree(row);
-        return false;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p2ProcessedImfileInsertObject(psDB *dbh, p2ProcessedImfileRow *object)
 {
@@ -12062,26 +8668,4 @@
 
     return true;
-}
-
-p2ProcessedImfileRow *p2ProcessedImfilePopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-    psS32           p1_version;
-    psS32           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_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, p1_version, p2_version);
 }
 
@@ -12121,46 +8705,11 @@
 }
 
-bool p2ProcessedImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p2ProcessedImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P2PROCESSEDIMFILE_TABLE_NAME, P2PROCESSEDIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p2ProcessedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P2PROCESSEDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P2PROCESSEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PROCESSEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -12323,13 +8872,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P2PROCESSEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P2PROCESSEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -12444,9 +8984,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P3PENDINGEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P3PENDINGEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -12519,72 +9054,4 @@
     return deleted;
 }
-bool p3PendingExpPop(psDB *dbh, char **exp_tag, psS32 *p2_version, psS32 *p3_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P3PENDINGEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P3PENDINGEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P3PENDINGEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P3PENDINGEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P3PENDINGEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P3PENDINGEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-    *p3_version = psMetadataLookupS32(&status, row, "p3_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p3_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p3PendingExpInsertObject(psDB *dbh, p3PendingExpRow *object)
 {
@@ -12601,18 +9068,4 @@
 
     return true;
-}
-
-p3PendingExpRow *p3PendingExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    psS32           p2_version;
-    psS32           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_tag, p2_version, p3_version);
 }
 
@@ -12652,46 +9105,11 @@
 }
 
-bool p3PendingExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p3PendingExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P3PENDINGEXP_TABLE_NAME, P3PENDINGEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p3PendingExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P3PENDINGEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P3PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P3PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -12766,13 +9184,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P3PENDINGEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P3PENDINGEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -12903,9 +9312,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, P3PROCESSEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", P3PROCESSEDEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
@@ -13098,144 +9502,4 @@
     return deleted;
 }
-bool p3ProcessedExpPop(psDB *dbh, char **exp_tag, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, psF32 *sigma_ra, psF32 *sigma_dec, psS32 *nastro, char **b1_uri, char **b2_uri, psF32 *zp_mean, psF32 *zp_stdev, psS32 *p2_version, psS32 *p3_version)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, P3PROCESSEDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P3PROCESSEDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, P3PROCESSEDEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", P3PROCESSEDEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, P3PROCESSEDEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, P3PROCESSEDEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    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;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *sigma_ra = psMetadataLookupF32(&status, row, "sigma_ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sigma_ra");
-        psFree(row);
-        return false;
-    }
-    *sigma_dec = psMetadataLookupF32(&status, row, "sigma_dec");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item sigma_dec");
-        psFree(row);
-        return false;
-    }
-    *nastro = psMetadataLookupS32(&status, row, "nastro");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item nastro");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-    *zp_mean = psMetadataLookupF32(&status, row, "zp_mean");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item zp_mean");
-        psFree(row);
-        return false;
-    }
-    *zp_stdev = psMetadataLookupF32(&status, row, "zp_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item zp_stdev");
-        psFree(row);
-        return false;
-    }
-    *p2_version = psMetadataLookupS32(&status, row, "p2_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p2_version");
-        psFree(row);
-        return false;
-    }
-    *p3_version = psMetadataLookupS32(&status, row, "p3_version");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item p3_version");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool p3ProcessedExpInsertObject(psDB *dbh, p3ProcessedExpRow *object)
 {
@@ -13252,30 +9516,4 @@
 
     return true;
-}
-
-p3ProcessedExpRow *p3ProcessedExpPopObject(psDB *dbh)
-{
-    char            exp_tag[256];
-    char            uri[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    psF32           sigma_ra;
-    psF32           sigma_dec;
-    psS32           nastro;
-    char            b1_uri[256];
-    char            b2_uri[256];
-    psF32           zp_mean;
-    psF32           zp_stdev;
-    psS32           p2_version;
-    psS32           p3_version;
-
-    if (!p3ProcessedExpPop(dbh, (char **)&exp_tag, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, &sigma_ra, &sigma_dec, &nastro, (char **)&b1_uri, (char **)&b2_uri, &zp_mean, &zp_stdev, &p2_version, &p3_version)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return p3ProcessedExpRowAlloc(exp_tag, uri, recipe, bg, bg_stdev, bg_mean_stdev, sigma_ra, sigma_dec, nastro, b1_uri, b2_uri, zp_mean, zp_stdev, p2_version, p3_version);
 }
 
@@ -13315,46 +9553,11 @@
 }
 
-bool p3ProcessedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!p3ProcessedExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                P3PROCESSEDEXP_TABLE_NAME, P3PROCESSEDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool p3ProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, P3PROCESSEDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, P3PROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P3PROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -13563,13 +9766,4 @@
     }
 
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, P3PROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", P3PROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
-    }
-
     // convert psMetadata rows to row objects
 
@@ -13657,5 +9851,5 @@
 static void detRunRowFree(detRunRow *object);
 
-detRunRow *detRunRowAlloc(psS32 iteration, const char *det_type, const char *state)
+detRunRow *detRunRowAlloc(psS32 det_id, psS32 iteration, const char *det_type, const char *state)
 {
     detRunRow       *_object;
@@ -13664,4 +9858,5 @@
     psMemSetDeallocator(_object, (psFreeFunc)detRunRowFree);
 
+    _object->det_id = det_id;
     _object->iteration = iteration;
     _object->det_type = psStringCopy(det_type);
@@ -13683,6 +9878,6 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRUN_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRUN_INDEX_NAME);
+    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key AUTO_INCREMENT", 0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
         psFree(md);
         return false;
@@ -13716,5 +9911,5 @@
 }
 
-bool detRunInsert(psDB * dbh, psS32 iteration, const char *det_type, const char *state)
+bool detRunInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *det_type, const char *state)
 {
     psMetadata      *md;
@@ -13722,4 +9917,9 @@
 
     md = psMetadataAlloc();
+    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, det_id)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
+        psFree(md);
+        return false;
+    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, iteration)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
@@ -13758,75 +9958,7 @@
     return deleted;
 }
-bool detRunPop(psDB *dbh, psS32 *iteration, char **det_type, char **state)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETRUN_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRUN_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETRUN_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRUN_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETRUN_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETRUN_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *det_type = psMetadataLookupPtr(&status, row, "det_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_type");
-        psFree(row);
-        return false;
-    }
-    *state = psMetadataLookupPtr(&status, row, "state");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item state");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detRunInsertObject(psDB *dbh, detRunRow *object)
 {
-    return detRunInsert(dbh, object->iteration, object->det_type, object->state);
+    return detRunInsert(dbh, object->det_id, object->iteration, object->det_type, object->state);
 }
 
@@ -13840,18 +9972,4 @@
 
     return true;
-}
-
-detRunRow *detRunPopObject(psDB *dbh)
-{
-    psS32           iteration;
-    char            det_type[256];
-    char            state[256];
-
-    if (!detRunPop(dbh, &iteration, (char **)&det_type, (char **)&state)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detRunRowAlloc(iteration, det_type, state);
 }
 
@@ -13891,46 +10009,11 @@
 }
 
-bool detRunPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detRunSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRUN_TABLE_NAME, DETRUN_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detRunSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETRUN_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRUN_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRUN_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -13952,4 +10035,9 @@
 
     md = psMetadataAlloc();
+    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, object->det_id)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
+        psFree(md);
+        return NULL;
+    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, object->iteration)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
@@ -13974,8 +10062,14 @@
 {
     bool            status;
+    psS32           det_id;
     psS32           iteration;
     char            *det_type;
     char            *state;
 
+    det_id = psMetadataLookupS32(&status, md, "det_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
+        return false;
+    }
     iteration = psMetadataLookupS32(&status, md, "iteration");
     if (!status) {
@@ -13994,5 +10088,5 @@
     }
 
-    return detRunRowAlloc(iteration, det_type, state);
+    return detRunRowAlloc(det_id, iteration, det_type, state);
 }
 psArray *detRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -14005,13 +10099,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRUN_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRUN_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -14127,9 +10212,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETINPUTEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETINPUTEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -14212,78 +10292,4 @@
     return deleted;
 }
-bool detInputExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_tag, bool *include)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETINPUTEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETINPUTEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETINPUTEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETINPUTEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETINPUTEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETINPUTEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *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;
-    }
-    *include = psMetadataLookupBool(&status, row, "include");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item include");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detInputExpInsertObject(psDB *dbh, detInputExpRow *object)
 {
@@ -14300,19 +10306,4 @@
 
     return true;
-}
-
-detInputExpRow *detInputExpPopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            exp_tag[256];
-    bool            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_tag, include);
 }
 
@@ -14352,46 +10343,11 @@
 }
 
-bool detInputExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detInputExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETINPUTEXP_TABLE_NAME, DETINPUTEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detInputExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETINPUTEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETINPUTEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETINPUTEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -14477,13 +10433,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETINPUTEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETINPUTEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -14610,9 +10557,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETPROCESSEDIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETPROCESSEDIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -14755,114 +10697,4 @@
     return deleted;
 }
-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;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETPROCESSEDIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETPROCESSEDIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETPROCESSEDIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETPROCESSEDIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *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;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detProcessedImfileInsertObject(psDB *dbh, detProcessedImfileRow *object)
 {
@@ -14879,25 +10711,4 @@
 
     return true;
-}
-
-detProcessedImfileRow *detProcessedImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    char            exp_tag[256];
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-
-    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_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -14937,46 +10748,11 @@
 }
 
-bool detProcessedImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detProcessedImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETPROCESSEDIMFILE_TABLE_NAME, DETPROCESSEDIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detProcessedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETPROCESSEDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETPROCESSEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -15128,13 +10904,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETPROCESSEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -15257,9 +11024,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETPROCESSEDEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -15382,102 +11144,4 @@
     return deleted;
 }
-bool detProcessedExpPop(psDB *dbh, psS32 *det_id, char **exp_tag, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETPROCESSEDEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *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;
-    }
-    *recipe = psMetadataLookupPtr(&status, row, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detProcessedExpInsertObject(psDB *dbh, detProcessedExpRow *object)
 {
@@ -15494,23 +11158,4 @@
 
     return true;
-}
-
-detProcessedExpRow *detProcessedExpPopObject(psDB *dbh)
-{
-    psS32           det_id;
-    char            exp_tag[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-
-    if (!detProcessedExpPop(dbh, &det_id, (char **)&exp_tag, (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 detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -15550,46 +11195,11 @@
 }
 
-bool detProcessedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detProcessedExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETPROCESSEDEXP_TABLE_NAME, DETPROCESSEDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETPROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -15719,13 +11329,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETPROCESSEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -15847,9 +11448,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETSTACKEDIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETSTACKEDIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -15972,102 +11568,4 @@
     return deleted;
 }
-bool detStackedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETSTACKEDIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETSTACKEDIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETSTACKEDIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETSTACKEDIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETSTACKEDIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETSTACKEDIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detStackedImfileInsertObject(psDB *dbh, detStackedImfileRow *object)
 {
@@ -16084,23 +11582,4 @@
 
     return true;
-}
-
-detStackedImfileRow *detStackedImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-
-    if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev);
 }
 
@@ -16140,46 +11619,11 @@
 }
 
-bool detStackedImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detStackedImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETSTACKEDIMFILE_TABLE_NAME, DETSTACKEDIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detStackedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETSTACKEDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETSTACKEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETSTACKEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -16309,13 +11753,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETSTACKEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETSTACKEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -16431,9 +11866,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETNORMALIZEDSTATIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -16516,78 +11946,4 @@
     return deleted;
 }
-bool detNormalizedStatImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, psF32 *norm)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETNORMALIZEDSTATIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETNORMALIZEDSTATIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETNORMALIZEDSTATIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *norm = psMetadataLookupF32(&status, row, "norm");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item norm");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detNormalizedStatImfileInsertObject(psDB *dbh, detNormalizedStatImfileRow *object)
 {
@@ -16604,19 +11960,4 @@
 
     return true;
-}
-
-detNormalizedStatImfileRow *detNormalizedStatImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            class_id[256];
-    psF32           norm;
-
-    if (!detNormalizedStatImfilePop(dbh, &det_id, &iteration, (char **)&class_id, &norm)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detNormalizedStatImfileRowAlloc(det_id, iteration, class_id, norm);
 }
 
@@ -16656,46 +11997,11 @@
 }
 
-bool detNormalizedStatImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detNormalizedStatImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETNORMALIZEDSTATIMFILE_TABLE_NAME, DETNORMALIZEDSTATIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detNormalizedStatImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETNORMALIZEDSTATIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETNORMALIZEDSTATIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -16781,13 +12087,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETNORMALIZEDSTATIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDSTATIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -16911,9 +12208,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETNORMALIZEDIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETNORMALIZEDIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -17046,108 +12338,4 @@
     return deleted;
 }
-bool detNormalizedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETNORMALIZEDIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETNORMALIZEDIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETNORMALIZEDIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETNORMALIZEDIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detNormalizedImfileInsertObject(psDB *dbh, detNormalizedImfileRow *object)
 {
@@ -17164,24 +12352,4 @@
 
     return true;
-}
-
-detNormalizedImfileRow *detNormalizedImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            class_id[256];
-    char            uri[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-
-    if (!detNormalizedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, &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 detNormalizedImfileRowAlloc(det_id, iteration, class_id, uri, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -17221,46 +12389,11 @@
 }
 
-bool detNormalizedImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detNormalizedImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETNORMALIZEDIMFILE_TABLE_NAME, DETNORMALIZEDIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detNormalizedImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETNORMALIZEDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETNORMALIZEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -17401,13 +12534,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETNORMALIZEDIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -17529,9 +12653,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETNORMALIZEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETNORMALIZEDEXP_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -17654,102 +12773,4 @@
     return deleted;
 }
-bool detNormalizedExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETNORMALIZEDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETNORMALIZEDEXP_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETNORMALIZEDEXP_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETNORMALIZEDEXP_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETNORMALIZEDEXP_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detNormalizedExpInsertObject(psDB *dbh, detNormalizedExpRow *object)
 {
@@ -17766,23 +12787,4 @@
 
     return true;
-}
-
-detNormalizedExpRow *detNormalizedExpPopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-
-    if (!detNormalizedExpPop(dbh, &det_id, &iteration, (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 detNormalizedExpRowAlloc(det_id, iteration, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -17822,46 +12824,11 @@
 }
 
-bool detNormalizedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detNormalizedExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETNORMALIZEDEXP_TABLE_NAME, DETNORMALIZEDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detNormalizedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETNORMALIZEDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETNORMALIZEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -17991,13 +12958,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETNORMALIZEDEXP_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETNORMALIZEDEXP_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -18112,9 +13070,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETMASTERFRAME_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETMASTERFRAME_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -18187,72 +13140,4 @@
     return deleted;
 }
-bool detMasterFramePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **comment)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETMASTERFRAME_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETMASTERFRAME_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETMASTERFRAME_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETMASTERFRAME_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *comment = psMetadataLookupPtr(&status, row, "comment");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item comment");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detMasterFrameInsertObject(psDB *dbh, detMasterFrameRow *object)
 {
@@ -18269,18 +13154,4 @@
 
     return true;
-}
-
-detMasterFrameRow *detMasterFramePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            comment[256];
-
-    if (!detMasterFramePop(dbh, &det_id, &iteration, (char **)&comment)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detMasterFrameRowAlloc(det_id, iteration, comment);
 }
 
@@ -18320,46 +13191,11 @@
 }
 
-bool detMasterFramePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detMasterFrameSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETMASTERFRAME_TABLE_NAME, DETMASTERFRAME_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detMasterFrameSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETMASTERFRAME_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETMASTERFRAME_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -18434,13 +13270,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETMASTERFRAME_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETMASTERFRAME_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -18558,9 +13385,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETMASTERIMFILE_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETMASTERIMFILE_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -18643,78 +13465,4 @@
     return deleted;
 }
-bool detMasterImfilePop(psDB *dbh, psS32 *det_id, char **class_id, char **uri, char **recipe)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETMASTERIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETMASTERIMFILE_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETMASTERIMFILE_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETMASTERIMFILE_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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);
-
-    return true;
-}
-
 bool detMasterImfileInsertObject(psDB *dbh, detMasterImfileRow *object)
 {
@@ -18731,19 +13479,4 @@
 
     return true;
-}
-
-detMasterImfileRow *detMasterImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-
-    if (!detMasterImfilePop(dbh, &det_id, (char **)&class_id, (char **)&uri, (char **)&recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detMasterImfileRowAlloc(det_id, class_id, uri, recipe);
 }
 
@@ -18783,46 +13516,11 @@
 }
 
-bool detMasterImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detMasterImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETMASTERIMFILE_TABLE_NAME, DETMASTERIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detMasterImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETMASTERIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETMASTERIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -18908,13 +13606,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETMASTERIMFILE_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETMASTERIMFILE_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -19042,9 +13731,4 @@
 
     md = psMetadataAlloc();
-    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;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -19197,120 +13881,4 @@
     return deleted;
 }
-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;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETRESIDIMFILE_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDIMFILE_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    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;
-    }
-
-    popped = psMetadataAlloc();
-    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");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *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;
-    }
-    *class_id = psMetadataLookupPtr(&status, row, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        psFree(row);
-        return false;
-    }
-    *uri = psMetadataLookupPtr(&status, row, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        psFree(row);
-        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;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detResidImfileInsertObject(psDB *dbh, detResidImfileRow *object)
 {
@@ -19327,26 +13895,4 @@
 
     return true;
-}
-
-detResidImfileRow *detResidImfilePopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            exp_tag[256];
-    char            class_id[256];
-    char            uri[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[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)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detResidImfileRowAlloc(det_id, iteration, exp_tag, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
 }
 
@@ -19386,46 +13932,11 @@
 }
 
-bool detResidImfilePopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detResidImfileSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRESIDIMFILE_TABLE_NAME, DETRESIDIMFILE_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detResidImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETRESIDIMFILE_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        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;
-        }
     }
 
@@ -19588,13 +14099,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        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;
-        }
     }
 
@@ -19719,9 +14221,4 @@
 
     md = psMetadataAlloc();
-    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;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -19864,114 +14361,4 @@
     return deleted;
 }
-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;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETRESIDEXP_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRESIDEXP_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    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;
-    }
-
-    popped = psMetadataAlloc();
-    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");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *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;
-    }
-    *recipe = psMetadataLookupPtr(&status, row, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
-        psFree(row);
-        return false;
-    }
-    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
-        psFree(row);
-        return false;
-    }
-    *accept = psMetadataLookupBool(&status, row, "accept");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item accept");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detResidExpInsertObject(psDB *dbh, detResidExpRow *object)
 {
@@ -19988,25 +14375,4 @@
 
     return true;
-}
-
-detResidExpRow *detResidExpPopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    char            exp_tag[256];
-    char            recipe[256];
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    char            b1_uri[256];
-    char            b2_uri[256];
-    bool            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_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri, accept);
 }
 
@@ -20046,46 +14412,11 @@
 }
 
-bool detResidExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detResidExpSelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRESIDEXP_TABLE_NAME, DETRESIDEXP_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detResidExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETRESIDEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        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;
-        }
     }
 
@@ -20237,13 +14568,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        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;
-        }
     }
 
@@ -20360,9 +14682,4 @@
 
     md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, DETRUNSUMMARY_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETRUNSUMMARY_INDEX_NAME);
-        psFree(md);
-        return false;
-    }
     if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
@@ -20465,90 +14782,4 @@
     return deleted;
 }
-bool detRunSummaryPop(psDB *dbh, psS32 *det_id, psS32 *iteration, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, bool *accept)
-{
-    psArray         *rowSet;
-    psMetadata      *row;
-    psMetadata      *popped;
-    long            deleted;
-    bool            status;
-    int             rowID;
-
-    rowSet = psDBSelectRows(dbh, DETRUNSUMMARY_TABLE_NAME, NULL, 1);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRUNSUMMARY_INDEX_NAME);
-        psFree(rowSet);
-        return NULL;
-    }
-
-    row = psArrayGet(rowSet, 0);
-    psMemIncrRefCounter(row);
-    if (!row) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return NULL;
-    }
-    psFree(rowSet);
-
-    rowID = psMetadataLookupS32(&status, row, DETRUNSUMMARY_INDEX_NAME);
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETRUNSUMMARY_INDEX_NAME);
-        psFree(row);
-        return NULL;
-    }
-
-    popped = psMetadataAlloc();
-    psMetadataAddS32(popped, PS_LIST_TAIL, DETRUNSUMMARY_INDEX_NAME, 0, NULL, rowID);
-
-    deleted = psDBDeleteRows(dbh, DETRUNSUMMARY_TABLE_NAME, popped, 0);
-    if (deleted != 1) {
-        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
-        psFree(popped);
-        psFree(row);
-        return NULL;
-    }
-
-    psFree(popped);
-
-    *det_id = psMetadataLookupS32(&status, row, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        psFree(row);
-        return false;
-    }
-    *iteration = psMetadataLookupS32(&status, row, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        psFree(row);
-        return false;
-    }
-    *bg = psMetadataLookupF64(&status, row, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        psFree(row);
-        return false;
-    }
-    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        psFree(row);
-        return false;
-    }
-    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        psFree(row);
-        return false;
-    }
-    *accept = psMetadataLookupBool(&status, row, "accept");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item accept");
-        psFree(row);
-        return false;
-    }
-
-    psFree(row);
-
-    return true;
-}
-
 bool detRunSummaryInsertObject(psDB *dbh, detRunSummaryRow *object)
 {
@@ -20565,21 +14796,4 @@
 
     return true;
-}
-
-detRunSummaryRow *detRunSummaryPopObject(psDB *dbh)
-{
-    psS32           det_id;
-    psS32           iteration;
-    psF64           bg;
-    psF64           bg_stdev;
-    psF64           bg_mean_stdev;
-    bool            accept;
-
-    if (!detRunSummaryPop(dbh, &det_id, &iteration, &bg, &bg_stdev, &bg_mean_stdev, &accept)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
-        return NULL;
-    }
-
-    return detRunSummaryRowAlloc(det_id, iteration, bg, bg_stdev, bg_mean_stdev, accept);
 }
 
@@ -20619,46 +14833,11 @@
 }
 
-bool detRunSummaryPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
-{
-    char            query[MAX_STRING_LENGTH];
-
-    if (!detRunSummarySelectRowsFits(dbh, fits, NULL, limit)) {
-        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
-        return false;
-    }
-
-    // remove limit rows from the end of the database
-    if (snprintf(query, MAX_STRING_LENGTH,
-                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
-                DETRUNSUMMARY_TABLE_NAME, DETRUNSUMMARY_INDEX_NAME, limit) < 0) {
-        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
-        return false;
-    }
-            
-    if (!p_psDBRunQuery(dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database query failed");
-        return false;
-    }
-
-    return true;
-}
-
 bool detRunSummarySelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
-    psU64           i;
 
     rowSet = psDBSelectRows(dbh, DETRUNSUMMARY_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETRUNSUMMARY_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRUNSUMMARY_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
@@ -20766,13 +14945,4 @@
     if (!rowSet) {
         return NULL;
-    }
-
-    // strip index column
-    for (i = 0; i < rowSet->n; i++) {
-        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETRUNSUMMARY_INDEX_NAME)) {
-            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETRUNSUMMARY_INDEX_NAME);
-            psFree(rowSet);
-            return false;
-        }
     }
 
