Index: /trunk/dbconfig/config.md
===================================================================
--- /trunk/dbconfig/config.md	(revision 11044)
+++ /trunk/dbconfig/config.md	(revision 11045)
@@ -2,4 +2,4 @@
     pkg_name        STR     ippdb
     pkg_namespace   STR     ippdb
-    pkg_version     STR     0.0.72
+    pkg_version     STR     0.0.73
 END
Index: /trunk/ippdb/Makefile.am
===================================================================
--- /trunk/ippdb/Makefile.am	(revision 11044)
+++ /trunk/ippdb/Makefile.am	(revision 11045)
@@ -19,6 +19,5 @@
     $(top_builddir)/docs/man/man3/newExpRow.3 \
     $(top_builddir)/docs/man/man3/newImfileRow.3 \
-    $(top_builddir)/docs/man/man3/rawDetrendExpRow.3 \
-    $(top_builddir)/docs/man/man3/rawScienceExpRow.3 \
+    $(top_builddir)/docs/man/man3/rawExpRow.3 \
     $(top_builddir)/docs/man/man3/rawImfileRow.3 \
     $(top_builddir)/docs/man/man3/p1PendingExpRow.3 \
@@ -50,5 +49,5 @@
 
 
-docs/man/man3/ippdb.3 docs/man/man3/expTagCounterRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.3 docs/man/man3/p3MaskRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3 docs/man/man3/p4RunRow.3 docs/man/man3/p4InputImfileRow.3 docs/man/man3/p4WarpedImfileRow.3 docs/man/man3/p4StackedImfileRow.3 docs/man/man3/p4DiffImfileRow.3 docs/man/man3/p4MagicMaskImfileRow.3:
+docs/man/man3/ippdb.3 docs/man/man3/expTagCounterRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.3 docs/man/man3/p3MaskRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3 docs/man/man3/p4RunRow.3 docs/man/man3/p4InputImfileRow.3 docs/man/man3/p4WarpedImfileRow.3 docs/man/man3/p4StackedImfileRow.3 docs/man/man3/p4DiffImfileRow.3 docs/man/man3/p4MagicMaskImfileRow.3:
 	$(DOXYGEN)
 
Index: /trunk/ippdb/configure.ac
===================================================================
--- /trunk/ippdb/configure.ac	(revision 11044)
+++ /trunk/ippdb/configure.ac	(revision 11045)
@@ -7,5 +7,5 @@
 AC_PREREQ(2.59)
 
-AC_INIT([ippdb], [0.0.72], [pan-starrs.ifa.hawaii.edu])
+AC_INIT([ippdb], [0.0.73], [pan-starrs.ifa.hawaii.edu])
 AC_CONFIG_SRCDIR([ippdb.pc.in])
 
Index: /trunk/ippdb/src/ippdb.c
===================================================================
--- /trunk/ippdb/src/ippdb.c	(revision 11044)
+++ /trunk/ippdb/src/ippdb.c	(revision 11045)
@@ -40,6 +40,5 @@
 #define NEWEXP_TABLE_NAME "newExp"
 #define NEWIMFILE_TABLE_NAME "newImfile"
-#define RAWDETRENDEXP_TABLE_NAME "rawDetrendExp"
-#define RAWSCIENCEEXP_TABLE_NAME "rawScienceExp"
+#define RAWEXP_TABLE_NAME "rawExp"
 #define RAWIMFILE_TABLE_NAME "rawImfile"
 #define P1PENDINGEXP_TABLE_NAME "p1PendingExp"
@@ -2800,5 +2799,5 @@
 static void newExpRowFree(newExpRow *object);
 
-newExpRow *newExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, psS16 fault)
+newExpRow *newExpRowAlloc(const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles)
 {
     newExpRow       *_object;
@@ -2814,5 +2813,4 @@
     _object->exp_type = psStringCopy(exp_type);
     _object->imfiles = imfiles;
-    _object->fault = fault;
 
     return _object;
@@ -2867,9 +2865,4 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "NOT NULL", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
-        psFree(md);
-        return false;
-    }
 
     bool status = psDBCreateTable(dbh, NEWEXP_TABLE_NAME, md);
@@ -2885,5 +2878,5 @@
 }
 
-bool newExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles, psS16 fault)
+bool newExpInsert(psDB * dbh, const char *exp_tag, const char *exp_id, const char *camera, const char *telescope, psTime* dateobs, const char *exp_type, psS32 imfiles)
 {
     psMetadata *md = psMetadataAlloc();
@@ -2920,9 +2913,4 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
         psFree(md);
         return false;
@@ -2951,5 +2939,5 @@
 bool newExpInsertObject(psDB *dbh, newExpRow *object)
 {
-    return newExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->dateobs, object->exp_type, object->imfiles, object->fault);
+    return newExpInsert(dbh, object->exp_tag, object->exp_id, object->camera, object->telescope, object->dateobs, object->exp_type, object->imfiles);
 }
 
@@ -3059,9 +3047,4 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
-        psFree(md);
-        return false;
-    }
 
 
@@ -3108,11 +3091,6 @@
         return false;
     }
-    psS16 fault = psMetadataLookupS16(&status, md, "fault");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
-        return false;
-    }
-
-    return newExpRowAlloc(exp_tag, exp_id, camera, telescope, dateobs, exp_type, imfiles, fault);
+
+    return newExpRowAlloc(exp_tag, exp_id, camera, telescope, dateobs, exp_type, imfiles);
 }
 psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -3226,5 +3204,5 @@
 static void newImfileRowFree(newImfileRow *object);
 
-newImfileRow *newImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri, psS16 fault)
+newImfileRow *newImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri)
 {
     newImfileRow    *_object;
@@ -3237,5 +3215,4 @@
     _object->class_id = psStringCopy(class_id);
     _object->uri = psStringCopy(uri);
-    _object->fault = fault;
 
     return _object;
@@ -3273,9 +3250,4 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "NOT NULL", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
-        psFree(md);
-        return false;
-    }
 
     bool status = psDBCreateTable(dbh, NEWIMFILE_TABLE_NAME, md);
@@ -3291,5 +3263,5 @@
 }
 
-bool newImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri, psS16 fault)
+bool newImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri)
 {
     psMetadata *md = psMetadataAlloc();
@@ -3311,9 +3283,4 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
         psFree(md);
         return false;
@@ -3342,5 +3309,5 @@
 bool newImfileInsertObject(psDB *dbh, newImfileRow *object)
 {
-    return newImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri, object->fault);
+    return newImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri);
 }
 
@@ -3435,9 +3402,4 @@
         return false;
     }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
-        psFree(md);
-        return false;
-    }
 
 
@@ -3469,11 +3431,6 @@
         return false;
     }
-    psS16 fault = psMetadataLookupS16(&status, md, "fault");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
-        return false;
-    }
-
-    return newImfileRowAlloc(exp_tag, class, class_id, uri, fault);
+
+    return newImfileRowAlloc(exp_tag, class, class_id, uri);
 }
 psArray *newImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
