Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 7176)
+++ trunk/ippTools/src/dettool.c	(revision 7190)
@@ -160,4 +160,7 @@
     }
 
+    // print the new det_id
+    printf("%ld\n", det_id);
+
     return true;
 }
@@ -186,18 +189,44 @@
     psArray *rawImfiles = searchRawImfiles(config, NULL);
 
-    // XXX remove detProcessedImfiles
-
-    // print imfile list
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(rawImfiles); i++) {
-        psMetadata *md = rawImfileMetadataFromObject(rawImfiles->data[i]);
-        psMetadataAddMetadata(
+    // remove detProcessedImfiles
+    psArray *processedImfiles = detProcessedImfileSelectRowObjects(
+        config->dbh, config->where, 0);
+    // XXX trace the not found case
+    if (processedImfiles) {
+        for (long i = 0; i < psArrayLength(rawImfiles); i++) {
+            for (long j = 0; j < psArrayLength(processedImfiles); j++) {
+                if ((strcmp(
+                ((rawImfileRow *)rawImfiles->data[i])->exp_id,
+                ((detProcessedImfileRow *)processedImfiles->data[j])->exp_id)
+                == 0) && (strcmp(
+                ((rawImfileRow *)rawImfiles->data[i])->class_id,
+                ((detProcessedImfileRow *)processedImfiles->data[j])->class_id)
+                == 0)) {
+                    // remove the rawImfiles from the list
+                    psArrayRemove(rawImfiles, rawImfiles->data[i]);
+                    i--;
+                }
+            }
+        }
+        psFree(processedImfiles);
+    }
+
+    // did we remove all of the rawImfiles?
+    if (rawImfiles->n) {
+        // print imfile list
+        psMetadata *output = psMetadataAlloc();
+        for (long i = 0; i < psArrayLength(rawImfiles); i++) {
+            psMetadata *md = rawImfileMetadataFromObject(rawImfiles->data[i]);
+            psMetadataAddMetadata(
             output, PS_LIST_TAIL, "rawImfile",  PS_META_DUPLICATE_OK, NULL, md);
-    }
-
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
+        }
+
+        psString str = psMetadataConfigFormat(output); 
+        psFree(output);
+        fprintf(stdout, "%s\n", str);
+        psFree(str);
+    }
+
+    psFree(rawImfiles);
 
     return true;
