Index: /branches/eam_02_branch/psModules/src/objects/pmModel.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmModel.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmModel.c	(revision 12958)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.9.6.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-23 03:26:23 $
+ *  @version $Revision: 1.9.6.4 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -135,5 +135,5 @@
                    psImage *mask,
                    pmModel *model,
-                   pmModelAddMode mode,
+                   pmModelOpMode mode,
                    bool add
                       )
@@ -275,5 +275,5 @@
                 psImage *mask,
                 pmModel *model,
-                pmModelAddMode mode)
+                pmModelOpMode mode)
 {
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
@@ -288,5 +288,5 @@
                 psImage *mask,
                 pmModel *model,
-                pmModelAddMode mode)
+                pmModelOpMode mode)
 {
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
Index: /branches/eam_02_branch/psModules/src/objects/pmModel.h
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmModel.h	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmModel.h	(revision 12958)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.6.6.3 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-04-23 03:26:23 $
+ * @version $Revision: 1.6.6.4 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-04-23 18:04:18 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -105,5 +105,5 @@
     psImage *mask,			///< The image pixel mask (valid == 0)
     pmModel *model,			///< The input pmModel
-    pmModelAddMode mode		     ///< mode to control how the model is added into the image
+    pmModelOpMode mode		     ///< mode to control how the model is added into the image
 );
 
@@ -122,5 +122,5 @@
     psImage *mask,			///< The image pixel mask (valid == 0)
     pmModel *model,			///< The input pmModel
-    pmModelAddMode mode		     ///< mode to control how the model is added into the image
+    pmModelOpMode mode		     ///< mode to control how the model is added into the image
 );
 
Index: /branches/eam_02_branch/psModules/src/objects/pmPSF.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmPSF.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmPSF.c	(revision 12958)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.19.2.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-23 03:26:23 $
+ *  @version $Revision: 1.19.2.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -437,4 +437,6 @@
         psImageKeepCircle (mask, xc, yc, radius, "OR", PM_MASK_MARK);
         pmSourcePhotometryAper (&apMag, model, image, mask);
+
+	// XXX since we re-mask on each pass, this could be dropped.
         psImageKeepCircle (mask, xc, yc, radius, "AND", PS_NOT_U8(PM_MASK_MARK));
 
Index: /branches/eam_02_branch/psModules/src/objects/pmPSFtry.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmPSFtry.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmPSFtry.c	(revision 12958)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.34.6.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.34.6.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -99,6 +99,4 @@
 {
     bool status;
-    float x;
-    float y;
     int Next = 0;
     int Npsf = 0;
@@ -120,13 +118,10 @@
             return NULL;
         }
-        x = source->peak->x;
-        y = source->peak->y;
-
-        // set temporary object mask and fit object
+
+        // set object mask to define valid pixels
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", PM_MASK_MARK);
+
         // fit model as EXT, not PSF
-
-        psImageKeepCircle (source->mask, x, y, RADIUS, "OR", PM_MASK_MARK);
         status = pmSourceFitModel (source, source->modelEXT, PM_SOURCE_FIT_EXT);
-        psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_U8(PM_MASK_MARK));
 
         // exclude the poor fits
@@ -158,11 +153,10 @@
         source->modelPSF = pmModelFromPSF (source->modelEXT, psfTry->psf);
         source->modelPSF->radiusFit = RADIUS;
-        x = source->peak->x;
-        y = source->peak->y;
-
-        // set the mask and fit the PSF model
-        psImageKeepCircle (source->mask, x, y, RADIUS, "OR", PM_MASK_MARK);
+
+        // set object mask to define valid pixels
+        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", PM_MASK_MARK);
+
+        // fit the PSF model to the source
         status = pmSourceFitModel (source, source->modelPSF, PM_SOURCE_FIT_PSF);
-        psImageKeepCircle (source->mask, x, y, RADIUS, "AND", PS_NOT_U8(PM_MASK_MARK));
 
         // skip poor fits
Index: /branches/eam_02_branch/psModules/src/objects/pmSource.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSource.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSource.c	(revision 12958)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.25.4.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-23 03:26:23 $
+ *  @version $Revision: 1.25.4.4 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -743,19 +743,4 @@
 }
 