@@ -3585,12 +3542,12 @@
     return true;
 }
-static void rawDetrendExpRowFree(rawDetrendExpRow *object);
-
-rawDetrendExpRow *rawDetrendExpRowAlloc(const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
-{
-    rawDetrendExpRow *_object;
-
-    _object = psAlloc(sizeof(rawDetrendExpRow));
-    psMemSetDeallocator(_object, (psFreeFunc)rawDetrendExpRowFree);
+static void rawExpRowFree(rawExpRow *object);
+
+rawExpRow *rawExpRowAlloc(const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
+{
+    rawExpRow       *_object;
+
+    _object = psAlloc(sizeof(rawExpRow));
+    psMemSetDeallocator(_object, (psFreeFunc)rawExpRowFree);
 
     _object->exp_tag = psStringCopy(exp_tag);
@@ -3613,9 +3570,10 @@
     _object->object = psStringCopy(object);
     _object->dateobs = psTimeCopy(dateobs);
+    _object->fault = fault;
 
     return _object;
 }
 
-static void rawDetrendExpRowFree(rawDetrendExpRow *object)
+static void rawExpRowFree(rawExpRow *object)
 {
     psFree(object->exp_tag);
@@ -3628,5 +3586,5 @@
 }
 
-bool rawDetrendExpCreateTable(psDB *dbh)
+bool rawExpCreateTable(psDB *dbh)
 {
     psMetadata *md = psMetadataAlloc();
@@ -3726,6 +3684,11 @@
         return false;
     }
-
-    bool status = psDBCreateTable(dbh, RAWDETRENDEXP_TABLE_NAME, md);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "NOT NULL", 0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+        psFree(md);
+        return false;
+    }
+
+    bool status = psDBCreateTable(dbh, RAWEXP_TABLE_NAME, md);
 
     psFree(md);
@@ -3734,10 +3697,10 @@
 }
 
-bool rawDetrendExpDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, RAWDETRENDEXP_TABLE_NAME);
-}
-
-bool rawDetrendExpInsert(psDB * dbh, const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
+bool rawExpDropTable(psDB *dbh)
+{
+    return psDBDropTable(dbh, RAWEXP_TABLE_NAME);
+}
+
+bool rawExpInsert(psDB * dbh, const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -3837,6 +3800,11 @@
         return false;
     }
-
-    bool status = psDBInsertOneRow(dbh, RAWDETRENDEXP_TABLE_NAME, md);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+        psFree(md);
+        return false;
+    }
+
+    bool status = psDBInsertOneRow(dbh, RAWEXP_TABLE_NAME, md);
     psFree(md);
 
@@ -3844,11 +3812,11 @@
 }
 
-long long rawDetrendExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
+long long rawExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     long long       deleted = 0;
 
-    long long count = psDBDeleteRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, limit);
+    long long count = psDBDeleteRows(dbh, RAWEXP_TABLE_NAME, where, limit);
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawDetrendExp");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawExp");
         return count;
 
@@ -3858,13 +3826,13 @@
     return deleted;
 }
-bool rawDetrendExpInsertObject(psDB *dbh, rawDetrendExpRow *object)
-{
-    return rawDetrendExpInsert(dbh, object->exp_tag, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs);
-}
-
-bool rawDetrendExpInsertObjects(psDB *dbh, psArray *objects)
+bool rawExpInsertObject(psDB *dbh, rawExpRow *object)
+{
+    return rawExpInsert(dbh, object->exp_tag, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs, object->fault);
+}
+
+bool rawExpInsertObjects(psDB *dbh, psArray *objects)
 {
     for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!rawDetrendExpInsertObject(dbh, objects->data[i])) {
+        if (!rawExpInsertObject(dbh, objects->data[i])) {
             return false;
         }
@@ -3874,11 +3842,11 @@
 }
 
-bool rawDetrendExpInsertFits(psDB *dbh, const psFits *fits)
+bool rawExpInsertFits(psDB *dbh, const psFits *fits)
 {
     psArray         *rowSet;
 
-    // move to (the first?) extension named  RAWDETRENDEXP_TABLE_NAME
-    if (!psFitsMoveExtName(fits, RAWDETRENDEXP_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", RAWDETRENDEXP_TABLE_NAME);
+    // move to (the first?) extension named  RAWEXP_TABLE_NAME
+    if (!psFitsMoveExtName(fits, RAWEXP_TABLE_NAME)) {
+        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", RAWEXP_TABLE_NAME);
         return false;
     }
@@ -3898,5 +3866,5 @@
     }
 
-    if (!psDBInsertRows(dbh, RAWDETRENDEXP_TABLE_NAME, rowSet)) {
+    if (!psDBInsertRows(dbh, RAWEXP_TABLE_NAME, rowSet)) {
         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
         psFree(rowSet);
@@ -3909,9 +3877,9 @@
 }
 
-bool rawDetrendExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
+bool rawExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
 
-    rowSet = psDBSelectRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, RAWEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return false;
@@ -3919,5 +3887,5 @@
 
     // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, RAWDETRENDEXP_TABLE_NAME)) {
+    if (!psFitsWriteTable(fits, NULL, rowSet, RAWEXP_TABLE_NAME)) {
         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
         psFree(rowSet);
@@ -3930,5 +3898,5 @@
 }
 
-psMetadata *rawDetrendExpMetadataFromObject(const rawDetrendExpRow *object)
+psMetadata *rawExpMetadataFromObject(const rawExpRow *object)
 {
     psMetadata *md = psMetadataAlloc();
@@ -4028,4 +3996,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+        psFree(md);
+        return false;
+    }
 
 
@@ -4033,5 +4006,5 @@
 }
 
-rawDetrendExpRow *rawDetrendExpObjectFromMetadata(psMetadata *md)
+rawExpRow *rawExpObjectFromMetadata(psMetadata *md)
 {
 
@@ -4132,8 +4105,13 @@
         return false;
     }
-
-    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, dateobs);
-}
-psArray *rawDetrendExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
+    psS16 fault = psMetadataLookupS16(&status, md, "fault");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
+        return false;
+    }
+
+    return rawExpRowAlloc(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, dateobs, fault);
+}
+psArray *rawExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
 {
     psArray         *rowSet;
@@ -4141,5 +4119,5 @@
     psU64           i;
 
-    rowSet = psDBSelectRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, limit);
+    rowSet = psDBSelectRows(dbh, RAWEXP_TABLE_NAME, where, limit);
     if (!rowSet) {
         return NULL;
@@ -4151,5 +4129,5 @@
 
     for (i = 0; i < rowSet->n; i++) {
-        rawDetrendExpRow *object = rawDetrendExpObjectFromMetadata(rowSet->data[i]);
+        rawExpRow *object = rawExpObjectFromMetadata(rowSet->data[i]);
         psArrayAdd(returnSet, 0, object);
         psFree(object);
@@ -4160,11 +4138,11 @@
     return returnSet;
 }
-bool rawDetrendExpDeleteObject(psDB *dbh, const rawDetrendExpRow *object)
-{
-    psMetadata *where = rawDetrendExpMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, 0);
+bool rawExpDeleteObject(psDB *dbh, const rawExpRow *object)
+{
+    psMetadata *where = rawExpMetadataFromObject(object);
+    long long count = psDBDeleteRows(dbh, RAWEXP_TABLE_NAME, where, 0);
     psFree(where)
     if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawDetrendExp");
+        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawExp");
         return false;
     }
@@ -4172,21 +4150,21 @@
         // XXX should this be a psAbort() instead?  It is possible that
         // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "rawDetrendExpRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long rawDetrendExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
+        psError(PS_ERR_UNKNOWN, true, "rawExpRow object matched more then one row.  Check your database schema");
+        return false;
+    }
+
+    return true;
+}
+long long rawExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
 {
     long long       deleted = 0;
 
     for (long long i = 0; i < objects->n; i++) {
-        rawDetrendExpRow *object = objects->data[i];
-        psMetadata *where = rawDetrendExpMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, RAWDETRENDEXP_TABLE_NAME, where, limit);
+        rawExpRow *object = objects->data[i];
+        psMetadata *where = rawExpMetadataFromObject(object);
+        long long count = psDBDeleteRows(dbh, RAWEXP_TABLE_NAME, where, limit);
         psFree(where)
         if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawDetrendExp");
+            psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawExp");
             return count;
         }
