Index: trunk/psphot/src/psphot.h
===================================================================
--- trunk/psphot/src/psphot.h	(revision 5986)
+++ trunk/psphot/src/psphot.h	(revision 5993)
@@ -24,29 +24,41 @@
 psMetadata     *psphotArguments (int *argc, char **argv);
 eamReadout     *psphotSetup (psMetadata *config);
+bool            psphotModelTest (eamReadout *imdata, psMetadata *config);
 psStats        *psphotImageStats (eamReadout *imdata, psMetadata *config);
+psPolynomial2D *psphotImageBackground (eamReadout *imdata, psMetadata *config, psStats *sky);
 psArray        *psphotFindPeaks (eamReadout *imdata, psMetadata *config, psStats *sky);
 psArray        *psphotSourceStats (eamReadout *imdata, psMetadata *config, psArray *allpeaks);
 bool            psphotRoughClass (psArray *sources, psMetadata *config);
+bool            psphotBasicDeblend (psArray *sources, psMetadata *config, psStats *sky);
 pmPSF          *psphotChoosePSF (psMetadata *config, psArray *sources, psStats *sky);
-bool            psphotApplyPSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-bool            psphotFixedPSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-bool            psphotFitGalaxies (eamReadout *imdata, psMetadata *config, psArray *sources, psStats *skyStats);
 void            psphotOutput (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
 
-bool            psphotMarkPSF (pmSource *source, float shapeNsigma, float minSN, float maxChi, float SATURATE);
-bool            psphotSubtractPSF (pmSource *source);
+// optional object analysis steps
+bool 	        psphotEnsemblePSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+bool            psphotFullFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+bool            psphotBlendFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+bool            psphotReplaceUnfit (psArray *sources);
+bool            psphotApplyPSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+bool            psphotFitExtended (eamReadout *imdata, psMetadata *config, psArray *sources, psStats *skyStats);
+bool            psphotApResid (eamReadout *imdata, psArray *sources, psMetadata *config, pmPSF *psf);
+
+// basic support functions
+pmModel        *pmModelCopy (pmModel *model);
+pmModel        *pmSourceMagnitudes (pmSource *source, pmPSF *psf, float apRadius);
+float           pmSourceCrossProduct (pmSource *Mi, pmSource *Mj);
+psArray        *pmSourceContour_EAM (psImage *image, int x, int y, float threshold);
+void            psphotModelGroupInit (void);
 int 	        psphotSortBySN (const void **a, const void **b);
 int 	        psphotSortByY (const void **a, const void **b);
-int             psphotSaveImage (psMetadata *header, psImage *image, char *filename);
+bool            psphotGrowthCurve (eamReadout *imdata, pmPSF *psf);
+void            psphotTestArguments (int *argc, char **argv);
+
+// functions to set the correct source pixels
+bool 		psphotInitRadiusPSF (psMetadata *config, psStats *sky, pmModelType type);
+bool 		psphotCheckRadiusPSF (eamReadout *imdata, pmSource *source, pmModel *model);
+bool 		psphotInitRadiusEXT (psMetadata *config, psStats *sky, pmModelType type);
+bool 		psphotCheckRadiusEXT (eamReadout *imdata, pmSource *source, pmModel *model);
 bool 	        psphotDefinePixels (pmSource *mySource, const eamReadout *imdata, psF32 x, psF32 y, psF32 Radius);
 bool 	        psphotRedefinePixels (pmSource *mySource, const eamReadout *imdata, psF32 x, psF32 y, psF32 Radius);
-void            psphotModelGroupInit (void);
-
-bool            pmSourceFitFixed (pmSource *source, pmModel *model);
-pmModel        *pmSourceMagnitudes (pmSource *source, pmPSF *psf, float apRadius);
-pmModel        *pmSourceSelectModel (pmSource *source);
-
-// eamReadout functions
-eamReadout     *eamReadoutAlloc (psImage *image, psImage *noise, psImage *mask, psMetadata *header);
 
 // output functions
@@ -57,70 +69,45 @@
 bool 	     	pmSourcesWriteSX   (eamReadout *imdata, psMetadata *config, char *filename, psArray *sources, pmPSF *psf, psStats *sky);
 
+bool 	     	pmModelWritePSFs (psArray *sources, psMetadata *config, char *filename, pmPSF *psf);
+bool 	     	pmModelWriteEXTs (psArray *sources, char *filename);
+bool 	     	pmModelWriteNULLs (psArray *sources, char *filename);
 bool 	     	pmPeaksWriteText (psArray *sources, char *filename);
 bool 	     	pmMomentsWriteText (psArray *sources, char *filename);
-bool 	     	pmModelWritePSFs (psArray *sources, psMetadata *config, char *filename, pmPSF *psf);
-bool 	     	pmModelWriteFLTs (psArray *sources, char *filename);
-bool 	     	pmModelWriteNULLs (psArray *sources, char *filename);
 
+bool 		psphotSamplePSFs (psMetadata *config, pmPSF *psf, psImage *image);
+bool 		psphotDumpMoments (psMetadata *config, psArray *sources);
+int             psphotSaveImage (psMetadata *header, psImage *image, char *filename);
+bool            psphotUpdateHeader (psMetadata *header, psMetadata *config);
 int  	     	pmSourcesDophotType (pmSource *source);
+bool            psMetadataItemTransfer (psMetadata *out, psMetadata *in, char *key);
 
-// psphotModelTest functions
-bool 	        psphotEnsemblePSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-float           psphotCrossProduct (pmSource *Mi, pmSource *Mj);
-psPolynomial2D *psphotImageBackground (eamReadout *imdata, psMetadata *config, psStats *sky);
-bool            psphotReapplyPSF (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+// PSF / DBL / EXT evaluation functions
+bool 		psphotEvalPSF (pmSource *source, pmModel *model);
+bool 		psphotEvalDBL (pmSource *source, pmModel *model);
+bool 		psphotEvalEXT (pmSource *source, pmModel *model);
 
-pmModel        *pmModelCopy (pmModel *model);
-psArray        *pmSourceContour_EAM (psImage *image, int x, int y, float threshold);
-bool            psphotBasicDeblend (psArray *sources, psMetadata *config, psStats *sky);
+// functions to support simultaneous multi-source fitting
+bool 		psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, bool PSF);
+bool 		pmSourceFitSet (pmSource *source, psArray *modelSet, const bool PSF);
+psF32           pmModelFitSet (psVector *deriv, const psVector *params, const psVector *x);
+bool            pmModelFitSetInit (pmModelType type);
 
-bool psphotFullFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-bool psphotInitLimitsPSF (psMetadata *config);
-bool psphotEvalPSF (pmSource *source, pmModel *model);
-bool psphotEvalDBL (pmSource *source, pmModel *model);
-bool psphotEvalFLT (pmSource *source, pmModel *model);
-bool psphotInitRadiusPSF (psMetadata *config, psStats *sky, pmModelType type);
-bool psphotCheckRadiusPSF (eamReadout *imdata, pmSource *source, pmModel *model);
-bool psphotInitRadiusFLT (psMetadata *config, psStats *sky, pmModelType type);
-bool psphotCheckRadiusFLT (eamReadout *imdata, pmSource *source, pmModel *model);
-bool psphotSamplePSFs (psMetadata *config, pmPSF *psf, psImage *image);
-bool psphotReplaceUnfit (psArray *sources);
-bool psphotDumpMoments (psMetadata *config, psArray *sources);
-bool psphotApResid (eamReadout *imdata, psArray *sources, psMetadata *config, pmPSF *psf);
-bool psphotAssessPSF (eamReadout *imdata, psMetadata *config, pmPSF *psf);
+//  functions to support the source fitting process
+bool 		psphotInitLimitsPSF (psMetadata *config);
+bool		psphotInitLimitsEXT (psMetadata *config, psStats *sky);
+bool		psphotFitBlend (eamReadout *imdata, pmSource *source);
+bool		psphotFitBlob (eamReadout *imdata, pmSource *source, psArray *sources);
+bool		psphotFitPSF (eamReadout *imdata, pmSource *source);
+pmModel	       *psphotFitEXT (eamReadout *imdata, pmSource *source);
+psArray	       *psphotFitDBL (eamReadout *imdata, pmSource *source);
 
-bool psphotWritePSF (pmPSF *psf, char *filename);
-pmPSF *psphotReadPSF (char *filename);
+// eamReadout functions
+eamReadout     *eamReadoutAlloc (psImage *image, psImage *noise, psImage *mask, psMetadata *header);
 
-bool psPolynomial2DtoMD (psMetadata *md, psPolynomial2D *poly, char *format, ...);
-bool psPolynomial3DtoMD (psMetadata *md, psPolynomial3D *poly, char *format, ...);
-bool psPolynomial4DtoMD (psMetadata *md, psPolynomial4D *poly, char *format, ...);
-psPolynomial2D *psPolynomial2DfromMD (psMetadata *folder);
-psPolynomial3D *psPolynomial3DfromMD (psMetadata *folder);
-psPolynomial4D *psPolynomial4DfromMD (psMetadata *folder);
-bool psphotModelTest (eamReadout *imdata, psMetadata *config);
+// bicubic interpolation
+psPolynomial2D *psImageBicubeFit (psImage *image, int x, int y);
+psPlane         psImageBicubeMin (psPolynomial2D *poly);
 
-bool psphotFitSet (pmSource *oneSrc, pmModel *oneModel, char *fitset, bool PSF);
-bool pmSourceFitSet (pmSource *source, psArray *modelSet, const bool PSF);
-psF32 pmModelFitSet (psVector *deriv, const psVector *params, const psVector *x);
-bool pmModelFitSetInit (pmModelType type);
-
-bool psphotBlendFit (eamReadout *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-
-bool psphotInitLimitsFLT (psMetadata *config, psStats *sky);
-
-bool psphotFitPSF (eamReadout *imdata, pmSource *source);
-bool psphotFitBlend (eamReadout *imdata, pmSource *source);
-bool psphotFitBlob (eamReadout *imdata, pmSource *source, psArray *sources);
-
-pmModel *psphotFitFLT (eamReadout *imdata, pmSource *source);
-psArray *psphotFitDBL (eamReadout *imdata, pmSource *source);
-
-psPolynomial2D *psImageBicubeFit (psImage *image, int x, int y);
-psPlane psImageBicubeMin (psPolynomial2D *poly);
-void psphotTestArguments (int *argc, char **argv);
-
-bool psphotGrowthCurve (eamReadout *imdata, pmPSF *psf);
-
+// optional mode for clip fit?
 psPolynomial4D *psVectorChiClipFitPolynomial4D(
     psPolynomial4D *poly,
@@ -134,6 +121,2 @@
     const psVector *z,
     const psVector *t);
-
-// XXX deprecated
-// bool psphotApResidFullFit (psVector *x, psVector *y, psVector *radius, psVector *rflux, psVector *apresid, psVector *dmag);
-// bool psphotApResidPolyFit (psVector *x, psVector *y, psVector *radius, psVector *rflux, psVector *apresid, psVector *dmag);
