Index: /trunk/psphot/src/pmSourceFitSet.c
===================================================================
--- /trunk/psphot/src/pmSourceFitSet.c	(revision 6440)
+++ /trunk/psphot/src/pmSourceFitSet.c	(revision 6441)
@@ -143,28 +143,15 @@
     psMinimization *myMin = psMinimizationAlloc(PM_SOURCE_FIT_MODEL_NUM_ITERATIONS,
                             PM_SOURCE_FIT_MODEL_TOLERANCE);
+    psMinConstrain *constrain = psMinConstrainAlloc();
+    constrain->paramMask = paramMask;
 
     // Set the parameter range checks
     pmModelLimits modelLimits = pmModelLimits_GetFunction (model->type);
-    psVector *beta_lim = NULL;
-    psVector *params_min = NULL;
-    psVector *params_max = NULL;
-
-    // XXX EAM : in this implementation, I pass in the limits with the covar matrix.
-    //           in the SDRS, I define a new psMinimization which will take these in
-    psImage *covar = psImageAlloc (params->n, 3, PS_TYPE_F64);
-    modelLimits (&beta_lim, &params_min, &params_max);
-    for (int i = 0; i < nSrc; i++) {
-	for (int n = 1; n < nPar; n++) {
-	    covar->data.F64[0][i*nPar + n] = beta_lim->data.F32[n];
-	    covar->data.F64[1][i*nPar + n] = params_min->data.F32[n];
-	    covar->data.F64[2][i*nPar + n] = params_max->data.F32[n];
-	}
-    }
-    covar->data.F64[0][0] = beta_lim->data.F32[0];
-    covar->data.F64[1][0] = params_min->data.F32[0];
-    covar->data.F64[2][0] = params_max->data.F32[0];
+    modelLimits (&constrain->paramDelta, &constrain->paramMin, &constrain->paramMax);
+
+    psImage *covar = psImageAlloc (params->n, params->n, PS_TYPE_F64);
 
     psTrace (".pmObjects.pmSourceFitSet", 5, "fitting function\n");
-    fitStatus = psMinimizeLMChi2(myMin, covar, params, paramMask, x, y, yErr, pmModelFitSet);
+    fitStatus = psMinimizeLMChi2(myMin, covar, params, constrain, x, y, yErr, pmModelFitSet);
 
     // parameter errors from the covariance matrix
@@ -221,10 +208,11 @@
     psFree(myMin);
     psFree(covar);
-    psFree(paramMask);
+    psFree(constrain->paramMask);
+    psFree(constrain->paramMin);
+    psFree(constrain->paramMax);
+    psFree(constrain->paramDelta);
+    psFree(constrain);
     psFree(params);
     psFree(dparams);
-    psFree(params_min);
-    psFree(params_max);
-    psFree(beta_lim);
 
     // free static memory used by pmModelFitSet
Index: /trunk/psphot/src/psPolynomialUtils.c
===================================================================
--- /trunk/psphot/src/psPolynomialUtils.c	(revision 6440)
+++ /trunk/psphot/src/psPolynomialUtils.c	(revision 6441)
@@ -127,5 +127,5 @@
     double Foo = Fym + Fyp + Fo[-1] + Fo[+0] + Fo[+1];
 
-    psPolynomial2D *poly = psPolynomial2DAlloc (2, 2, PS_POLYNOMIAL_ORD);
+    psPolynomial2D *poly = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, 2, 2);
     poly->mask[2][2] = 1;
     poly->mask[1][2] = 1;
Index: /trunk/psphot/src/psphotImageBackground.c
===================================================================
--- /trunk/psphot/src/psphotImageBackground.c	(revision 6440)
+++ /trunk/psphot/src/psphotImageBackground.c	(revision 6441)
@@ -40,5 +40,5 @@
     x->n = y->n = z->n = Nout;
 
-    psPolynomial2D *skyModel = psPolynomial2DAlloc(1, 1, PS_POLYNOMIAL_ORD);
+    psPolynomial2D *skyModel = psPolynomial2DAlloc(PS_POLYNOMIAL_ORD, 1, 1);
     skyModel->mask[1][1] = 1;
 
Index: /trunk/psphot/src/psphotImageMedian.c
===================================================================
--- /trunk/psphot/src/psphotImageMedian.c	(revision 6440)
+++ /trunk/psphot/src/psphotImageMedian.c	(revision 6441)
@@ -213,4 +213,5 @@
     psLogMsg ("psphot", 3, "subtracted background model: %f sec\n", psTimerMark ("psphot"));
     psFree (rnd);
+    psFree (model);
     return (background);
 }
Index: /trunk/psphot/src/psphotReadout.c
===================================================================
--- /trunk/psphot/src/psphotReadout.c	(revision 6440)
+++ /trunk/psphot/src/psphotReadout.c	(revision 6441)
@@ -56,8 +56,7 @@
     // free up the local copies of the data
     psFree (psf);
+    psFree (sources);
     psFree (peaks);
-    psFree (sources);
     psFree (skymodel);
-
     return true;
 }