@@ -4197,5 +4175,5 @@
     return deleted;
 }
-bool rawDetrendExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
+bool rawExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(objects, false);
@@ -4203,9 +4181,9 @@
     psMetadata *output = psMetadataAlloc();
     for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = rawDetrendExpMetadataFromObject(objects->data[i]);
+        psMetadata *md = rawExpMetadataFromObject(objects->data[i]);
         if (!psMetadataAddMetadata(
             output,
             PS_LIST_TAIL,
-            RAWDETRENDEXP_TABLE_NAME,
+            RAWEXP_TABLE_NAME,
             PS_META_DUPLICATE_OK,
             NULL,
@@ -4228,9 +4206,9 @@
     return true;
 }
-bool rawDetrendExpPrintObject(FILE *stream, rawDetrendExpRow *object, bool mdcf)
+bool rawExpPrintObject(FILE *stream, rawExpRow *object, bool mdcf)
 {
     PS_ASSERT_PTR_NON_NULL(object, false);
 
-    psMetadata *md = rawDetrendExpMetadataFromObject(object);
+    psMetadata *md = rawExpMetadataFromObject(object);
 
     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
@@ -4243,665 +4221,7 @@
     return true;
 }
-static void rawScienceExpRowFree(rawScienceExpRow *object);
-
-rawScienceExpRow *rawScienceExpRowAlloc(const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
-{
-    rawScienceExpRow *_object;
-
-    _object = psAlloc(sizeof(rawScienceExpRow));
-    psMemSetDeallocator(_object, (psFreeFunc)rawScienceExpRowFree);
-
-    _object->exp_tag = psStringCopy(exp_tag);
-    _object->camera = psStringCopy(camera);
-    _object->telescope = psStringCopy(telescope);
-    _object->exp_type = psStringCopy(exp_type);
-    _object->imfiles = imfiles;
-    _object->filter = psStringCopy(filter);
-    _object->airmass = airmass;
-    _object->ra = ra;
-    _object->decl = decl;
-    _object->exp_time = exp_time;
-    _object->bg = bg;
-    _object->bg_stdev = bg_stdev;
-    _object->bg_mean_stdev = bg_mean_stdev;
-    _object->alt = alt;
-    _object->az = az;
-    _object->ccd_temp = ccd_temp;
-    _object->posang = posang;
-    _object->object = psStringCopy(object);
-    _object->dateobs = psTimeCopy(dateobs);
-
-    return _object;
-}
-
-static void rawScienceExpRowFree(rawScienceExpRow *object)
-{
-    psFree(object->exp_tag);
-    psFree(object->camera);
-    psFree(object->telescope);
-    psFree(object->exp_type);
-    psFree(object->filter);
-    psFree(object->object);
-    psFree(object->dateobs);
-}
-
-bool rawScienceExpCreateTable(psDB *dbh)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ra", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "decl", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item decl");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_time", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "alt", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item alt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "az", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item az");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ccd_temp", PS_DATA_F32, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ccd_temp");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "posang", PS_DATA_F64, NULL, 0.0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item posang");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item object");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBCreateTable(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
-
-    psFree(md);
-
-    return status;
-}
-
-bool rawScienceExpDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, RAWSCIENCEEXP_TABLE_NAME);
-}
-
-bool rawScienceExpInsert(psDB * dbh, const char *exp_tag, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, exp_tag)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, camera)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, telescope)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, exp_type)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, imfiles)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, filter)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, airmass)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ra", PS_DATA_F64, NULL, ra)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "decl", PS_DATA_F64, NULL, decl)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item decl");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_time", PS_DATA_F32, NULL, exp_time)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, bg)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, bg_stdev)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, bg_mean_stdev)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "alt", PS_DATA_F64, NULL, alt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item alt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "az", PS_DATA_F64, NULL, az)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item az");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ccd_temp", PS_DATA_F32, NULL, ccd_temp)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ccd_temp");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "posang", PS_DATA_F64, NULL, posang)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item posang");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, object)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item object");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBInsertOneRow(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
-    psFree(md);
-
-    return status;
-}
-
-long long rawScienceExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    long long count = psDBDeleteRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, limit);
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawScienceExp");
-        return count;
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool rawScienceExpInsertObject(psDB *dbh, rawScienceExpRow *object)
-{
-    return rawScienceExpInsert(dbh, object->exp_tag, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs);
-}
-
-bool rawScienceExpInsertObjects(psDB *dbh, psArray *objects)
-{
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!rawScienceExpInsertObject(dbh, objects->data[i])) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-bool rawScienceExpInsertFits(psDB *dbh, const psFits *fits)
-{
-    psArray         *rowSet;
-
-    // move to (the first?) extension named  RAWSCIENCEEXP_TABLE_NAME
-    if (!psFitsMoveExtName(fits, RAWSCIENCEEXP_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", RAWSCIENCEEXP_TABLE_NAME);
-        return false;
-    }
-
-    // check HDU type
-    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
-        return false;
-    }
-
-    // read fits table
-    rowSet = psFitsReadTable(fits);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
-        psFree(rowSet);
-        return false;
-    }
-
-    if (!psDBInsertRows(dbh, RAWSCIENCEEXP_TABLE_NAME, rowSet)) {
-        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-bool rawScienceExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-
-    rowSet = psDBSelectRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return false;
-    }
-
-    // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, RAWSCIENCEEXP_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-psMetadata *rawScienceExpMetadataFromObject(const rawScienceExpRow *object)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_tag", PS_DATA_STRING, NULL, object->exp_tag)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "camera", PS_DATA_STRING, NULL, object->camera)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item camera");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "telescope", PS_DATA_STRING, NULL, object->telescope)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item telescope");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, object->exp_type)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "imfiles", PS_DATA_S32, NULL, object->imfiles)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, object->filter)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "airmass", PS_DATA_F32, NULL, object->airmass)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ra", PS_DATA_F64, NULL, object->ra)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "decl", PS_DATA_F64, NULL, object->decl)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item decl");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_time", PS_DATA_F32, NULL, object->exp_time)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg", PS_DATA_F64, NULL, object->bg)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_stdev", PS_DATA_F64, NULL, object->bg_stdev)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "bg_mean_stdev", PS_DATA_F64, NULL, object->bg_mean_stdev)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "alt", PS_DATA_F64, NULL, object->alt)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item alt");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "az", PS_DATA_F64, NULL, object->az)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item az");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "ccd_temp", PS_DATA_F32, NULL, object->ccd_temp)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item ccd_temp");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "posang", PS_DATA_F64, NULL, object->posang)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item posang");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "object", PS_DATA_STRING, NULL, object->object)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item object");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, object->dateobs)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
-        psFree(md);
-        return false;
-    }
-
-
-    return md;
-}
-
-rawScienceExpRow *rawScienceExpObjectFromMetadata(psMetadata *md)
-{
-
-bool status = false;
-    char* exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
-        return false;
-    }
-    char* camera = psMetadataLookupPtr(&status, md, "camera");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item camera");
-        return false;
-    }
-    char* telescope = psMetadataLookupPtr(&status, md, "telescope");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item telescope");
-        return false;
-    }
-    char* exp_type = psMetadataLookupPtr(&status, md, "exp_type");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_type");
-        return false;
-    }
-    psS32 imfiles = psMetadataLookupS32(&status, md, "imfiles");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item imfiles");
-        return false;
-    }
-    char* filter = psMetadataLookupPtr(&status, md, "filter");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
-        return false;
-    }
-    psF32 airmass = psMetadataLookupF32(&status, md, "airmass");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item airmass");
-        return false;
-    }
-    psF64 ra = psMetadataLookupF64(&status, md, "ra");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
-        return false;
-    }
-    psF64 decl = psMetadataLookupF64(&status, md, "decl");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item decl");
-        return false;
-    }
-    psF32 exp_time = psMetadataLookupF32(&status, md, "exp_time");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
-        return false;
-    }
-    psF64 bg = psMetadataLookupF64(&status, md, "bg");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
-        return false;
-    }
-    psF64 bg_stdev = psMetadataLookupF64(&status, md, "bg_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
-        return false;
-    }
-    psF64 bg_mean_stdev = psMetadataLookupF64(&status, md, "bg_mean_stdev");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
-        return false;
-    }
-    psF64 alt = psMetadataLookupF64(&status, md, "alt");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item alt");
-        return false;
-    }
-    psF64 az = psMetadataLookupF64(&status, md, "az");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item az");
-        return false;
-    }
-    psF32 ccd_temp = psMetadataLookupF32(&status, md, "ccd_temp");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ccd_temp");
-        return false;
-    }
-    psF64 posang = psMetadataLookupF64(&status, md, "posang");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item posang");
-        return false;
-    }
-    char* object = psMetadataLookupPtr(&status, md, "object");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item object");
-        return false;
-    }
-    psTime* dateobs = psMetadataLookupPtr(&status, md, "dateobs");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dateobs");
-        return false;
-    }
-
-    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, dateobs);
-}
-psArray *rawScienceExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-    psArray         *returnSet;
-    psU64           i;
-
-    rowSet = psDBSelectRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return NULL;
-    }
-
-    // convert psMetadata rows to row objects
-
-    returnSet = psArrayAllocEmpty(rowSet->n);
-
-    for (i = 0; i < rowSet->n; i++) {
-        rawScienceExpRow *object = rawScienceExpObjectFromMetadata(rowSet->data[i]);
-        psArrayAdd(returnSet, 0, object);
-        psFree(object);
-    }
-
-    psFree(rowSet);
-
-    return returnSet;
-}
-bool rawScienceExpDeleteObject(psDB *dbh, const rawScienceExpRow *object)
-{
-    psMetadata *where = rawScienceExpMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, 0);
-    psFree(where)
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawScienceExp");
-        return false;
-    }
-    if (count > 1) {
-        // XXX should this be a psAbort() instead?  It is possible that
-        // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "rawScienceExpRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long rawScienceExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    for (long long i = 0; i < objects->n; i++) {
-        rawScienceExpRow *object = objects->data[i];
-        psMetadata *where = rawScienceExpMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, RAWSCIENCEEXP_TABLE_NAME, where, limit);
-        psFree(where)
-        if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from rawScienceExp");
-            return count;
-        }
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool rawScienceExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(objects, false);
-
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = rawScienceExpMetadataFromObject(objects->data[i]);
-        if (!psMetadataAddMetadata(
-            output,
-            PS_LIST_TAIL,
-            RAWSCIENCEEXP_TABLE_NAME,
-            PS_META_DUPLICATE_OK,
-            NULL,
-            md
-        )) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
-            psFree(md);
-            psFree(output);
-            return false;
-        }
-        psFree(md);
-    }
-
-    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(output);
-    }
-    psFree(output);
-
-    return true;
-}
-bool rawScienceExpPrintObject(FILE *stream, rawScienceExpRow *object, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(object, false);
-
-    psMetadata *md = rawScienceExpMetadataFromObject(object);
-
-    if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(md);
-    }
-
-    psFree(md);
-
-    return true;
-}
 static void rawImfileRowFree(rawImfileRow *object);
 