-pmModel *pmSourceSelectModel (pmSource *source)
-{
-    switch (source->type) {
-    case PM_SOURCE_TYPE_STAR:
-        return source->modelPSF;
-
-    case PM_SOURCE_TYPE_EXTENDED:
-        return source->modelEXT;
-
-    default:
-        return NULL;
-    }
-    return NULL;
-}
-
 // construct a realization of the source model 
 bool pmSourceCacheModel (pmSource *source) {
@@ -763,12 +748,8 @@
     // select appropriate model
     pmModel *model = pmSourceGetModel (NULL, source);
-    if (model == NULL) continue;  // model must be defined
+    if (model == NULL) return false;  // model must be defined
 	
     // if we already have a cached image, re-use that memory
-    if (source->modelFlux) { 
-	psImageRecycle (source->modelFlux);
-    } else {
-	source->modelFlux = psImageCopy (source->pixels);
-    }
+    source->modelFlux = psImageCopy (source->modelFlux, source->pixels, PS_TYPE_F32);
     psImageInit (source->modelFlux, 0.0);
 
@@ -782,6 +763,14 @@
 bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add) {
 
+    bool status;
+
+    if (add) {
+	psTrace ("psphot", 3, "replacing object at %f,%f\n", source->peak->xf, source->peak->yf);
+    } else {
+	psTrace ("psphot", 3, "removing object at %f,%f\n", source->peak->xf, source->peak->yf);
+    }
+
     pmModel *model = pmSourceGetModel (NULL, source);
-    if (model == NULL) continue;  // model must be defined
+    if (model == NULL) return false;  // model must be defined
 
     if (source->modelFlux) {
@@ -801,7 +790,7 @@
 	// XXX need to respect the source and model masks?
 	for (int iy = 0; iy < source->modelFlux->numRows; iy++) {
-	    oy = iy + dY;
+	    int oy = iy + dY;
 	    for (int ix = 0; ix < source->modelFlux->numCols; ix++) {
-		ox = ix + dX;
+		int ox = ix + dX;
 		float value = Io*source->modelFlux->data.F32[iy][ix];
 		if (add) {
@@ -812,25 +801,62 @@
 	    }
 	}
+	return true;
+    } 
+
+    if (add) {
+	status = pmModelAdd (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
     } else {
-	if (add) {
-	    pmModelAdd (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
-	} else {
-	    pmModelSub (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
+	status = pmModelSub (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
+    }
+
+    return true;
+}
+
+bool pmSourceAdd (pmSource *source, pmModelOpMode mode) {
+    bool status = pmSourceOp (source, mode, true);
+    return status;
+}
+
+bool pmSourceSub (pmSource *source, pmModelOpMode mode) {
+    bool status = pmSourceOp (source, mode, false);
+    return status;
+}
+
+// given a source, which model is currently appropriate?
+// choose PSF or EXT based on source->type, but fall back on PSF
+// if the EXT model is NULL
+pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source)
+{
+
+    pmModel *model;
+
+    if (isPSF) {
+      *isPSF = false;
+    }
+
+    switch (source->type) {
+    case PM_SOURCE_TYPE_STAR:
+        model = source->modelPSF;
+        if (model == NULL)
+            return NULL;
+        if (isPSF) {
+            *isPSF = true;
 	}
-    }	
-
-    if (add) {
-	psTrace ("psphot", 3, "replacing object at %f,%f\n", source->peak->xf, source->peak->yf);
-    } else {
-	psTrace ("psphot", 3, "removing object at %f,%f\n", source->peak->xf, source->peak->yf);
-    }
-    return true;
-}
-
-bool pmSourceAdd (pmSource *source, pmSourceOpMode mode) {
-    pmSourceOp (source, mode, true);
-}
-
-bool pmSourceSub (pmSource *source, pmSourceOpMode mode) {
-    pmSourceOp (source, mode, false);
-}
+        return model;
+
+    case PM_SOURCE_TYPE_EXTENDED:
+        model = source->modelEXT;
+        if (!model && source->modelPSF) {
+            if (isPSF) {
+                *isPSF = true;
+	    }
+	    return source->modelPSF;
+        }
+        return (model);
+        break;
+
+    default:
+        return NULL;
+    }
+    return NULL;
+}
Index: /branches/eam_02_branch/psModules/src/objects/pmSource.h
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSource.h	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSource.h	(revision 12958)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.10.6.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-04-23 03:26:23 $
+ * @version $Revision: 1.10.6.3 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-04-23 18:04:18 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -210,7 +210,11 @@
 );
 
-
-// select the model used for this source
-pmModel *pmSourceSelectModel (pmSource *source);
+pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source);
+
+bool pmSourceAdd (pmSource *source, pmModelOpMode mode);
+bool pmSourceSub (pmSource *source, pmModelOpMode mode);
+
+bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add);
+bool pmSourceCacheModel (pmSource *source);
 
 /// @}
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceFitModel.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceFitModel.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceFitModel.c	(revision 12958)
@@ -6,6 +6,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.19.4.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.19.4.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,5 +57,5 @@
     PS_ASSERT_PTR_NON_NULL(source, false);
     PS_ASSERT_PTR_NON_NULL(source->pixels, false);
