Index: /branches/eam_branch_20081124/Ohana/src/opihi/dvo/Makefile
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/dvo/Makefile	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/dvo/Makefile	(revision 20862)
@@ -35,4 +35,5 @@
 $(SRC)/dbExtractAverages.$(ARCH).o	\
 $(SRC)/dbExtractMeasures.$(ARCH).o	\
+$(SRC)/dbExtractImages.$(ARCH).o	\
 $(SRC)/dbFields.$(ARCH).o		\
 $(SRC)/dbRPN.$(ARCH).o			\
Index: /branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/dvo/avextract.c	(revision 20862)
@@ -6,22 +6,26 @@
   int Nsecfilt, mode, VERBOSE;
   char **cstack, name[1024];
+  void *Signal;
+
+  Catalog catalog;
+
+  Vector **vec;
+  PhotCode *code;
+  dbStack *stack;
+  dbField *fields;
   dbValue *values;
-  void *Signal;
-
-  Catalog catalog;
   SkyList *skylist;
   SkyRegionSelection *selection;
-  PhotCode *code;
-  Vector **vec;
-  dbField *fields;
-  dbStack *stack;
 
   /* defaults */
+  vec = NULL;
+  code = NULL;
+  stack = NULL;
+  fields = NULL;
+  values = NULL;
   skylist = NULL;
   selection = NULL;
-  code = NULL;
+
   mode = MAG_AVE;
-  fields = NULL;
-  stack = NULL;
 
   if ((N = get_argument (argc, argv, "-h"))) goto help;
@@ -66,5 +70,4 @@
   Nreturn = Nfields; 
   if (!dbCheckStack (stack, Nstack, DVO_TABLE_AVERAGE, &fields, &Nfields)) goto escape;
-  // XXX handle errors
 
   /* load region corresponding to selection above */
@@ -81,4 +84,5 @@
     }
     if ((vec[i] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape;
+    ResetVector (vec[i], fields[i].type, NPTS);
   }
 
@@ -109,8 +113,11 @@
 
       m = catalog.average[j].measureOffset;
-      dbExtractAveragesInit (); // reset counters for saved fields 
+
+      // reset counters for saved fields, extract fields
+      dbExtractAveragesInit (); 
       for (n = 0; n < Nfields; n++) {
 	values[n] = dbExtractAverages (&catalog.average[j], &catalog.secfilt[j*Nsecfilt], &catalog.measure[m], &fields[n]);
       }
+
       // test the conditional statement
       if (!dbBooleanCond (stack, Nstack, values)) continue;
@@ -126,5 +133,9 @@
 	NPTS += 2000;
 	for (n = 0; n < Nreturn; n++) {
-	  REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
+	  if (vec[n][0].type == OPIHI_FLT) {
+	    REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
+	  } else {
+	    REALLOCATE (vec[n][0].elements.Int, opihi_int, NPTS);
+	  }
 	}
       }
@@ -136,11 +147,16 @@
   for (n = 0; n < Nreturn; n++) {
     vec[n][0].Nelements = Npts;
-    REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
-  }
-
-  free (values);
+    if (vec[n][0].type == OPIHI_FLT) {
+      REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
+    } else {
+      REALLOCATE (vec[n][0].elements.Int, opihi_int, MAX(1,Npts));
+    }
+  }
+
+  if (vec) free (vec);
+  if (values) free (values);
   dbFreeFields (fields, Nfields);
   dbFreeStack (stack, Nstack);
-  free (stack);
+  if (stack) free (stack);
   SkyListFree (skylist);
   FreeSkyRegionSelection (selection);
@@ -148,8 +164,9 @@
 
  escape:
-  free (values);
+  if (vec) free (vec);
+  if (values) free (values);
   dbFreeFields (fields, Nfields);
   dbFreeStack (stack, Nstack);
-  free (stack);
+  if (stack) free (stack);
   SkyListFree (skylist);
   FreeSkyRegionSelection (selection);
