Index: trunk/psphot/src/psphotSetThreads.c
===================================================================
--- trunk/psphot/src/psphotSetThreads.c	(revision 20411)
+++ trunk/psphot/src/psphotSetThreads.c	(revision 21166)
@@ -1,12 +1,3 @@
 # include "psphot.h"
-
-// each thread runs this function, starting a new job when it finished with an old one
-// it is called with a (void *) pointer to its own thread pointer
-bool psphotThread_psphotGuessModel(psThreadJob *job)
-{
-    psphotGuessModelForRegionArgs *args = job->args->data[0];
-    bool status = psphotGuessModelForRegion (args);
-    return status;
-}
 
 bool psphotSetThreads () {
@@ -14,6 +5,26 @@
     psThreadTask *task = NULL;
 
-    task = psThreadTaskAlloc("PSPHOT_GUESS_MODEL", 1);
-    task->function = &psphotThread_psphotGuessModel;
+    task = psThreadTaskAlloc("PSPHOT_GUESS_MODEL", 5);
+    task->function = &psphotGuessModel_Threaded;
+    psThreadTaskAdd(task);
+    psFree(task);
+
+    task = psThreadTaskAlloc("PSPHOT_MAGNITUDES", 8);
+    task->function = &psphotMagnitudes_Threaded;
+    psThreadTaskAdd(task);
+    psFree(task);
+
+    task = psThreadTaskAlloc("PSPHOT_APRESID_MAGS", 6);
+    task->function = &psphotApResidMags_Threaded;
+    psThreadTaskAdd(task);
+    psFree(task);
+
+    task = psThreadTaskAlloc("PSPHOT_SOURCE_STATS", 4);
+    task->function = &psphotSourceStats_Threaded;
+    psThreadTaskAdd(task);
+    psFree(task);
+
+    task = psThreadTaskAlloc("PSPHOT_BLEND_FIT", 9);
+    task->function = &psphotBlendFit_Threaded;
     psThreadTaskAdd(task);
     psFree(task);