-    PS_ASSERT_PTR_NON_NULL(source->mask, false);
+    PS_ASSERT_PTR_NON_NULL(source->maskObj, false);
     PS_ASSERT_PTR_NON_NULL(source->weight, false);
 
@@ -77,5 +77,5 @@
         for (psS32 j = 0; j < source->pixels->numCols; j++) {
             // skip masked points
-            if (source->mask->data.U8[i][j]) {
+            if (source->maskObj->data.U8[i][j]) {
                 continue;
             }
@@ -334,5 +334,5 @@
     PS_ASSERT_PTR_NON_NULL(source, false);
     PS_ASSERT_PTR_NON_NULL(source->pixels, false);
-    PS_ASSERT_PTR_NON_NULL(source->mask, false);
+    PS_ASSERT_PTR_NON_NULL(source->maskObj, false);
     PS_ASSERT_PTR_NON_NULL(source->weight, false);
 
@@ -354,5 +354,5 @@
         for (psS32 j = 0; j < source->pixels->numCols; j++) {
             // skip masked points
-            if (source->mask->data.U8[i][j]) {
+            if (source->maskObj->data.U8[i][j]) {
                 continue;
             }
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMF.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMF.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMF.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.18.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.18.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -56,5 +56,7 @@
     for (i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
         if (model == NULL)
             continue;
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMP.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMP.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_CMP.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.25.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.25.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -107,5 +107,7 @@
     for (i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
         if (model == NULL)
             continue;
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_OBJ.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_OBJ.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_OBJ.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.9.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.9.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -61,5 +61,7 @@
     for (int i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
         if (model == NULL)
             continue;
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.6.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.6.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -63,5 +63,7 @@
     for (i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
 
         if (model != NULL) {
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SMPDATA.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.5.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.5.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -62,5 +62,7 @@
     for (i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
         if (model != NULL) {
 	    PAR = model->params->data.F32;
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SX.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SX.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceIO_SX.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.8.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.8.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,5 +57,7 @@
     for (int i = 0; i < sources->n; i++) {
         pmSource *source = (pmSource *) sources->data[i];
-        pmModel *model = pmSourceSelectModel (source);
+
+	// no difference between PSF and non-PSF model
+        pmModel *model = pmSourceGetModel (NULL, source);
         if (model == NULL)
             continue;
Index: /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.c	(revision 12958)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA; GLG, MHPCC
  *
- *  @version $Revision: 1.22.4.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-23 03:26:23 $
+ *  @version $Revision: 1.22.4.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -109,5 +109,5 @@
     // XXX use pmSourceAdd instead?
     if (source->mode & PM_SOURCE_MODE_SUBTRACTED) {
-        pmModelAdd (source->pixels, source->mask, model, PM_MODEL_OP_FULL);
+        pmModelAdd (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
     }
 
@@ -182,14 +182,16 @@
     // set aperture mask circle to model radius
     // XXX use a different radius for apertures and fits...
-    psImageKeepCircle (source->mask, x, y, model->radiusFit, "OR", PM_MASK_MARK);
+    // XXX can I remove this?  the source should have the mask defined when it is constructed or
+    // when the fit / aperture radius is changed...
+    psImageKeepCircle (source->maskObj, x, y, model->radiusFit, "OR", PM_MASK_MARK);
 
     // measure the weight of included pixels
     // XXX is this supposed to use the weight or the flux?
     if (mode & PM_SOURCE_PHOT_WEIGHT) {
-        pmSourcePixelWeight (&source->pixWeight, model, source->pixels, source->mask);
+        pmSourcePixelWeight (&source->pixWeight, model, source->pixels, source->maskObj);
     }
 
     // measure object aperture photometry
-    status = pmSourcePhotometryAper  (&source->apMag, model, flux, source->mask);
+    status = pmSourcePhotometryAper  (&source->apMag, model, flux, source->maskObj);
 
     // for PSFs, correct both apMag and psfMag to same system, consistent with infinite flux star in aperture RADIUS
@@ -208,9 +210,11 @@
 
     // unmask aperture
-    psImageKeepCircle (source->mask, x, y, model->radiusFit, "AND", PS_NOT_U8(PM_MASK_MARK));
+    // XXX can I remove this?  this will probably break things downstream...
+    psImageKeepCircle (source->maskObj, x, y, model->radiusFit, "AND", PS_NOT_U8(PM_MASK_MARK));
 
     // if source was originally subtracted, re-subtract object, leave local sky
+    // XXX replace with pmSourceSub...
     if (source->mode & PM_SOURCE_MODE_SUBTRACTED) {
-        pmModelSub (source->pixels, source->mask, model, PM_MODEL_OP_FULL);
+        pmModelSub (source->pixels, source->maskObj, model, PM_MODEL_OP_FULL);
     }
 
@@ -381,6 +385,6 @@
     const psImage *Wi = Mi->weight;
 
-    const psImage *Ti = Mi->mask;
-    const psImage *Tj = Mj->mask;
+    const psImage *Ti = Mi->maskObj;
+    const psImage *Tj = Mj->maskObj;
 
     Xs = PS_MAX (Pi->col0, Pj->col0);
@@ -437,6 +441,6 @@
     const psImage *Wi = Mi->weight;
 
-    const psImage *Ti = Mi->mask;
-    const psImage *Tj = Mj->mask;
+    const psImage *Ti = Mi->maskObj;
+    const psImage *Tj = Mj->maskObj;
 
     Xs = PS_MAX (Pi->col0, Pj->col0);
@@ -485,5 +489,5 @@
     const psImage *Pi = Mi->pixels;
     const psImage *Wi = Mi->weight;
-    const psImage *Ti = Mi->mask;
+    const psImage *Ti = Mi->maskObj;
 
     // note that this is addressing the same image pixels,
@@ -545,43 +549,2 @@
 }
 
-// given a source, which model is currently appropriate?
-// choose PSF or EXT based on source->type, but fall back on PSF
-// if the EXT model is NULL
-pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source)
-{
-
-    pmModel *model;
-
-    switch (source->type) {
-    case PM_SOURCE_TYPE_STAR:
-        model = source->modelPSF;
-        if (model == NULL)
-            return NULL;
-        if (isPSF)
-            *isPSF = true;
-        return model;
-
-    case PM_SOURCE_TYPE_EXTENDED:
-        model = source->modelEXT;
-        if (isPSF)
-            *isPSF = false;
-        if (model == NULL) {
-            model = source->modelPSF;
-            if (isPSF)
-                *isPSF = true;
-        }
-        if (model == NULL) {
-            if (isPSF)
-                *isPSF = FALSE;
-            return NULL;
-        }
-        return (model);
-        break;
-
-    default:
-        if (isPSF)
-            *isPSF = false;
-        return NULL;
-    }
-    return NULL;
-}
Index: /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.h
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.h	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourcePhotometry.h	(revision 12958)
@@ -4,6 +4,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-01-24 02:54:15 $
+ * @version $Revision: 1.8.6.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-04-23 18:04:18 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -54,5 +54,4 @@
 bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask);
 bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight);
-pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source);
 
 double pmSourceWeight(const pmSource *Mi, int term, const bool unweighted_sum);
Index: /branches/eam_02_branch/psModules/src/objects/pmSourceSky.c
===================================================================
--- /branches/eam_02_branch/psModules/src/objects/pmSourceSky.c	(revision 12957)
+++ /branches/eam_02_branch/psModules/src/objects/pmSourceSky.c	(revision 12958)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.10.4.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-21 00:03:31 $
+ *  @version $Revision: 1.10.4.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-04-23 18:04:18 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -49,5 +49,5 @@
     PS_ASSERT_PTR_NON_NULL(source, false);
     PS_ASSERT_IMAGE_NON_NULL(source->pixels, false);
-    PS_ASSERT_IMAGE_NON_NULL(source->mask, false);
+    PS_ASSERT_IMAGE_NON_NULL(source->maskObj, false);
     PS_ASSERT_PTR_NON_NULL(source->peak, false);
     PS_ASSERT_INT_POSITIVE(Radius, false);
@@ -61,5 +61,5 @@
 
     psImage *image = source->pixels;
-    psImage *mask  = source->mask;
+    psImage *mask  = source->maskObj;
     pmPeak *peak  = source->peak;
     psRegion srcRegion;
@@ -100,5 +100,5 @@
     PS_ASSERT_PTR_NON_NULL(source, false);
     PS_ASSERT_IMAGE_NON_NULL(source->weight, false);
-    PS_ASSERT_IMAGE_NON_NULL(source->mask, false);
+    PS_ASSERT_IMAGE_NON_NULL(source->maskObj, false);
     PS_ASSERT_PTR_NON_NULL(source->peak, false);
     PS_ASSERT_INT_POSITIVE(Radius, false);
@@ -112,5 +112,5 @@
 
     psImage *image = source->weight;
-    psImage *mask  = source->mask;
+    psImage *mask  = source->maskObj;
     pmPeak *peak  = source->peak;
     psRegion srcRegion;
