Index: /branches/eam_branch_20080719/ppMerge/src/ppMergeLoop_Threaded.c
===================================================================
--- /branches/eam_branch_20080719/ppMerge/src/ppMergeLoop_Threaded.c	(revision 18814)
+++ /branches/eam_branch_20080719/ppMerge/src/ppMergeLoop_Threaded.c	(revision 18815)
@@ -36,5 +36,4 @@
 
     // General combination parameters
-    int rows = psMetadataLookupS32(NULL, arguments, "ROWS"); // Number of rows to read per chunk
     int iter = psMetadataLookupS32(NULL, arguments, "ITER"); // Number of rejection iterations
     float rej = psMetadataLookupF32(NULL, arguments, "REJ"); // Rejection level
@@ -175,10 +174,31 @@
 		fileGroup->read = false;
 		fileGroup->busy = false;
+		fileGroup->lastScan = 0;
+		fileGroup->firstScan = 0;
 		fileGroups->data[i] = fileGroup;
             }
 
+	    // call the init functions
+	    switch (type) {
+	      case PPMERGE_TYPE_BIAS:
+	      case PPMERGE_TYPE_FLAT:
+	      case PPMERGE_TYPE_FRINGE: 
+		psAssert (fileGroups->n > 0, "no valid file groups defined");
+		ppMergeFileGroup *fileGroup = fileGroups->data[0];
+		if (!pmReadoutCombinePrepare(outRO, fileGroup->readouts, combination)) {
+		    goto ERROR;
+		}
+		break;
+
+	      default:
+		fprintf (stderr, "not yet ready");
+		goto ERROR;
+	    }
+
             // Read input data by chunks
+	    psTimerStart ("ppMergeLoop");
             for (int numChunk = 0; true; numChunk++) {
-		
+
+		bool status = false;
 		ppMergeFileGroup *fileGroup = ppMergeReadChunk (&status, fileGroups, config, numChunk);
 		if (!status) goto ERROR;
@@ -194,5 +214,5 @@
 			psArrayAdd (job->args, 1, outRO);
 			psArrayAdd (job->args, 1, fileGroup);
-			psArrayAdd (job->args, 1, psScalarAlloc(shutterRef, PS_TYPE_F32))
+			psArrayAdd (job->args, 1, psScalarAlloc(shutterRef, PS_TYPE_F32));
 			psArrayAdd (job->args, 1, shutters->data[cellNum]);
 			psArrayAdd (job->args, 1, psScalarAlloc(iter, PS_TYPE_S32));
@@ -272,10 +292,12 @@
 		}
 	    }
+            psFree(fileGroups);
 
             // Get list of cells for concepts averaging
             psList *inCells = psListAlloc(NULL); // List of cells
             for (int i = 0; i < numFiles; i++) {
-                pmReadout *readout = readouts->data[i]; // Readout of interest
-                psListAdd(inCells, PS_LIST_TAIL, readout->parent);
+		pmFPAfile *input = pmFPAfileSelectSingle(config->files, "PPMERGE.INPUT", i);
+		pmCell *inCell = pmFPAviewThisCell(view, input->fpa); // Input cell
+                psListAdd(inCells, PS_LIST_TAIL, inCell);
             }
             if (!pmConceptsAverageCells(outCell, inCells, NULL, NULL, true)) {
@@ -286,6 +308,5 @@
             }
             psFree(inCells);
-
-            psFree(fileGroups);
+	    fprintf (stdout, "done ppMergeLoop for cell : %f\n", psTimerMark ("ppMergeLoop"));
 
             // Plug supplementary images into their own FPAs