Index: /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractImages.c
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractImages.c	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractImages.c	(revision 20862)
@@ -1,3 +1,7 @@
 # include "dvoshell.h"
+
+/* time concepts */
+static time_t TimeReference;
+static int TimeFormat;
 
 static CoordTransform *celestial_to_galactic = NULL;
@@ -11,4 +15,8 @@
 static double ELON = 0.0;
 static double ELAT = 0.0;
+
+static int haveCelestial = FALSE;
+static double RAo = 0.0;
+static double DECo = 0.0;
 
 // define a locally-static transform
@@ -34,12 +42,20 @@
 
 int dbExtractImagesInit () {
-  haveGalactic = FALSE;
-  haveEcliptic = FALSE;
+  GetTimeFormat (&TimeReference, &TimeFormat);
   return (TRUE);
 }
 
+int dbExtractImagesReset () {
+  haveGalactic  = FALSE;
+  haveEcliptic  = FALSE;
+  haveCelestial = FALSE;
+  return (TRUE);
+}
+
 /* return image.field based on the selection */
-dbValue dbExtractImages (Image *image, dbField *field) {
-
+dbValue dbExtractImages (Image *image, int Nimage, int N, dbField *field) {
+
+  double x, y;
+  time_t t;
   int i, Nsec;
   dbValue value;
@@ -51,20 +67,32 @@
   switch (field->ID) {
     case IMAGE_RA:
-      XXX : need a better implementation of this...
-	if (!FindMosaicForImage (image, Nimage, j)) continue;
-      x = 0.5*image[0].NX;
-      y = 0.5*image[0].NY;
-      XY_to_RD (&ra, &dec, x, y, &image[0].coords);
-      value.Flt = ra;
+      if (!haveCelestial) {
+	if (!FindMosaicForImage (image, Nimage, N)) return value;
+	x = 0.5*image[N].NX;
+	y = 0.5*image[N].NY;
+	XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	haveCelestial = TRUE;
+      }
+      value.Flt = RAo;
       break;
     case IMAGE_DEC:
-      if (!FindMosaicForImage (image, Nimage, j)) continue;
-      x = 0.5*image[0].NX;
-      y = 0.5*image[0].NY;
-      XY_to_RD (&ra, &dec, x, y, &image[0].coords);
-      value.Flt = dec;
+      if (!haveCelestial) {
+	if (!FindMosaicForImage (image, Nimage, N)) return value;
+	x = 0.5*image[N].NX;
+	y = 0.5*image[N].NY;
+	XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	haveCelestial = TRUE;
+      }
+      value.Flt = DECo;
       break;
     case IMAGE_GLON:
       if (!haveGalactic) {
+	if (!haveCelestial) {
+	  if (!FindMosaicForImage (image, Nimage, N)) return value;
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	  haveCelestial = TRUE;
+	}
 	ApplyTransform (&GLON, &GLAT, RAo, DECo, celestial_to_galactic);
 	haveGalactic = TRUE;
@@ -74,4 +102,11 @@
     case IMAGE_GLAT:
       if (!haveGalactic) {
+	if (!haveCelestial) {
+	  if (!FindMosaicForImage (image, Nimage, N)) return value;
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	  haveCelestial = TRUE;
+	}
 	ApplyTransform (&GLON, &GLAT, RAo, DECo, celestial_to_galactic);
 	haveGalactic = TRUE;
@@ -81,4 +116,11 @@
     case IMAGE_ELON:
       if (!haveEcliptic) {
+	if (!haveCelestial) {
+	  if (!FindMosaicForImage (image, Nimage, N)) return value;
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	  haveCelestial = TRUE;
+	}
 	ApplyTransform (&ELON, &ELAT, RAo, DECo, celestial_to_ecliptic);
 	haveEcliptic = TRUE;
@@ -88,4 +130,11 @@
     case IMAGE_ELAT:
       if (!haveEcliptic) {
+	if (!haveCelestial) {
+	  if (!FindMosaicForImage (image, Nimage, N)) return value;
+	  x = 0.5*image[N].NX;
+	  y = 0.5*image[N].NY;
+	  XY_to_RD (&RAo, &DECo, x, y, &image[N].coords);
+	  haveCelestial = TRUE;
+	}
 	ApplyTransform (&ELON, &ELAT, RAo, DECo, celestial_to_ecliptic);
 	haveEcliptic = TRUE;
@@ -93,76 +142,76 @@
       value.Flt = ELAT;
       break;
-    case IMAGE_Xm:
-      value.Flt = pow(10.0, 0.01*image[0].Xm);
+    case IMAGE_XM:
+      value.Flt = pow(10.0, 0.01*image[N].Xm);
       break;
     case IMAGE_AIRMASS:
-      value.Flt = image[0].secz;
+      value.Flt = image[N].secz;
       break;
     case IMAGE_MCAL:
-      value.Flt = image[0].Mcal;
+      value.Flt = image[N].Mcal;
       break;
     case IMAGE_dMCAL:
-      value.Flt = image[0].dMcal;
+      value.Flt = image[N].dMcal;
       break;
     case IMAGE_PHOTCODE:
-      value.Flt = image[0].photcode;
+      value.Flt = image[N].photcode;
       break;
     case IMAGE_TIME:
-      t = image[0].tzero + 0.5*image[0].NY * image[0].trate / 10000;
+      t = image[N].tzero + 0.5*image[N].NY * image[N].trate / 10000;
       value.Flt = TimeValue (t, TimeReference, TimeFormat);
       break;
     case IMAGE_FWHM:
-      value.Flt = image[0].fwhm_x / 25.0;
+      value.Flt = image[N].fwhm_x / 25.0;
       break;
     case IMAGE_EXPTIME:
-      value.Flt = image[0].exptime;
+      value.Flt = image[N].exptime;
       break;
     case IMAGE_NSTAR:
-      value.Flt = image[0].nstar;
+      value.Flt = image[N].nstar;
       break;
     case IMAGE_NCAL:
-      value.Flt = image[0].Mxxxx;
+      value.Flt = image[N].Mxxxx;
       break;
     case IMAGE_SKY:
-      value.Flt = image[0].Myyyy + 0x8000;
+      value.Flt = image[N].Myyyy + 0x8000;
       break;
     case IMAGE_FLAG:
-      value.Flt = image[0].code;
+      value.Flt = image[N].code;
       break;
     case IMAGE_NX_PIX:
-      value.Flt = image[0].NX;
+      value.Flt = image[N].NX;
       break;
     case IMAGE_NY_PIX:
-      value.Flt = image[0].NY;
+      value.Flt = image[N].NY;
       break;
     case IMAGE_IMAGE_ID:
-      value.Flt = image[0].imageID;
+      value.Flt = image[N].imageID;
       break;
     case IMAGE_THETA: {
       double theta1, theta2, s1, s2;
-      s1 = SIGN(image[0].coords.pc1_1);
-      s2 = SIGN(image[0].coords.pc2_2);
-      theta1 = DEG_RAD*atan2 (+s1*image[0].coords.pc1_2, s1*image[0].coords.pc1_1);
-      theta2 = DEG_RAD*atan2 (-s2*image[0].coords.pc2_1, s2*image[0].coords.pc2_2);
+      s1 = SIGN(image[N].coords.pc1_1);
+      s2 = SIGN(image[N].coords.pc2_2);
+      theta1 = DEG_RAD*atan2 (+s1*image[N].coords.pc1_2, s1*image[N].coords.pc1_1);
+      theta2 = DEG_RAD*atan2 (-s2*image[N].coords.pc2_1, s2*image[N].coords.pc2_2);
       value.Flt = 0.5*(theta1+theta2);
       break; }
     case IMAGE_SKEW: {
       double theta1, theta2, s1, s2;
-      s1 = SIGN(image[0].coords.pc1_1);
-      s2 = SIGN(image[0].coords.pc2_2);
-      theta1 = DEG_RAD*atan2 (+s1*image[0].coords.pc1_2, s1*image[0].coords.pc1_1);
-      theta2 = DEG_RAD*atan2 (-s2*image[0].coords.pc2_1, s2*image[0].coords.pc2_2);
+      s1 = SIGN(image[N].coords.pc1_1);
+      s2 = SIGN(image[N].coords.pc2_2);
+      theta1 = DEG_RAD*atan2 (+s1*image[N].coords.pc1_2, s1*image[N].coords.pc1_1);
+      theta2 = DEG_RAD*atan2 (-s2*image[N].coords.pc2_1, s2*image[N].coords.pc2_2);
       value.Flt = (theta1-theta2);
       break; }
     case IMAGE_SCALE: {
       double scale1, scale2;
-      scale1 = fabs(image[0].coords.cdelt1);
-      scale2 = fabs(image[0].coords.cdelt2);
+      scale1 = fabs(image[N].coords.cdelt1);
+      scale2 = fabs(image[N].coords.cdelt2);
       value.Flt = 0.5*(scale1+scale2);
       break; }
     case IMAGE_DSCALE: {
       double scale1, scale2;
-      scale1 = fabs(image[0].coords.cdelt1);
-      scale2 = fabs(image[0].coords.cdelt2);
+      scale1 = fabs(image[N].coords.cdelt1);
+      scale2 = fabs(image[N].coords.cdelt2);
       value.Flt = (scale1-scale2);
       break; }
@@ -177,30 +226,30 @@
     case IMAGE_X_LR_CHIP:
     case IMAGE_X_UR_CHIP:
-      value.Flt = image[0].NX;
+      value.Flt = image[N].NX;
       break;
     case IMAGE_Y_UL_CHIP:
     case IMAGE_Y_UR_CHIP:
-      value.Flt = image[0].NX;
+      value.Flt = image[N].NX;
       break;
 
     case IMAGE_X_LL_FP:
     case IMAGE_Y_LL_FP:
-      XY_to_LM (&x, &y, 0.0, 0.0, &image[0].coords);
-      value.Flt = (mode == X_LL_FP) ? x : y;
+      XY_to_LM (&x, &y, 0.0, 0.0, &image[N].coords);
+      value.Flt = (field->ID == IMAGE_X_LL_FP) ? x : y;
       break;
     case IMAGE_X_LR_FP:
     case IMAGE_Y_LR_FP:
-      XY_to_LM (&x, &y, image[0].NX, 0.0, &image[0].coords);
-      value.Flt = (mode == X_LR_FP) ? x : y;
+      XY_to_LM (&x, &y, image[N].NX, 0.0, &image[N].coords);
+      value.Flt = (field->ID == IMAGE_X_LR_FP) ? x : y;
       break;
     case IMAGE_X_UL_FP:
     case IMAGE_Y_UL_FP:
-      XY_to_LM (&x, &y, 0.0, image[0].NY, &image[0].coords);
-      value.Flt = (mode == X_UL_FP) ? x : y;
+      XY_to_LM (&x, &y, 0.0, image[N].NY, &image[N].coords);
+      value.Flt = (field->ID == IMAGE_X_UL_FP) ? x : y;
       break;
     case IMAGE_X_UR_FP:
     case IMAGE_Y_UR_FP:
-      XY_to_LM (&x, &y, image[0].NX, image[0].NY, &image[0].coords);
-      value.Flt = (mode == X_UR_FP) ? x : y;
+      XY_to_LM (&x, &y, image[N].NX, image[N].NY, &image[N].coords);
+      value.Flt = (field->ID == IMAGE_X_UR_FP) ? x : y;
       break;
   }
Index: /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractMeasures.c
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 20862)
@@ -31,7 +31,8 @@
 static double ELAT_MEAS = 0.0;
 
-void dbExtractMeasuresInit () {
+int dbExtractMeasuresInit () {
   TimeRefPM = ohana_date_to_sec ("2000/01/01");
   GetTimeFormat (&TimeReference, &TimeFormat);
+  return (TRUE);
 }
 
Index: /branches/eam_branch_20081124/Ohana/src/opihi/dvo/imextract.c
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/dvo/imextract.c	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/dvo/imextract.c	(revision 20862)
@@ -3,13 +3,25 @@
 int imextract (int argc, char **argv) {
   
-  int i, j, Nimage, mode, N, PhotcodeSelect;
-  int TimeSelect, *subset, Nsubset, TimeFormat, FlagSelect, FlagValue;
-  double x, y, ra, dec, t, trange;
-  time_t tzero, TimeReference;
+  // int *subset, Nsubset;  -- not sure if we need to use this or not...
+
+  int i, j, n, m, N, Npts, NPTS, last, next, state, Nfields, Nreturn, Ncstack, Nstack;
+  int Nimage, VERBOSE;
+  char **cstack, name[1024];
+  void *Signal;
+
+  Vector **vec;
+  Image *image;
+  dbStack *stack;
+  dbField *fields;
+  dbValue *values;
   SkyRegionSelection *selection;
 
-  PhotCode *code;
-  Image *image;
-  Vector *vec;
+  /* defaults */
+  vec = NULL;
+  image = NULL;
+  stack = NULL;
+  fields = NULL;
+  values = NULL;
+  selection = NULL;
 
   if ((N = get_argument (argc, argv, "-h"))) goto help;
@@ -30,5 +42,5 @@
   }
 
-  // command-line is of the form: avextract field,field, field [where (field op value)...]
+  // command-line is of the form: imextract field,field, field [where (field op value)...]
 
   // parse the fields to be extracted and returned
@@ -48,4 +60,5 @@
 
   // add the skyregion limits to the where statement (or create)
+  // XXX we may want to drop this and use just the image_subset function
   dbAstroRegionLimits (&stack, &Nstack, selection, DVO_TABLE_IMAGE);
 
@@ -64,4 +77,5 @@
     }
     if ((vec[i] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape;
+    ResetVector (vec[i], fields[i].type, NPTS);
   }
 
@@ -69,25 +83,22 @@
   NPTS = 1;
 
+  if ((image = LoadImages (&Nimage)) == NULL) goto escape;
+  BuildChipMatch (image, Nimage);
+  dbExtractImagesInit (); 
+
+  // XXX do I need to use this, or the region portion
+  // image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
+
   // grab data from all selected sky regions
   Signal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
-
-  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
-
-  // XXX do I need to use this, or the region portion
-  image_subset (image, Nimage, &subset, &Nsubset, selection, tzero, trange, TimeSelect);
-  if ((mode == RA) || (mode == DEC)) BuildChipMatch (image, Nimage);
-
-  GetTimeFormat (&TimeReference, &TimeFormat);
-
-  /* create storage vector */
-  ResetVector (vec, OPIHI_FLT, Nimage);
-  
   for (j = 0; (j < Nimage) && !interrupt; j++) {
 
-    dbExtractImagesInit (); // reset counters for saved fields 
+    // reset counters for saved fields, extract fields
+    dbExtractImagesReset (); 
     for (n = 0; n < Nfields; n++) {
-      values[n] = dbExtractImages (&image[j], &fields[n]);
+      values[n] = dbExtractImages (image, Nimage, j, &fields[n]);
     }
+
     // test the conditional statement
     if (!dbBooleanCond (stack, Nstack, values)) continue;
@@ -103,5 +114,9 @@
       NPTS += 2000;
       for (n = 0; n < Nreturn; n++) {
-	REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
+	if (vec[n][0].type == OPIHI_FLT) {
+	  REALLOCATE (vec[n][0].elements.Flt, opihi_flt, NPTS);
+	} else {
+	  REALLOCATE (vec[n][0].elements.Int, opihi_int, NPTS);
+	}
       }
     }
@@ -111,12 +126,27 @@
   for (n = 0; n < Nreturn; n++) {
     vec[n][0].Nelements = Npts;
-    REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
+    if (vec[n][0].type == OPIHI_FLT) {
+      REALLOCATE (vec[n][0].elements.Flt, opihi_flt, MAX(1,Npts));
+    } else {
+      REALLOCATE (vec[n][0].elements.Int, opihi_int, MAX(1,Npts));
+    }
   }
 
-  free (subset);
+  // free (subset);
   free (image);
+
+  if (vec) free (vec);
+  if (values) free (values);
+  dbFreeFields (fields, Nfields);
+  dbFreeStack (stack, Nstack);
+  if (stack) free (stack);
   return (TRUE);
   
  escape:
+  if (vec) free (vec);
+  if (values) free (values);
+  dbFreeFields (fields, Nfields);
+  dbFreeStack (stack, Nstack);
+  if (stack) free (stack);
   return (FALSE);
 
@@ -130,5 +160,5 @@
     return (FALSE);
   }
-  gprint (GP_ERR, " avextract --help fields : for a complete listing of allowed fields\n");
+  gprint (GP_ERR, " imextract --help fields : for a complete listing of allowed fields\n");
   return (FALSE);
 }
Index: /branches/eam_branch_20081124/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- /branches/eam_branch_20081124/Ohana/src/opihi/include/dvoshell.h	(revision 20861)
+++ /branches/eam_branch_20081124/Ohana/src/opihi/include/dvoshell.h	(revision 20862)
@@ -138,5 +138,9 @@
       IMAGE_RA, 
       IMAGE_DEC, 
-      IMAGE_Xm, 
+      IMAGE_GLON, 
+      IMAGE_GLAT, 
+      IMAGE_ELON, 
+      IMAGE_ELAT, 
+      IMAGE_XM, 
       IMAGE_AIRMASS, 
       IMAGE_MCAL, 
@@ -175,5 +179,5 @@
 };
 
-enum {DVO_TABLE_AVERAGE, DVO_TABLE_MEASURE};
+enum {DVO_TABLE_AVERAGE, DVO_TABLE_MEASURE, DVO_TABLE_IMAGE};
 enum {DVO_DB_CMDLINE_ERROR, DVO_DB_CMDLINE_IS_END, DVO_DB_CMDLINE_IS_WHERE, DVO_DB_CMDLINE_IS_MATCH}; 
 
@@ -308,5 +312,5 @@
 dbValue      dbExtractAverages      PROTO((Average *average, SecFilt *secfilt, Measure *measure, dbField *field));
 dbValue      dbExtractMeasures      PROTO((Average *average, SecFilt *secfilt, Measure *measure, dbField *field));
-void         dbExtractMeasuresInit  PROTO(());
+dbValue      dbExtractImages        PROTO((Image *image, int Nimage, int N, dbField *field));
 
 void 	     dbInitField            PROTO((dbField *field));
@@ -322,13 +326,15 @@
 int wordhash (char *word);
 
-int dbExtractAverageInitTransform (CoordTransformSystem target);
-int dbExtractAverageInit ();
-
 int dbExtractMeasuresInitTransform (CoordTransformSystem target);
 int dbExtractMeasuresInitAve ();
 int dbExtractMeasuresInitMeas ();
+int dbExtractMeasuresInit ();
 
 int dbExtractAveragesInitTransform (CoordTransformSystem target);
 int dbExtractAveragesInit ();
 
+int dbExtractImagesInitTransform (CoordTransformSystem target);
+int dbExtractImagesInit ();
+int dbExtractImagesReset ();
+
 # endif
