Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 7372)
+++ /trunk/ippTools/src/dettool.c	(revision 7373)
@@ -27,8 +27,17 @@
 static bool addresidexpMode(pxConfig *config);
 static bool residexpMode(pxConfig *config);
+static bool addmasterMode(pxConfig *config);
+static bool masterMode(pxConfig *config);
 
 static detInputExpRow *rawDetrenTodetInputExpRow(rawDetrendExpRow *rawExp, psS32 det_id);
 static psArray *searchRawImfiles(pxConfig *config, psMetadata *where);
 
+# define MODECASE(caseName, func) \
+    case caseName: \
+    if (!func(config)) { \
+        goto FAIL; \
+    } \
+    break;
+
 int main(int argc, char **argv)
 {
@@ -36,84 +45,22 @@
 
     switch (config->mode) {
-        case DETTOOL_MODE_DEFINE:
-            if (!defineMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_RUNS:
-            if (!runsMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_INPUT:
-            if (!inputMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_RAW:
-            if (!rawMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_ADDPROCESSED:
-            if (!addprocMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_PROCESSED:
-            if (!procMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_ADDSTACKED:
-            if (!addstacMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_STACKED:
-            if (!stacMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_STACKEDFRAME:
-            if (!stacframeMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_ADDNORMALIZED:
-            if (!addnormalizedMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_NORMALIZED:
-            if (normalizedMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_NORMALIZEDFRAME:
-            if (normalizedframeMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_ADDRESID:
-            if (addresidMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_RESID:
-            if (residMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_ADDRESIDEXP:
-            if (addresidexpMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case DETTOOL_MODE_RESIDEXP:
-            if (residexpMode(config)) {
-                goto FAIL;
-            }
-            break;
+        MODECASE(DETTOOL_MODE_DEFINE, defineMode);
+        MODECASE(DETTOOL_MODE_RUNS, runsMode);
+        MODECASE(DETTOOL_MODE_INPUT, inputMode);
+        MODECASE(DETTOOL_MODE_RAW, rawMode);
+        MODECASE(DETTOOL_MODE_ADDPROCESSED, addprocMode);
+        MODECASE(DETTOOL_MODE_PROCESSED, procMode);
+        MODECASE(DETTOOL_MODE_ADDSTACKED, addstacMode);
+        MODECASE(DETTOOL_MODE_STACKED, stacMode);
+        MODECASE(DETTOOL_MODE_STACKEDFRAME, stacframeMode);
+        MODECASE(DETTOOL_MODE_ADDNORMALIZED, addnormalizedMode);
+        MODECASE(DETTOOL_MODE_NORMALIZED, normalizedMode);
+        MODECASE(DETTOOL_MODE_NORMALIZEDFRAME, normalizedframeMode);
+        MODECASE(DETTOOL_MODE_ADDRESID, addresidMode);
+        MODECASE(DETTOOL_MODE_RESID, residMode);
+        MODECASE(DETTOOL_MODE_ADDRESIDEXP, addresidexpMode);
+        MODECASE(DETTOOL_MODE_RESIDEXP, residexpMode);
+        MODECASE(DETTOOL_MODE_ADDMASTER, addmasterMode);
+        MODECASE(DETTOOL_MODE_MASTER, masterMode);
         default:
             psAbort(argv[0], "invalid option (this should not happen)");
@@ -1673,2 +1620,16 @@
     return true;
 }
+
+static bool addmasterMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    return true;
+}
+
+static bool masterMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    return true;
+}
Index: /trunk/ippTools/src/dettool.h
===================================================================
--- /trunk/ippTools/src/dettool.h	(revision 7372)
+++ /trunk/ippTools/src/dettool.h	(revision 7373)
@@ -21,5 +21,7 @@
     DETTOOL_MODE_RESID,
     DETTOOL_MODE_ADDRESIDEXP,
-    DETTOOL_MODE_RESIDEXP
+    DETTOOL_MODE_RESIDEXP,
+    DETTOOL_MODE_ADDMASTER,
+    DETTOOL_MODE_MASTER
 } dettoolMode;
 
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 7372)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 7373)
@@ -226,4 +226,11 @@
     psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-accept",  0,
         "search for acceptable residuals", false);
+
+    // -master
+    psMetadata *masterArgs = psMetadataAlloc();
+    psMetadataAddStr(masterArgs, PS_LIST_TAIL, "-det_id",  0,
+        "define detrend ID (required)", NULL);
+    psMetadataAddStr(masterArgs, PS_LIST_TAIL, "-iter",  0,
+        "define iteration number", NULL);
 
 #define PXTOOL_MODE(option, modeval, argset) \
@@ -263,4 +270,5 @@
     PXTOOL_MODE("-addresidexp",     DETTOOL_MODE_ADDRESIDEXP,  addresidexpArgs);
     PXTOOL_MODE("-residexp",        DETTOOL_MODE_RESIDEXP,     residexpArgs);
+    PXTOOL_MODE("-master",          DETTOOL_MODE_MASTER,       masterArgs);
 
     bool argErr = false;
@@ -276,5 +284,5 @@
         printf("\nPan-STARRS Detrend Tool\n");
         printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
-        printf(" <mode> : [-define|-raw|-addprocessed|-processed|-addstacked|-stacked|-stackedframe|-addnormalized|-normalized|-normalizedframe|-addresid|-resid|-addresidexp|-residexp]\n\n");
+        printf(" <mode> : [-define|-raw|-addprocessed|-processed|-addstacked|-stacked|-stackedframe|-addnormalized|-normalized|-normalizedframe|-addresid|-resid|-addresidexp|-residexp|-master]\n\n");
         fprintf (stdout, "-define ");
         psArgumentHelp(defineArgs);
@@ -325,4 +333,7 @@
         psArgumentHelp(residexpArgs);
         psFree(residexpArgs);
+        fprintf (stdout, "-master ");
+        psArgumentHelp(masterArgs);
+        psFree(masterArgs);
 
         exit(EXIT_FAILURE);
@@ -343,4 +354,5 @@
     psFree(addresidexpArgs);
     psFree(residexpArgs);
+    psFree(masterArgs);
 
     // setup search criterion
