Index: trunk/psModules/src/camera/pmFPA.c
===================================================================
--- trunk/psModules/src/camera/pmFPA.c	(revision 23692)
+++ trunk/psModules/src/camera/pmFPA.c	(revision 23740)
@@ -298,7 +298,5 @@
 
 
-pmCell *pmCellAlloc(
-    pmChip *chip,
-    const char *name)
+pmCell *pmCellAlloc(pmChip *chip, const char *name)
 {
     pmCell *tmpCell = (pmCell *) psAlloc(sizeof(pmCell));
@@ -323,5 +321,5 @@
     }
     tmpCell->conceptsRead = PM_CONCEPT_SOURCE_NONE;
-    // XXX does this work?  moved to conceptsRead... pmConceptsBlankCell(tmpCell);
+    pmConceptsBlankCell(tmpCell);
 
     return tmpCell;
@@ -362,5 +360,5 @@
     }
     tmpChip->conceptsRead = PM_CONCEPT_SOURCE_NONE;
-    // XXX does this work?  moved to conceptsRead... pmConceptsBlankChip(tmpChip);
+    pmConceptsBlankChip(tmpChip);
     return tmpChip;
 }
@@ -393,5 +391,5 @@
     }
     tmpFPA->conceptsRead = PM_CONCEPT_SOURCE_NONE;
-    // XXX does this work?  moved to conceptsRead... pmConceptsBlankFPA(tmpFPA);
+    pmConceptsBlankFPA(tmpFPA);
 
     // this may be somewhat pedantic, but it makes these things consistent
Index: trunk/psModules/src/camera/pmFPACopy.c
===================================================================
--- trunk/psModules/src/camera/pmFPACopy.c	(revision 23692)
+++ trunk/psModules/src/camera/pmFPACopy.c	(revision 23740)
@@ -399,7 +399,5 @@
     if (targetHDU) {
         pmHDU *sourceHDU = pmHDUFromCell(source); // The source HDU
-        if (!sourceHDU) {
-            psWarning("Unable to copy header: no source header.");
-        } else if (sourceHDU->header) {
+        if (sourceHDU && sourceHDU->header) {
             targetHDU->header = psMetadataCopy(targetHDU->header, sourceHDU->header);
         }
Index: trunk/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtraction.c	(revision 23692)
+++ trunk/psModules/src/imcombine/pmSubtraction.c	(revision 23740)
@@ -1385,4 +1385,19 @@
     }
 
+    // Data exists on the outputs now
+    if (out1) {
+        out1->data_exists = true;
+        if (out1->parent) {
+            out1->parent->data_exists = out1->parent->parent->data_exists = true;
+        }
+    }
+    if (out2) {
+        out2->data_exists = true;
+        if (out2->parent) {
+            out2->parent->data_exists = out2->parent->parent->data_exists = true;
+        }
+    }
+
+
     psLogMsg("psModules.imcombine", PS_LOG_INFO, "Convolve image: %f sec",
              psTimerClear("pmSubtractionConvolve"));
Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 23692)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 23740)
@@ -567,20 +567,4 @@
             psFree(kernels);
             kernels = NULL;
-
-            // There is data in the readout now
-            if (subMode == PM_SUBTRACTION_MODE_1 || subMode == PM_SUBTRACTION_MODE_DUAL) {
-                conv1->data_exists = true;
-                if (conv1->parent) {
-                    conv1->parent->data_exists = true;
-                    conv1->parent->parent->data_exists = true;
-                }
-            }
-            if (subMode == PM_SUBTRACTION_MODE_2 || subMode == PM_SUBTRACTION_MODE_DUAL) {
-                conv2->data_exists = true;
-                if (conv2->parent) {
-                    conv2->parent->data_exists = true;
-                    conv2->parent->parent->data_exists = true;
-                }
-            }
         }
     }
