Index: /trunk/ippTools/configure.ac
===================================================================
--- /trunk/ippTools/configure.ac	(revision 9763)
+++ /trunk/ippTools/configure.ac	(revision 9764)
@@ -16,5 +16,5 @@
 PKG_CHECK_MODULES([PSLIB], [pslib >= 0.12.99]) 
 PKG_CHECK_MODULES([PSMODULES], [psmodules >= 0.12.0]) 
-PKG_CHECK_MODULES([IPPDB], [ippdb >= 0.0.51]) 
+PKG_CHECK_MODULES([IPPDB], [ippdb >= 0.0.52]) 
 
 AC_PROG_PERL_MODULES(
Index: /trunk/ippTools/src/chiptool.c
===================================================================
--- /trunk/ippTools/src/chiptool.c	(revision 9763)
+++ /trunk/ippTools/src/chiptool.c	(revision 9764)
@@ -168,8 +168,18 @@
     // XXX does this need to be constrained so that it won't return any results
     // if a match p2PendingExp hasn't been registered?
-    psString query = psStringCopy("SELECT * FROM p2PendingImfile");
+    psString query = psStringCopy(
+            "SELECT"
+            "   p2PendingImfile.*"
+            " FROM p2PendingImfile"
+            " JOIN p2PendingExp"
+            "   USING(exp_tag)"
+            " LEFT JOIN p2Mask"
+            "   ON p2PendingExp.label = p2Mask.label"
+            " WHERE"
+            "   p2Mask.label IS NULL"
+        );
 
     if (config->where) {
-        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawImfile");
+        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "p2PendingImfile");
         psStringAppend(&query, " AND %s", whereClause);
         psFree(whereClause);
@@ -583,9 +593,10 @@
 {
     PS_ASSERT_PTR_NON_NULL(pendingExp, NULL);
-
+ 
     return p2ProcessedExpRowAlloc(
         pendingExp->exp_tag,
         pendingExp->p1_version,
-        pendingExp->p2_version
+        pendingExp->p2_version,
+        pendingExp->label
     );
 }
Index: /trunk/ippTools/src/pxtables.c
===================================================================
--- /trunk/ippTools/src/pxtables.c	(revision 9763)
+++ /trunk/ippTools/src/pxtables.c	(revision 9764)
@@ -57,4 +57,5 @@
     CREATE_TABLE(p2ProcessedExpCreateTable);
     CREATE_TABLE(p2ProcessedImfileCreateTable);
+    CREATE_TABLE(p2MaskCreateTable);
     CREATE_TABLE(p3PendingExpCreateTable);
     CREATE_TABLE(p3ProcessedExpCreateTable);
@@ -115,4 +116,5 @@
     DROP_TABLE(p2ProcessedExpDropTable);
     DROP_TABLE(p2ProcessedImfileDropTable);
+    DROP_TABLE(p2MaskDropTable);
     DROP_TABLE(p3PendingExpDropTable);
     DROP_TABLE(p3ProcessedExpDropTable);
Index: /trunk/ippTools/src/regtool.c
===================================================================
--- /trunk/ippTools/src/regtool.c	(revision 9763)
+++ /trunk/ippTools/src/regtool.c	(revision 9764)
@@ -680,9 +680,18 @@
     PS_ASSERT_PTR_NON_NULL(exp, NULL);
 
+    // optional
+    bool status = false;
+    psString label = psMetadataLookupStr(&status, config->args, "-label");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label");
+        return false;
+    }
+
     return p2PendingExpRowAlloc(
         exp->exp_tag,
         "my recipe",
         0xff, // XXX calc version number
-        0xff // XXX calc version number
+        0xff, // XXX calc version number
+        label
     );
 }
Index: /trunk/ippTools/src/regtoolConfig.c
===================================================================
--- /trunk/ippTools/src/regtoolConfig.c	(revision 9763)
+++ /trunk/ippTools/src/regtoolConfig.c	(revision 9764)
@@ -102,4 +102,6 @@
     psMetadataAddStr(updateexpArgs, PS_LIST_TAIL, "-dateobs",  0,
         "define observation time", NULL);
+    psMetadataAddStr(updateexpArgs, PS_LIST_TAIL, "-label",  0,
+        "define label for phase 2 processing (non-detrend data only)", NULL);
     /*
     psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-recip",  0,