-rawImfileRow *rawImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
+rawImfileRow *rawImfileRowAlloc(const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
 {
     rawImfileRow    *_object;
@@ -4929,4 +4249,5 @@
     _object->object = psStringCopy(object);
     _object->dateobs = psTimeCopy(dateobs);
+    _object->fault = fault;
 
     return _object;
@@ -5043,4 +4364,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "NOT NULL", 0)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+        psFree(md);
+        return false;
+    }
 
     bool status = psDBCreateTable(dbh, RAWIMFILE_TABLE_NAME, md);
@@ -5056,5 +4382,5 @@
 }
 
-bool rawImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs)
+bool rawImfileInsert(psDB * dbh, const char *exp_tag, const char *class, const char *class_id, const char *uri, const char *exp_type, const char *filter, psF32 airmass, psF64 ra, psF64 decl, psF32 exp_time, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, psF64 alt, psF64 az, psF32 ccd_temp, psF64 posang, const char *object, psTime* dateobs, psS16 fault)
 {
     psMetadata *md = psMetadataAlloc();
@@ -5151,4 +4477,9 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
+        psFree(md);
+        return false;
+    }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
         psFree(md);
         return false;
@@ -5177,5 +4508,5 @@
 bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
 {
-    return rawImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri, object->exp_type, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs);
+    return rawImfileInsert(dbh, object->exp_tag, object->class, object->class_id, object->uri, object->exp_type, object->filter, object->airmass, object->ra, object->decl, object->exp_time, object->bg, object->bg_stdev, object->bg_mean_stdev, object->alt, object->az, object->ccd_temp, object->posang, object->object, object->dateobs, object->fault);
 }
 
