Index: /trunk/ppImage/src/Makefile.am
===================================================================
--- /trunk/ppImage/src/Makefile.am	(revision 7591)
+++ /trunk/ppImage/src/Makefile.am	(revision 7592)
@@ -19,4 +19,5 @@
 	ppImageDetrendNonLinear.c \
 	ppImageRebinReadout.c \
+	ppImageMosaic.c \
 	ppImagePhotom.c \
 	ppImageAstrom.c
Index: /trunk/ppImage/src/ppImage.h
===================================================================
--- /trunk/ppImage/src/ppImage.h	(revision 7591)
+++ /trunk/ppImage/src/ppImage.h	(revision 7592)
@@ -39,3 +39,5 @@
 bool ppImageAstrom (pmConfig *config);
 
+bool ppImageMosaicChip (pmChip *chip, pmConfig *config, const pmFPAview *view);
+
 #endif
Index: /trunk/ppImage/src/ppImageAstrom.c
===================================================================
--- /trunk/ppImage/src/ppImageAstrom.c	(revision 7591)
+++ /trunk/ppImage/src/ppImageAstrom.c	(revision 7592)
@@ -13,8 +13,8 @@
 	// mode is 'REFERENCE' to prevent double frees of the fpa
 	pmFPAfile *output = psMetadataLookupPtr (&status, config->files, "PSPHOT.OUTPUT");
-	input = pmFPAfileDefineInput (config->files, config->camera, output->fpa, "PSASTRO.INPUT");
+	input = pmFPAfileDefineInput (config, output->fpa, "PSASTRO.INPUT");
 	input->mode = PM_FPA_MODE_REFERENCE;
 
-	pmFPAfileDefineOutput (config->files, config->camera, input->fpa, "PSPHOT.OUTPUT");
+	pmFPAfileDefineOutput (config, input->fpa, "PSPHOT.OUTPUT");
 
 	// supply the output name (from cmd-line) to all output (WRITE) files
Index: /trunk/ppImage/src/ppImageLoop.c
===================================================================
--- /trunk/ppImage/src/ppImageLoop.c	(revision 7591)
+++ /trunk/ppImage/src/ppImageLoop.c	(revision 7592)
@@ -45,5 +45,5 @@
 	}
 
-	// ppImageChipMosaic (config, view);
+	ppImageMosaicChip (chip, config, view);
 
 	// we perform photometry on the readouts of this chip in the output
@@ -51,13 +51,4 @@
 
 	if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) return false;
-
-	// XXX paul added these frees: make sure the same is happening in the pmFileIOChecks
-        // Now I can blow away the mosaic so I can then read more.
-        // psFree(inputChip);
-        // psFree(biasChip);
-        // psFree(darkChip);
-        // psFree(maskChip);
-        // psFree(flatChip);
-        // ppMemUsed();
     }
 
Index: /trunk/ppImage/src/ppImageMosaic.c
===================================================================
--- /trunk/ppImage/src/ppImageMosaic.c	(revision 7592)
+++ /trunk/ppImage/src/ppImageMosaic.c	(revision 7592)
@@ -0,0 +1,18 @@
+# include "ppImage.h"
+
+bool ppImageMosaicChip (pmChip *chip, pmConfig *config, const pmFPAview *view) {
+
+    bool status;
+
+    pmFPAfile *outByChip = psMetadataLookupPtr (&status, config->files, "PPIMAGE.OUTPUT.CHIP");
+    if (!status) {
+	psErrorStackPrint(stderr, "Can't find required I/O file!\n");
+	exit(EXIT_FAILURE);
+    }
+
+    pmFPAAddSourceFromView (outByChip->fpa, view, outByChip->format);
+    pmChip *outChip = pmFPAviewThisChip (view, outByChip->fpa);
+    pmChipMosaic (outChip, chip);
+
+    return true;
+}
Index: /trunk/ppImage/src/ppImageParseCamera.c
===================================================================
--- /trunk/ppImage/src/ppImageParseCamera.c	(revision 7591)
+++ /trunk/ppImage/src/ppImageParseCamera.c	(revision 7592)
@@ -22,5 +22,6 @@
 
     // the following files are output targets
-    pmFPAfileDefineOutput (config->files, config->camera, input->fpa, "PPIMAGE.OUTPUT");
+    pmFPAfileDefineOutput (config, input->fpa, "PPIMAGE.OUTPUT");
+    pmFPAfileDefineNewCamera (config, "PPIMAGE.OUTPUT.CHIP");
 
     // the following are defined from the argument list, if given, 
@@ -58,5 +59,5 @@
 	pmFPAfile *file = pmFPAfileDefineFromFPA (config, input->fpa, options->xBin1, options->yBin1, "PPIMAGE.BIN1");
 	if (options->doBin1JPG) {
-	    pmFPAfileDefineOutput (config->files, config->camera, file->fpa, "PPIMAGE.JPEG1");
+	    pmFPAfileDefineOutput (config, file->fpa, "PPIMAGE.JPEG1");
 	}
     }
@@ -64,5 +65,5 @@
 	pmFPAfile *file = pmFPAfileDefineFromFPA (config, input->fpa, options->xBin2, options->yBin2, "PPIMAGE.BIN2");
 	if (options->doBin2JPG) {
-	    pmFPAfileDefineOutput (config->files, config->camera, file->fpa, "PPIMAGE.JPEG2");
+	    pmFPAfileDefineOutput (config, file->fpa, "PPIMAGE.JPEG2");
 	}
     }
Index: /trunk/ppImage/src/ppImagePhotom.c
===================================================================
--- /trunk/ppImage/src/ppImagePhotom.c	(revision 7591)
+++ /trunk/ppImage/src/ppImagePhotom.c	(revision 7592)
@@ -29,8 +29,8 @@
 	// mode is 'REFERENCE' to prevent double frees of the fpa
 	pmFPAfile *output = psMetadataLookupPtr (&status, config->files, "PPIMAGE.OUTPUT");
-	input = pmFPAfileDefineInput (config->files, config->camera, output->fpa, "PSPHOT.INPUT");
+	input = pmFPAfileDefineInput (config, output->fpa, "PSPHOT.INPUT");
 	input->mode = PM_FPA_MODE_REFERENCE;
 
-	pmFPAfileDefineOutput (config->files, config->camera, input->fpa, "PSPHOT.OUTPUT");
+	pmFPAfileDefineOutput (config, input->fpa, "PSPHOT.OUTPUT");
 
 	// supply the output name (from cmd-line) to all output (WRITE) files
