Index: trunk/ppStack/src/ppStackReadout.c
===================================================================
--- trunk/ppStack/src/ppStackReadout.c	(revision 19267)
+++ trunk/ppStack/src/ppStackReadout.c	(revision 19337)
@@ -12,7 +12,43 @@
 //#define TESTING                  // Write debugging output?
 
-
-bool ppStackReadoutInitial(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
-                           const psArray *regions, const psArray *kernels)
+bool ppStackReadoutInitialThread(psThreadJob *job)
+{
+    PS_ASSERT_THREAD_JOB_NON_NULL(job, false);
+
+    psArray *args = job->args;          // Arguments
+    ppStackThread *thread = args->data[0]; // Thread
+    pmConfig *config = args->data[1];   // Configuration
+    pmReadout *outRO = args->data[2];   // Output readout
+    psArray *subRegions = args->data[3]; // Regions for PSF-matching
+    psArray *subKernels = args->data[4]; // Kernels for PSF-matching
+
+    psArray *inspect = ppStackReadoutInitial(config, outRO, thread->readouts, subRegions, subKernels);
+
+    job->results = inspect;
+    thread->busy = false;
+
+    return inspect ? true : false;
+}
+
+bool ppStackReadoutFinalThread(psThreadJob *job)
+{
+    PS_ASSERT_THREAD_JOB_NON_NULL(job, false);
+
+    psArray *args = job->args;          // Arguments
+    ppStackThread *thread = args->data[0]; // Thread
+    pmConfig *config = args->data[1];   // Configuration
+    pmReadout *outRO = args->data[2];   // Output readout
+    psArray *rejected = args->data[3];  // Rejected pixels
+
+    bool status = ppStackReadoutFinal(config, outRO, thread->readouts, rejected); // Status of operation
+
+    thread->busy = false;
+
+    return status;
+}
+
+
+psArray *ppStackReadoutInitial(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
+                               const psArray *regions, const psArray *kernels)
 {
     assert(config);
@@ -88,4 +124,5 @@
 
     // Save list of pixels to inspect
+    psArray *inspect = psArrayAlloc(num); // List of pixels to inspect
     for (int i = 0; i < num; i++) {
         pmStackData *data = stack->data[i]; // Data for this image
@@ -97,7 +134,5 @@
             continue;
         }
-        psMetadataAddPtr(readout->analysis, PS_LIST_TAIL, PPSTACK_INSPECT_PIXELS,
-                         PS_DATA_PIXELS | PS_META_DUPLICATE_OK, "Pixels to inspect from initial combination",
-                         data->inspect);
+        inspect->data[i] = psMemIncrRefCounter(data->inspect);
     }
     psFree(stack);
@@ -105,5 +140,5 @@
     sectionNum++;
 
-    return true;
+    return inspect;
 }
 