@@ -5345,4 +4676,9 @@
         return false;
     }
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
+        psFree(md);
+        return false;
+    }
 
 
@@ -5449,6 +4785,11 @@
         return false;
     }
-
-    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, dateobs);
+    psS16 fault = psMetadataLookupS16(&status, md, "fault");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
+        return false;
+    }
+
+    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, dateobs, fault);
 }
 psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
Index: /trunk/ippdb/src/ippdb.h
===================================================================
--- /trunk/ippdb/src/ippdb.h	(revision 11044)
+++ /trunk/ippdb/src/ippdb.h	(revision 11045)
@@ -1590,5 +1590,4 @@
     char            *exp_type;
     psS32           imfiles;
-    psS16           fault;
 } newExpRow;
 
@@ -1605,6 +1604,5 @@
     psTime*         dateobs,
     const char      *exp_type,
-    psS32           imfiles,
-    psS16           fault
+    psS32           imfiles
 );
 
@@ -1642,6 +1640,5 @@
     psTime*         dateobs,
     const char      *exp_type,
-    psS32           imfiles,
-    psS16           fault
+    psS32           imfiles
 );
 
@@ -1803,5 +1800,4 @@
     char            *class_id;
     char            *uri;
-    psS16           fault;
 } newImfileRow;
 
@@ -1815,6 +1811,5 @@
     const char      *class,
     const char      *class_id,
-    const char      *uri,
-    psS16           fault
+    const char      *uri
 );
 
@@ -1849,6 +1844,5 @@
     const char      *class,
     const char      *class_id,
-    const char      *uri,
-    psS16           fault
+    const char      *uri
 );
 
@@ -2000,7 +1994,7 @@
     bool            mdcf                ///< format as mdconfig or simple
 );
-/** rawDetrendExpRow data structure
- *
- * Structure for representing a single row of rawDetrendExp table data.
+/** rawExpRow data structure
+ *
+ * Structure for representing a single row of rawExp table data.
  */
 
@@ -2025,12 +2019,13 @@
     char            *object;
     psTime*         dateobs;
-} rawDetrendExpRow;
-
-/** Creates a new rawDetrendExpRow object
- *
- *  @return A new rawDetrendExpRow object or NULL on failure.
- */
-
-rawDetrendExpRow *rawDetrendExpRowAlloc(
+    psS16           fault;
+} rawExpRow;
+
+/** Creates a new rawExpRow object
+ *
+ *  @return A new rawExpRow object or NULL on failure.
+ */
+
+rawExpRow *rawExpRowAlloc(
     const char      *exp_tag,
     const char      *camera,
@@ -2051,22 +2046,23 @@
     psF64           posang,
     const char      *object,
-    psTime*         dateobs
-);
-
-/** Creates a new rawDetrendExp table
- *
- * @return true on success
- */
-
-bool rawDetrendExpCreateTable(
+    psTime*         dateobs,
+    psS16           fault
+);
+
+/** Creates a new rawExp table
+ *
+ * @return true on success
+ */
+
+bool rawExpCreateTable(
     psDB            *dbh                ///< Database handle
 );
 
