Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 7190)
+++ trunk/ippTools/src/dettool.c	(revision 7191)
@@ -206,4 +206,5 @@
                     psArrayRemove(rawImfiles, rawImfiles->data[i]);
                     i--;
+                    break;
                 }
             }
@@ -467,19 +468,44 @@
     }
 
-    // print imfile list
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
-        psMetadata *md = detStackedImfileMetadataFromObject(
-                stackedImfiles->data[i]);
-        psMetadataAddMetadata(
-            output, PS_LIST_TAIL, "detStackedImfile", PS_META_DUPLICATE_OK,
-            NULL, md
-        );
-    }
-
-    psString str = psMetadataConfigFormat(output); 
-    psFree(output);
-    fprintf(stdout, "%s\n", str);
-    psFree(str);
+    // remove detMasterImfiles
+    psArray *masterImfiles = detMasterImfileSelectRowObjects(
+        config->dbh, config->where, 0);
+    // XXX trace the not found case
+    if (masterImfiles) {
+        for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
+            for (long j = 0; j < psArrayLength(masterImfiles); j++) {
+                if (strcmp(
+                ((detStackedImfileRow *)stackedImfiles->data[i])->class_id,
+                ((detMasterImfileRow *)masterImfiles->data[j])->class_id)
+                == 0) {
+                    // remove the detStackedImfiles from the list
+                    psArrayRemove(stackedImfiles, stackedImfiles->data[i]);
+                    i--;
+                    break;
+                }
+            }
+        }
+        psFree(masterImfiles);
+    }
+
+    if (stackedImfiles->n) {
+        // print imfile list
+        psMetadata *output = psMetadataAlloc();
+        for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
+            psMetadata *md = detStackedImfileMetadataFromObject(
+                    stackedImfiles->data[i]);
+            psMetadataAddMetadata(
+                output, PS_LIST_TAIL, "detStackedImfile", PS_META_DUPLICATE_OK,
+                NULL, md
+            );
+        }
+
+        psString str = psMetadataConfigFormat(output); 
+        psFree(output);
+        fprintf(stdout, "%s\n", str);
+        psFree(str);
+    }
+
+    psFree(stackedImfiles);
 
     return true;
