Index: trunk/ippTools/src/Makefile.am
===================================================================
--- trunk/ippTools/src/Makefile.am	(revision 6257)
+++ trunk/ippTools/src/Makefile.am	(revision 6258)
@@ -1,3 +1,3 @@
-bin_PROGRAMS = pxadmin p0search p2search 
+bin_PROGRAMS = pxadmin p2search  p0search
 
 include_HEADERS = pxtools.h
@@ -12,18 +12,16 @@
     p2rawToPending.c \
     p2searchPendingFrames.c \
-    p2searchRawFrames.c \
     p2updatePending.c \
 	pxframes.c \
     pxtables.c
 
-
 # for pxtools.h
 AM_CPPFLAGS = -I$(top_srcdir)/src$
 
-p0search_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(METADATADB_CFLAGS) $(pxtools_CFLAGS)
-p0search_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(METADATADB_LIBS) $(top_builddir)/src/libpxtools.la
-p0search_SOURCES = \
-    p0search.c \
-    p0searchConfig.c
+#p0search_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(METADATADB_CFLAGS) $(pxtools_CFLAGS)
+#p0search_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(METADATADB_LIBS) $(top_builddir)/src/libpxtools.la
+#p0search_SOURCES = \
+#    p0search.c \
+#    p0searchConfig.c
 
 p2search_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(METADATADB_CFLAGS) $(pxtools_CFLAGS)
