Index: trunk/psphot/src/psphotReadout.c
===================================================================
--- trunk/psphot/src/psphotReadout.c	(revision 12950)
+++ trunk/psphot/src/psphotReadout.c	(revision 13012)
@@ -20,4 +20,7 @@
     PS_ASSERT_PTR_NON_NULL (breakPt, false);
 
+    // Use the new pmFootprints approach?
+    const bool useFootprints = psMetadataLookupBool(NULL, recipe, "USE_FOOTPRINTS");
+
     // generate mask & weight images if they don't already exit
     if (!pmReadoutGenerateMaskWeight (readout, true)) {
@@ -58,5 +61,13 @@
 
     // find the peaks in the image
-    psArray *peaks = psphotFindPeaks (readout, recipe, 1);
+    psArray *peaks;
+    if (useFootprints) {
+       psArray *footprints = psphotFindPeaks (readout, recipe, useFootprints, 1);
+       peaks = pmFootprintArrayToPeaks(footprints);
+       psFree(footprints);
+    } else {
+       peaks = psphotFindPeaks (readout, recipe, useFootprints, 1);
+    }
+
     if (!peaks) {
 	psLogMsg ("psphot", 3, "unable to find peaks in this image");
@@ -146,5 +157,16 @@
 
     // find the peaks in the image
-    psArray *newPeaks = psphotFindPeaks (readout, recipe, 2);
+    psArray *newPeaks;
+    if (useFootprints) {
+       psArray *newFootprints = psphotFindPeaks (readout, recipe, useFootprints, 2);
+
+       psphotCullPeaks(readout, recipe, newFootprints);
+
+       newPeaks = pmFootprintArrayToPeaks(newFootprints);
+
+       psFree(newFootprints);
+    } else {
+       newPeaks = psphotFindPeaks(readout, recipe, useFootprints, 2);
+    }
 
     // remove noise for subtracted objects
@@ -186,5 +208,5 @@
 
     // calculate source magnitudes
-    pmReadout *background = psphotSelectBackground (config, view);
+    pmReadout *background = psphotSelectBackground (config, view, false);
     psphotMagnitudes(sources, recipe, psf, background);
 