-/** Deletes a rawDetrendExp table
- *
- * @return true on success
- */
-
-bool rawDetrendExpDropTable(
+/** Deletes a rawExp table
+ *
+ * @return true on success
+ */
+
+bool rawExpDropTable(
     psDB            *dbh                ///< Database handle
 );
@@ -2079,5 +2075,5 @@
  */
 
-bool rawDetrendExpInsert(
+bool rawExpInsert(
     psDB            *dbh,               ///< Database handle
     const char      *exp_tag,
@@ -2099,5 +2095,6 @@
     psF64           posang,
     const char      *object,
-    psTime*         dateobs
+    psTime*         dateobs,
+    psS16           fault
 );
 
@@ -2107,5 +2104,5 @@
  */
 
-long long rawDetrendExpDelete(
+long long rawExpDelete(
     psDB            *dbh,               ///< Database handle
     const psMetadata *where,            ///< Row match criteria
@@ -2113,5 +2110,5 @@
 );
 
-/** Insert a single rawDetrendExpRow object into a table
+/** Insert a single rawExpRow object into a table
  *
  * This function constructs and inserts a single row based on it's parameters.
@@ -2120,10 +2117,10 @@
  */
 
-bool rawDetrendExpInsertObject(
-    psDB            *dbh,               ///< Database handle
-    rawDetrendExpRow *object             ///< rawDetrendExpRow object
-);
-
-/** Insert an array of rawDetrendExpRow object into a table
+bool rawExpInsertObject(
+    psDB            *dbh,               ///< Database handle
+    rawExpRow       *object             ///< rawExpRow object
+);
+
+/** Insert an array of rawExpRow object into a table
  *
  * This function constructs and inserts multiple rows based on it's parameters.
@@ -2132,10 +2129,10 @@
  */
 
-bool rawDetrendExpInsertObjects(
-    psDB            *dbh,               ///< Database handle
-    psArray         *objects            ///< array of rawDetrendExpRow objects
-);
-
-/** Insert data from a binary FITS table rawDetrendExpRow into the database
+bool rawExpInsertObjects(
+    psDB            *dbh,               ///< Database handle
+    psArray         *objects            ///< array of rawExpRow objects
+);
+
+/** Insert data from a binary FITS table rawExpRow into the database
  *
  * This function expects a psFits object with a FITS table as the first
@@ -2147,5 +2144,5 @@
  */
 
-bool rawDetrendExpInsertFits(
+bool rawExpInsertFits(
     psDB            *dbh,               ///< Database handle
     const psFits    *fits               ///< psFits object
@@ -2162,5 +2159,5 @@
  */
 
-bool rawDetrendExpSelectRowsFits(
+bool rawExpSelectRowsFits(
     psDB            *dbh,               ///< Database handle
     psFits          *fits,              ///< psFits object
@@ -2169,22 +2166,22 @@
 );
 
-/** Convert a rawDetrendExpRow into an equivalent psMetadata
+/** Convert a rawExpRow into an equivalent psMetadata
  *
  * @return A psMetadata pointer or NULL on error
  */
 
-psMetadata *rawDetrendExpMetadataFromObject(
-    const rawDetrendExpRow *object             ///< fooRow to convert into a psMetadata
+psMetadata *rawExpMetadataFromObject(
+    const rawExpRow *object             ///< fooRow to convert into a psMetadata
 );
 
 /** Convert a psMetadata into an equivalent fooRow
  *
- * @return A rawDetrendExpRow pointer or NULL on error
- */
-
-rawDetrendExpRow *rawDetrendExpObjectFromMetadata(
+ * @return A rawExpRow pointer or NULL on error
+ */
+
+rawExpRow *rawExpObjectFromMetadata(
     psMetadata      *md                 ///< psMetadata to convert into a fooRow
 );
-/** Selects up to limit rows from the database and returns as rawDetrendExpRow objects in a psArray
+/** Selects up to limit rows from the database and returns as rawExpRow objects in a psArray
  *
  *  See psDBSelectRows() for documentation on the format of where.
@@ -2193,10 +2190,10 @@
  */
 
-psArray *rawDetrendExpSelectRowObjects(
+psArray *rawExpSelectRowObjects(
     psDB            *dbh,               ///< Database handle
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
 );
-/** Deletes a row from the database coresponding to an rawDetrendExp
+/** Deletes a row from the database coresponding to an rawExp
  *
  *  Note that a 'where' search psMetadata is constructed from each object and
@@ -2206,7 +2203,7 @@
  */
 
-bool rawDetrendExpDeleteObject(
-    psDB            *dbh,               ///< Database handle
-    const rawDetrendExpRow *object    ///< Object to delete
+bool rawExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const rawExpRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -2218,10 +2215,10 @@
  */
 
-long long rawDetrendExpDeleteRowObjects(
+long long rawExpDeleteRowObjects(
     psDB            *dbh,               ///< Database handle
     const psArray   *objects,           ///< Array of objects to delete
     unsigned long long limit            ///< Maximum number of elements to delete 
 );
-/** Formats and prints an array of rawDetrendExpRow objects
+/** Formats and prints an array of rawExpRow objects
  *
  * When mdcf is set the formated output is in psMetadataConfig
@@ -2231,10 +2228,10 @@
  */
 
-bool rawDetrendExpPrintObjects(
+bool rawExpPrintObjects(
     FILE            *stream,            ///< a stream
-    psArray         *objects,           ///< An array of rawDetrendExpRow objects
+    psArray         *objects,           ///< An array of rawExpRow objects
     bool            mdcf                ///< format as mdconfig or simple
 );
-/** Formats and prints an rawDetrendExpRow object
+/** Formats and prints an rawExpRow object
  *
  * When mdcf is set the formated output is in psMetadataConfig
@@ -2244,256 +2241,7 @@
  */
 
-bool rawDetrendExpPrintObject(
+bool rawExpPrintObject(
     FILE            *stream,            ///< a stream
-    rawDetrendExpRow *object,    ///< an rawDetrendExpRow object
-    bool            mdcf                ///< format as mdconfig or simple
-);
-/** rawScienceExpRow data structure
- *
- * Structure for representing a single row of rawScienceExp table data.
- */
-
-typedef struct {
-    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;
-    psTime*         dateobs;
-} rawScienceExpRow;
-
-/** Creates a new rawScienceExpRow object
- *
- *  @return A new rawScienceExpRow object or NULL on failure.
- */
-
-rawScienceExpRow *rawScienceExpRowAlloc(
-    const char      *exp_tag,
-    const char      *camera,
-    const char      *telescope,
-    const char      *exp_type,
-    psS32           imfiles,
-    const char      *filter,
-    psF32           airmass,
-    psF64           ra,
-    psF64           decl,
-    psF32           exp_time,
-    psF64           bg,
-    psF64           bg_stdev,
-    psF64           bg_mean_stdev,
-    psF64           alt,
-    psF64           az,
-    psF32           ccd_temp,
-    psF64           posang,
-    const char      *object,
-    psTime*         dateobs
-);
-
-/** Creates a new rawScienceExp table
- *
- * @return true on success
- */
-
-bool rawScienceExpCreateTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Deletes a rawScienceExp table
- *
- * @return true on success
- */
-
-bool rawScienceExpDropTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Insert a single row into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool rawScienceExpInsert(
-    psDB            *dbh,               ///< Database handle
-    const char      *exp_tag,
-    const char      *camera,
-    const char      *telescope,
-    const char      *exp_type,
-    psS32           imfiles,
-    const char      *filter,
-    psF32           airmass,
-    psF64           ra,
-    psF64           decl,
-    psF32           exp_time,
-    psF64           bg,
-    psF64           bg_stdev,
-    psF64           bg_mean_stdev,
-    psF64           alt,
-    psF64           az,
-    psF32           ccd_temp,
-    psF64           posang,
-    const char      *object,
-    psTime*         dateobs
-);
-
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long rawScienceExpDelete(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-
-/** Insert a single rawScienceExpRow object into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool rawScienceExpInsertObject(
-    psDB            *dbh,               ///< Database handle
-    rawScienceExpRow *object             ///< rawScienceExpRow object
-);
-
-/** Insert an array of rawScienceExpRow object into a table
- *
- * This function constructs and inserts multiple rows based on it's parameters.
- *
- * @return true on success
- */
-
-bool rawScienceExpInsertObjects(
-    psDB            *dbh,               ///< Database handle
-    psArray         *objects            ///< array of rawScienceExpRow objects
-);
-
-/** Insert data from a binary FITS table rawScienceExpRow into the database
- *
- * This function expects a psFits object with a FITS table as the first
- * extension.  The table must have at least one row of data in it, that is of
- * the appropriate format (number of columns and their type).  All other
- * extensions are ignored.
- *
- * @return true on success
- */
-
-bool rawScienceExpInsertFits(
-    psDB            *dbh,               ///< Database handle
-    const psFits    *fits               ///< psFits object
-);
-
-/** Selects up to limit from the database and returns them in a binary FITS table
- *
- * This function assumes an empty psFits object and will create a FITS table
- * as the first extension.
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return true on success
- */
-
-bool rawScienceExpSelectRowsFits(
-    psDB            *dbh,               ///< Database handle
-    psFits          *fits,              ///< psFits object
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-
-/** Convert a rawScienceExpRow into an equivalent psMetadata
- *
- * @return A psMetadata pointer or NULL on error
- */
-
-psMetadata *rawScienceExpMetadataFromObject(
-    const rawScienceExpRow *object             ///< fooRow to convert into a psMetadata
-);
-
-/** Convert a psMetadata into an equivalent fooRow
- *
- * @return A rawScienceExpRow pointer or NULL on error
- */
-
-rawScienceExpRow *rawScienceExpObjectFromMetadata(
-    psMetadata      *md                 ///< psMetadata to convert into a fooRow
-);
-/** Selects up to limit rows from the database and returns as rawScienceExpRow objects in a psArray
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return A psArray pointer or NULL on error
- */
-
-psArray *rawScienceExpSelectRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-/** Deletes a row from the database coresponding to an rawScienceExp
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-bool rawScienceExpDeleteObject(
-    psDB            *dbh,               ///< Database handle
-    const rawScienceExpRow *object    ///< Object to delete
-);
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long rawScienceExpDeleteRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psArray   *objects,           ///< Array of objects to delete
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-/** Formats and prints an array of rawScienceExpRow objects
- *
- * When mdcf is set the formated output is in psMetadataConfig
- * format, otherwise it is in a simple tabular format.
- *
- * @return true on success
- */
-
-bool rawScienceExpPrintObjects(
-    FILE            *stream,            ///< a stream
-    psArray         *objects,           ///< An array of rawScienceExpRow objects
-    bool            mdcf                ///< format as mdconfig or simple
-);
-/** Formats and prints an rawScienceExpRow object
- *
- * When mdcf is set the formated output is in psMetadataConfig
- * format, otherwise it is in a simple tabular format.
- *
- * @return true on success
- */
-
-bool rawScienceExpPrintObject(
-    FILE            *stream,            ///< a stream
-    rawScienceExpRow *object,    ///< an rawScienceExpRow object
+    rawExpRow *object,    ///< an rawExpRow object
     bool            mdcf                ///< format as mdconfig or simple
 );
@@ -2523,4 +2271,5 @@
     char            *object;
     psTime*         dateobs;
+    psS16           fault;
 } rawImfileRow;
 
@@ -2549,5 +2298,6 @@
     psF64           posang,
     const char      *object,
-    psTime*         dateobs
+    psTime*         dateobs,
+    psS16           fault
 );
 
@@ -2597,5 +2347,6 @@
     psF64           posang,
     const char      *object,
-    psTime*         dateobs
+    psTime*         dateobs,
+    psS16           fault
 );
 
Index: /trunk/ippdb/tests/alloc.c
===================================================================
--- /trunk/ippdb/tests/alloc.c	(revision 11044)
+++ /trunk/ippdb/tests/alloc.c	(revision 11045)
@@ -244,5 +244,5 @@
         newExpRow       *object;
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, -16    );
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32    );
 
         if (!object) {
@@ -277,7 +277,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
 
         psFree(object);
@@ -287,5 +284,5 @@
         newImfileRow    *object;
 
-        object = newImfileRowAlloc("a string", "a string", "a string", "a string", -16    );
+        object = newImfileRowAlloc("a string", "a string", "a string", "a string"    );
 
         if (!object) {
@@ -309,15 +306,12 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        rawDetrendExpRow *object;
-
-        object = rawDetrendExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z"    );
+
+        psFree(object);
+    }
+
+    {
+        rawExpRow       *object;
+
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16    );
 
         if (!object) {
@@ -400,26 +394,33 @@
             exit(EXIT_FAILURE);
         }
-
-        psFree(object);
-    }
-
-    {
-        rawScienceExpRow *object;
-
-        object = rawScienceExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z"    );
-
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+
+        psFree(object);
+    }
+
+    {
+        rawImfileRow    *object;
+
+        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16    );
+
+        if (!object) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -429,8 +430,4 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->imfiles == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -485,89 +482,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        rawImfileRow    *object;
-
-        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z"    );
-
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->airmass == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->ra == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->decl == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->exp_time == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg_stdev == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg_mean_stdev == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->alt == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->az == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->ccd_temp == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->posang == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/createtable.c
===================================================================
--- /trunk/ippdb/tests/createtable.c	(revision 11044)
+++ /trunk/ippdb/tests/createtable.c	(revision 11045)
@@ -148,20 +148,5 @@
         }
 
-        if(!rawDetrendExpCreateTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if(!rawScienceExpCreateTable(dbh)) {
+        if(!rawExpCreateTable(dbh)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/dbcleanup.c
===================================================================
--- /trunk/ippdb/tests/dbcleanup.c	(revision 11044)
+++ /trunk/ippdb/tests/dbcleanup.c	(revision 11045)
@@ -20,6 +20,5 @@
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS newExp");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS newImfile");
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawDetrendExp");
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawScienceExp");
+    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawExp");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawImfile");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p1PendingExp");
Index: /trunk/ippdb/tests/dbsetup.c
===================================================================
--- /trunk/ippdb/tests/dbsetup.c	(revision 11044)
+++ /trunk/ippdb/tests/dbsetup.c	(revision 11045)
@@ -40,9 +40,6 @@
     newImfileCreateTable(dbh);
 
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawDetrendExp");
-    rawDetrendExpCreateTable(dbh);
-
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawScienceExp");
-    rawScienceExpCreateTable(dbh);
+    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawExp");
+    rawExpCreateTable(dbh);
 
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS rawImfile");
Index: /trunk/ippdb/tests/droptable.c
===================================================================
--- /trunk/ippdb/tests/droptable.c	(revision 11044)
+++ /trunk/ippdb/tests/droptable.c	(revision 11045)
@@ -148,20 +148,5 @@
         }
 
-        if (!rawDetrendExpDropTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawScienceExpDropTable(dbh)) {
+        if (!rawExpDropTable(dbh)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insert.c
===================================================================
--- /trunk/ippdb/tests/insert.c	(revision 11044)
+++ /trunk/ippdb/tests/insert.c	(revision 11045)
@@ -118,65 +118,50 @@
         }
 
-        if (!newExpInsert(dbh, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!newImfileInsert(dbh, "a string", "a string", "a string", "a string", -16)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawDetrendExpInsert(dbh, "a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z")) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawScienceExpInsert(dbh, "a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z")) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z")) {
+        if (!newExpInsert(dbh, "a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!newImfileInsert(dbh, "a string", "a string", "a string", "a string")) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!rawExpInsert(dbh, "a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16)) {
+            exit(EXIT_FAILURE);
+        }
+
+        psDBCleanup(dbh);
+    }
+
+    {
+        psDB            *dbh;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!rawImfileInsert(dbh, "a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insertfits.c
===================================================================
--- /trunk/ippdb/tests/insertfits.c	(revision 11044)
+++ /trunk/ippdb/tests/insertfits.c	(revision 11045)
@@ -258,31 +258,5 @@
         }
 
-        if (!rawDetrendExpInsertFits(dbh, fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!psFitsClose(fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        // open a temp
-        fits = psFitsOpen(TMP_FILENAME, "r");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawScienceExpInsertFits(dbh, fits)) {
+        if (!rawExpInsertFits(dbh, fits)) {
             exit(EXIT_FAILURE);
         }
Index: /trunk/ippdb/tests/insertobject.c
===================================================================
--- /trunk/ippdb/tests/insertobject.c	(revision 11044)
+++ /trunk/ippdb/tests/insertobject.c	(revision 11045)
@@ -168,5 +168,5 @@
         }
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, -16);
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -190,5 +190,5 @@
         }
 
-        object = newImfileRowAlloc("a string", "a string", "a string", "a string", -16);
+        object = newImfileRowAlloc("a string", "a string", "a string", "a string");
         if (!object) {
             exit(EXIT_FAILURE);
@@ -205,39 +205,17 @@
     {
         psDB            *dbh;
-        rawDetrendExpRow *object;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        object = rawDetrendExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawDetrendExpInsertObject(dbh, object)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        rawScienceExpRow *object;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        object = rawScienceExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawScienceExpInsertObject(dbh, object)) {
+        rawExpRow       *object;
+
+        dbh = psDBInit("localhost", "test", NULL, "test");
+        if (!dbh) {
+            exit(EXIT_FAILURE);
+        }
+
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
+        if (!object) {
+            exit(EXIT_FAILURE);
+        }
+
+        if (!rawExpInsertObject(dbh, object)) {
             exit(EXIT_FAILURE);
         }
@@ -256,5 +234,5 @@
         }
 
-        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
+        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
         if (!object) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/metadatafromobject.c
===================================================================
--- /trunk/ippdb/tests/metadatafromobject.c	(revision 11044)
+++ /trunk/ippdb/tests/metadatafromobject.c	(revision 11045)
@@ -302,5 +302,5 @@
         bool            status;
 
-        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32, -16);
+        object = newExpRowAlloc("a string", "a string", "a string", "a string", "0001-01-01T00:00:00Z", "a string", -32);
         if (!object) {
             exit(EXIT_FAILURE);
@@ -341,7 +341,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
 
         psFree(md);
@@ -353,5 +350,5 @@
         bool            status;
 
-        object = newImfileRowAlloc("a string", "a string", "a string", "a string", -16);
+        object = newImfileRowAlloc("a string", "a string", "a string", "a string");
         if (!object) {
             exit(EXIT_FAILURE);
@@ -381,22 +378,19 @@
             exit(EXIT_FAILURE);
         }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-    }
-
-    {
-        psMetadata      *md;
-        rawDetrendExpRow *object;
-        bool            status;
-
-        object = rawDetrendExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        md = rawDetrendExpMetadataFromObject(object);
+
+        psFree(md);
+    }
+
+    {
+        psMetadata      *md;
+        rawExpRow       *object;
+        bool            status;
+
+        object = rawExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
+        if (!object) {
+            exit(EXIT_FAILURE);
+        }
+
+        md = rawExpMetadataFromObject(object);
         if (!md) {
             exit(EXIT_FAILURE);
@@ -480,34 +474,41 @@
             exit(EXIT_FAILURE);
         }
-
-        psFree(md);
-    }
-
-    {
-        psMetadata      *md;
-        rawScienceExpRow *object;
-        bool            status;
-
-        object = rawScienceExpRowAlloc("a string", "a string", "a string", "a string", -32, "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        md = rawScienceExpMetadataFromObject(object);
-        if (!md) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "camera"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "telescope"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+
+        psFree(md);
+    }
+
+    {
+        psMetadata      *md;
+        rawImfileRow    *object;
+        bool            status;
+
+        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z", -16);
+        if (!object) {
+            exit(EXIT_FAILURE);
+        }
+
+        md = rawImfileMetadataFromObject(object);
+        if (!md) {
+            exit(EXIT_FAILURE);
+        }
+
+        psFree(object);
+
+        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -517,8 +518,4 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataLookupS32(&status, md, "imfiles") == -32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
         if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
@@ -573,97 +570,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-    }
-
-    {
-        psMetadata      *md;
-        rawImfileRow    *object;
-        bool            status;
-
-        object = rawImfileRowAlloc("a string", "a string", "a string", "a string", "a string", "a string", 32.32, 64.64, 64.64, 32.32, 64.64, 64.64, 64.64, 64.64, 64.64, 32.32, 64.64, "a string", "0001-01-01T00:00:00Z");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        md = rawImfileMetadataFromObject(object);
-        if (!md) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "class"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "exp_type"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "filter"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "airmass") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "ra") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "decl") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "exp_time") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "alt") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "az") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF32(&status, md, "ccd_temp") == 32.32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupF64(&status, md, "posang") == 64.64) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "object"), "a string", MAX_STRING_LENGTH)) {
             psFree(md);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/objectfrommetadata.c
===================================================================
--- /trunk/ippdb/tests/objectfrommetadata.c	(revision 11044)
+++ /trunk/ippdb/tests/objectfrommetadata.c	(revision 11045)
@@ -450,7 +450,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
 
         object = newExpObjectFromMetadata(md);
@@ -489,7 +486,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
 
         psFree(object);
@@ -517,7 +511,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
 
         object = newImfileObjectFromMetadata(md);
@@ -545,14 +536,11 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        psMetadata      *md;
-        rawDetrendExpRow *object;
+
+        psFree(object);
+    }
+
+    {
+        psMetadata      *md;
+        rawExpRow       *object;
 
         md = psMetadataAlloc();
@@ -632,6 +620,9 @@
             exit(EXIT_FAILURE);
         }
-
-        object = rawDetrendExpObjectFromMetadata(md);
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+
+        object = rawExpObjectFromMetadata(md);
         if (!object) {
             psFree(md);
@@ -716,11 +707,14 @@
             exit(EXIT_FAILURE);
         }
-
-        psFree(object);
-    }
-
-    {
-        psMetadata      *md;
-        rawScienceExpRow *object;
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+
+        psFree(object);
+    }
+
+    {
+        psMetadata      *md;
+        rawImfileRow    *object;
 
         md = psMetadataAlloc();
@@ -729,9 +723,13 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "camera", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "telescope", 0, NULL, "a string")) {
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
             psFree(md);
             exit(EXIT_FAILURE);
@@ -741,8 +739,4 @@
             exit(EXIT_FAILURE);
         }
