Index: branches/pap/ppMerge/src/ppMergeArguments.c
===================================================================
--- branches/pap/ppMerge/src/ppMergeArguments.c	(revision 23948)
+++ branches/pap/ppMerge/src/ppMergeArguments.c	(revision 25027)
@@ -156,4 +156,5 @@
     psMetadataAddS32(arguments, PS_LIST_TAIL, "-nkeep",    0, "Minimum number of pixels in stack to keep", 0);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-variances", 0, "Use image variances in combination?", false);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-use-masks", 0, "Use image masks in combination?", false);
 
     // XXX EAM : not clear this should be allowed on the command line.
@@ -169,4 +170,6 @@
     psMetadataAddS32(arguments, PS_LIST_TAIL, "-fringe-xsmooth", 0, "Number of smoothing regions in x", 0);
     psMetadataAddS32(arguments, PS_LIST_TAIL, "-fringe-ysmooth", 0, "Number of smoothing regions in y", 0);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-fringe-smooth", 0, "Smooth output image", false);
+    psMetadataAddF32(arguments, PS_LIST_TAIL, "-fringe-smooth-sigma", 0, "Size of smoothing Gaussian", NAN);
 
     /** CTEMASK construction parameters */
@@ -179,5 +182,5 @@
 
     /** Mask construction parameters */
-    psMetadataAddF32(arguments, PS_LIST_TAIL, "-mask-suspect",  0, "Threshold for suspect pixels (sigma)", NAN);
+    psMetadataAddF32(arguments, PS_LIST_TAIL, "-mask-suspect-sigma",  0, "Threshold for suspect pixels (sigma)", NAN);
     psMetadataAddF32(arguments, PS_LIST_TAIL, "-mask-bad",      0, "Threshold for bad pixels (sigma)", NAN);
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-mask-mode",     0, "Mode to identify bad pixels", NULL);
@@ -202,4 +205,9 @@
     }
 
+    if ((argnum = psArgumentGet (argc, argv, "-visual"))) {
+        psArgumentRemove (argnum, &argc, argv);
+	pmVisualSetVisual(true);
+    }
+
     // Number of threads
     if ((argnum = psArgumentGet(argc, argv, "-threads"))) {
@@ -247,4 +255,5 @@
     }
     if (strcasecmp(typeStr, "DARK") == 0 ||
+        strcasecmp(typeStr, "DARKTEST") == 0 ||
         strcasecmp(typeStr, "DARK_PREMASK") == 0) {
       type = PPMERGE_TYPE_DARK;
@@ -308,4 +317,5 @@
     VALUE_ARG_RECIPE_INT("-nkeep",      "NKEEP",    S32, 0);
     VALUE_ARG_RECIPE_BOOL("-variances", "VARIANCES");
+    VALUE_ARG_RECIPE_BOOL("-use-masks", "INPUTS.MASKS.USE");
 
     // XXX we do not supply this on the command line
@@ -321,4 +331,6 @@
     VALUE_ARG_RECIPE_INT("-fringe-xsmooth", "FRINGE.XSMOOTH", S32, 0);
     VALUE_ARG_RECIPE_INT("-fringe-ysmooth", "FRINGE.YSMOOTH", S32, 0);
+    VALUE_ARG_RECIPE_BOOL("-fringe-smooth", "FRINGE.SMOOTH");
+    VALUE_ARG_RECIPE_FLOAT("-fringe-smooth-sigma", "FRINGE.SMOOTH.SIGMA", F32);
 
     /** CTEMASK construction parameters */
@@ -329,5 +341,8 @@
 
     /** Mask construction parameters */
-    VALUE_ARG_RECIPE_FLOAT("-mask-suspect", "MASK.SUSPECT", F32);
+    VALUE_ARG_RECIPE_FLOAT("-mask-suspect-sigma", "MASK.SUSPECT.SIGMA", F32);
+    VALUE_ARG_RECIPE_FLOAT("-mask-suspect-min",   "MASK.SUSPECT.MIN", F32);
+    VALUE_ARG_RECIPE_FLOAT("-mask-suspect-max",   "MASK.SUSPECT.MAX", F32);
+    VALUE_ARG_RECIPE_STR("-mask-mode", "MASK.SUSPECT.MODE");
     VALUE_ARG_RECIPE_FLOAT("-mask-bad",     "MASK.BAD",     F32);
     VALUE_ARG_RECIPE_INT("-mask-grow",      "MASK.GROW",    S32, 0);
@@ -365,4 +380,5 @@
             bool scale = false;         ///< Scale values?
             float min = NAN, max = NAN; ///< Minimum and maximum values for scaling
+	    char *rule = NULL;
             switch (item->type) {
               case PS_TYPE_S32:
@@ -375,4 +391,5 @@
                 min = psMetadataLookupF32(&mdok, item->data.md, "MIN");
                 max = psMetadataLookupF32(&mdok, item->data.md, "MAX");
+                rule = psMetadataLookupStr(&mdok, item->data.md, "RULE");
                 break;
               default:
@@ -392,4 +409,5 @@
             ord->min = min;
             ord->max = max;
+	    ord->rule = psStringCopy(rule);
             psArrayAdd(translated, translated->n, ord);
             psFree(ord);
