Index: trunk/ppImage/src/ppImage.h
===================================================================
--- trunk/ppImage/src/ppImage.h	(revision 20863)
+++ trunk/ppImage/src/ppImage.h	(revision 21183)
@@ -58,10 +58,10 @@
 
     // make values for abstract concepts of masking
-    psMaskType maskValue;               // apply this bit-mask to choose masked bits
-    psMaskType markValue;               // apply this bit-mask to choose masked bits
-    psMaskType satMask;                 // Mask value to give saturated pixels
-    psMaskType badMask;                 // Mask value to give bad pixels
-    psMaskType flatMask;                // Mask value to give bad flat pixels
-    psMaskType blankMask;               // Mask value to give blank pixels
+    psImageMaskType maskValue;               // apply this bit-mask to choose masked bits
+    psImageMaskType markValue;               // apply this bit-mask to choose masked bits
+    psImageMaskType satMask;                 // Mask value to give saturated pixels
+    psImageMaskType badMask;                 // Mask value to give bad pixels
+    psImageMaskType flatMask;                // Mask value to give bad flat pixels
+    psImageMaskType blankMask;               // Mask value to give blank pixels
 
     // non-linear correction parameters
Index: trunk/ppImage/src/ppImageCleanup.c
===================================================================
--- trunk/ppImage/src/ppImageCleanup.c	(revision 20863)
+++ trunk/ppImage/src/ppImageCleanup.c	(revision 21183)
@@ -23,5 +23,6 @@
     // fprintf (stderr, "Found %d leaks at %s\n", Nleaks, "ppImage");
 
-    fprintf(stderr, "Found %d leaks at %s\n", psMemCheckLeaks (0, NULL, NULL, false), "ppImage");
+    // fprintf(stderr, "Found %d leaks at %s\n", psMemCheckLeaks (0, NULL, NULL, false), "ppImage");
+    fprintf(stderr, "Found %d leaks at %s\n", psMemCheckLeaks (0, NULL, stdout, false), "ppImage");
 
     return;
Index: trunk/ppImage/src/ppImageLoop.c
===================================================================
--- trunk/ppImage/src/ppImageLoop.c	(revision 20863)
+++ trunk/ppImage/src/ppImageLoop.c	(revision 21183)
@@ -126,7 +126,7 @@
 	}
 
-        // measure various statistics for this image
+        // measure various pixel-based statistics for this image
         if (!ppImagePixelStats(config, stats, options, view)) {
-            ESCAPE("Unable to measures stats for image");
+            ESCAPE("Unable to measures pixel stats for image");
         }
         if (!ppImageMosaicChip(config, options, view, "PPIMAGE.CHIP", "PPIMAGE.OUTPUT")) {
@@ -209,7 +209,7 @@
     }
 
-    // Write out summary statistics
+    // Calculate summary statistics from FPA Metadata
     if (!ppImageMetadataStats(config, stats, options)) {
-        ESCAPE("Unable to write statistics file.");
+        ESCAPE("Unable to determine FPA-level metadata statistics.");
     }
 
@@ -218,5 +218,4 @@
         ESCAPE("save failure for FPA");
     }
-
     psFree(view);
 
@@ -230,4 +229,5 @@
         }
     }
+    psFree (stats);
 
     return true;
Index: trunk/ppImage/src/ppImageReplaceBackground.c
===================================================================
--- trunk/ppImage/src/ppImageReplaceBackground.c	(revision 20863)
+++ trunk/ppImage/src/ppImageReplaceBackground.c	(revision 21183)
@@ -30,8 +30,8 @@
     // XXX Should this be options->maskValue or options->maskValue & ~options->satMask?
     //     The latter will leave saturated pixels high
-    psMaskType maskVal = options->maskValue;
+    psImageMaskType maskVal = options->maskValue;
 
     // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
-    psMetadataAddU8(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskVal);
+    psMetadataAddImageMask(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskVal);
 
     // Since we are working on a chip-mosaicked image, there should only be a single cell and readout
@@ -146,5 +146,5 @@
             if (!isfinite(value)) {
                 image->data.F32[y][x] = NAN;
-                mask->data.PS_TYPE_MASK_DATA[y][x] |= options->badMask;
+                mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= options->badMask;
             } else {
                 image->data.F32[y][x] -= value;
@@ -157,5 +157,5 @@
     for (int y = 0; y < numRows; y++) {
         for (int x = 0; x < numCols; x++) {
-            if (mask && mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal) {
+            if (mask && mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) {
                 image->data.F32[y][x] = 0.0;
             } else {
@@ -163,5 +163,5 @@
                 if (!isfinite(value)) {
                     image->data.F32[y][x] = NAN;
-                    mask->data.PS_TYPE_MASK_DATA[y][x] |= options->badMask;
+                    mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= options->badMask;
                 } else {
                     image->data.F32[y][x] -= value;
Index: trunk/ppImage/src/ppImageSetMaskBits.c
===================================================================
--- trunk/ppImage/src/ppImageSetMaskBits.c	(revision 20863)
+++ trunk/ppImage/src/ppImageSetMaskBits.c	(revision 21183)
@@ -38,6 +38,6 @@
 
     // set maskValue and markValue in the psphot recipe
-    psMetadataAddU8 (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->maskValue);
-    psMetadataAddU8 (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->markValue);
+    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->maskValue);
+    psMetadataAddImageMask (recipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", options->markValue);
 
     return true;