Index: trunk/ippTools/src/chiptool.c
===================================================================
--- trunk/ippTools/src/chiptool.c	(revision 6257)
+++ trunk/ippTools/src/chiptool.c	(revision 6258)
@@ -51,5 +51,5 @@
 static bool quickMode(pxConfig *config)
 {
-    psArray *rawFrames = p2searchRawFrames(config);
+    psArray *rawFrames = rawScienceFrameSearch(config);
     if (!rawFrames) {
         psError(PS_ERR_UNKNOWN, false, "no rawScienceFrames found");
@@ -67,10 +67,10 @@
 static bool defineMode(pxConfig *config)
 {
-    psArray *rawFrames = p2searchRawFrames(config);
+    psArray *rawFrames = rawScienceFrameSearch(config);
     if (!rawFrames) {
         psError(PS_ERR_UNKNOWN, false, "no rawScienceFrames found");
         return false;
     }
-    psArray *pendingFrames = p2searchPendingFrames(config);
+    psArray *pendingFrames = p2PendingFrameSearch(config);
     // XXX compare raw frames to pending frames and remove duplicate 
     // frames from the raw set.  This may not be quiet right as it's
@@ -94,24 +94,24 @@
 
         psFree(pendingFrames);
-    }
-
-    psArray *doneFrames = p2searchDoneFrames(config);
-    if (doneFrames && (rawFrames->n > 0)) {
-        for (int i = 0; i < rawFrames->n; i++) {
-            rawScienceFrame *rawFrame = rawFrames->data[i];
-            for (int j = 0; j < pendingFrames->n; j++) {
-                p2DoneFrame *doneFrame = pendingFrames->data[j];
-                if (strcmp(rawFrame->exposure->exp_id,
-                           doneFrame->exposure->exp_id) == 0) {
-                    psArrayRemove(rawFrames, rawFrame);
-                    // dec the counter as the array just got shorter
-                    // and we don't want to skip elemnts
-                    i--;
-                    break;
-                } 
-            }
-        }
-
-        psFree(doneFrames);
+
+        psArray *doneFrames = p2searchDoneFrames(config);
+        if (doneFrames && (rawFrames->n > 0)) {
+            for (int i = 0; i < rawFrames->n; i++) {
+                rawScienceFrame *rawFrame = rawFrames->data[i];
+                for (int j = 0; j < pendingFrames->n; j++) {
+                    p2DoneFrame *doneFrame = pendingFrames->data[j];
+                    if (strcmp(rawFrame->exposure->exp_id,
+                               doneFrame->exposure->exp_id) == 0) {
+                        psArrayRemove(rawFrames, rawFrame);
+                        // dec the counter as the array just got shorter
+                        // and we don't want to skip elemnts
+                        i--;
+                        break;
+                    } 
+                }
+            }
+
+            psFree(doneFrames);
+        }
     }
 
@@ -133,5 +133,5 @@
 static bool pendingMode(pxConfig *config)
 {
-    psArray *pendingFrames = p2searchPendingFrames(config);
+    psArray *pendingFrames = p2PendingFrameSearch(config);
     if (!pendingFrames) {
         psError(PS_ERR_UNKNOWN, false, "no p2PendingFrames found");
Index: trunk/ippTools/src/p2searchPendingFrames.c
===================================================================
--- trunk/ippTools/src/p2searchPendingFrames.c	(revision 6257)
+++ trunk/ippTools/src/p2searchPendingFrames.c	(revision 6258)
@@ -2,5 +2,5 @@
 
 // select pending frames (exposure+images) which are done/not done
-psArray *p2searchPendingFrames(pxConfig *config) {
+psArray *p0searchPendingFrames(pxConfig *config) {
     PS_ASSERT_PTR_NON_NULL(config, NULL);
 
Index: trunk/ippTools/src/pxframes.c
===================================================================
--- trunk/ippTools/src/pxframes.c	(revision 6257)
+++ trunk/ippTools/src/pxframes.c	(revision 6258)
@@ -110,2 +110,4 @@
 
 PX_FRAME_SEARCH(newFrame, newExp, newImfile);
+PX_FRAME_SEARCH(rawScienceFrame, rawScienceExp, rawImfile);
+PX_FRAME_SEARCH(p2PendingFrame, p2PendingExp, p2PendingImfile);
Index: trunk/ippTools/src/pxtools.h
===================================================================
--- trunk/ippTools/src/pxtools.h	(revision 6257)
+++ trunk/ippTools/src/pxtools.h	(revision 6258)
@@ -14,4 +14,28 @@
 # define RECIPE "PHASE2"
 # define MAX_ROWS 10e9
+
+typedef enum {
+    P0_MODE_NONE,		      	        
+    P0_MODE_PENDING,			        // grab from new
+    P0_MODE_UPDATE,	                    // grab from new, create raw
+} p0mode;
+
+typedef struct {
+    p0mode mode;
+    psTime *start;
+    psTime *stop;
+    psMetadata *camera;
+    psDB *database;
+    psMetadata *site;
+    psMetadata *recipe;
+    psMetadata *arguments;
+    char *camera_name;
+    char *filter;
+    char *exp_id;
+    char *class;
+    char *class_id;
+    char *url;
+    psMetadata *where;
+} p0Config;
 
 typedef enum {
@@ -46,4 +70,14 @@
     psMetadata *where;
 } pxConfig;
+
+typedef struct {
+    newExpRow *exposure;
+    psArray *images;
+} newFrame;
+
+newFrame *newFrameAlloc(
+    newExpRow *exposure,
+    psArray *images
+);
 
 typedef struct {
@@ -83,7 +117,5 @@
 
 psArray *p2rawToPending (pxConfig *config, psArray *rawFrames);
-psArray *p2searchRawFrames (pxConfig *config);
 bool p2insertPendingFrames (pxConfig *config, psArray *rawFrames);
-psArray *p2searchPendingFrames (pxConfig *config);
 bool p2writePendingImages (pxConfig *config, psArray *frames);
 bool p2updatePendingFrames (pxConfig *config, psArray *pendingFrames);
@@ -95,4 +127,8 @@
 psArray *p2searchPendingExp(pxConfig *config);
 p2DoneExpRow *p2pendingToDoneExp(p2PendingExpRow *pendingExp);
+
 bool rawScienceFramePrint(FILE *stream, pxConfig *config, psArray *frames);
+psArray *rawScienceFrameSearch(pxConfig *config);
+
 bool p2PendingFramePrint(FILE *stream, pxConfig *config, psArray *frames);
+psArray *p2PendingFrameSearch(pxConfig *config);