-        if (!psMetadataAddS32(md, PS_LIST_TAIL, "imfiles", 0, NULL, -32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
         if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
             psFree(md);
@@ -800,6 +794,9 @@
             exit(EXIT_FAILURE);
         }
-
-        object = rawScienceExpObjectFromMetadata(md);
+            psFree(md);
+            exit(EXIT_FAILURE);
+        }
+
+        object = rawImfileObjectFromMetadata(md);
         if (!object) {
             psFree(md);
@@ -813,9 +810,13 @@
             exit(EXIT_FAILURE);
         }
-        if (strncmp(object->camera, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->telescope, "a string", MAX_STRING_LENGTH)) {
+        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
+            psFree(object);
+            exit(EXIT_FAILURE);
+        }
+        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
@@ -825,8 +826,4 @@
             exit(EXIT_FAILURE);
         }
-        if (!object->imfiles == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
         if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
@@ -881,169 +878,4 @@
             exit(EXIT_FAILURE);
         }
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        psMetadata      *md;
-        rawImfileRow    *object;
-
-        md = psMetadataAlloc();
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_type", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "filter", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "decl", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "alt", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "az", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF32(md, PS_LIST_TAIL, "ccd_temp", 0, NULL, 32.32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddF64(md, PS_LIST_TAIL, "posang", 0, NULL, 64.64)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "object", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        object = rawImfileObjectFromMetadata(md);
-        if (!object) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-
-        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->exp_type, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->filter, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->airmass == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->ra == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->decl == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->exp_time == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg_stdev == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->bg_mean_stdev == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->alt == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->az == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->ccd_temp == 32.32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->posang == 64.64) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->object, "a string", MAX_STRING_LENGTH)) {
             psFree(object);
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/selectrowsfits.c
===================================================================
--- /trunk/ippdb/tests/selectrowsfits.c	(revision 11044)
+++ /trunk/ippdb/tests/selectrowsfits.c	(revision 11045)
@@ -219,27 +219,5 @@
         }
 
-        if (!rawDetrendExpSelectRowsFits(dbh, fits, NULL, 1)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(fits);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        fits = psFitsOpen(TMP_FILENAME, "w");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!rawScienceExpSelectRowsFits(dbh, fits, NULL, 1)) {
+        if (!rawExpSelectRowsFits(dbh, fits, NULL, 1)) {
             exit(EXIT_FAILURE);
         }
