Index: trunk/ippTools/src/pztoolConfig.c
===================================================================
--- trunk/ippTools/src/pztoolConfig.c	(revision 14023)
+++ trunk/ippTools/src/pztoolConfig.c	(revision 14600)
@@ -45,5 +45,5 @@
     // -seen
     psMetadata *seenArgs = psMetadataAlloc();
-    psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_id", 0,
+    psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_name", 0,
             "define exposure ID", NULL); 
     psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-inst", 0,
@@ -58,5 +58,5 @@
     // -pendingexp
     psMetadata *pendingexpArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_id", 0,
+    psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_name", 0,
             "define exposure ID", NULL); 
     psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-inst", 0,
@@ -71,5 +71,5 @@
     // -pendingimfile
     psMetadata *pendingimfileArgs = psMetadataAlloc();
-    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_id", 0,
+    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_name", 0,
             "define exposure ID", NULL); 
     psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst", 0,
@@ -117,37 +117,15 @@
 
     psMetadata *argSets = psMetadataAlloc();
-    // find which mode we're running under
-    PXTOOL_MODE("-seen",            PZTOOL_MODE_SEEN,         seenArgs);
-    PXTOOL_MODE("-pendingexp",      PZTOOL_MODE_PENDINGEXP,   pendingexpArgs);
-    PXTOOL_MODE("-pendingimfile",   PZTOOL_MODE_PENDINGIMFILE,pendingimfileArgs);
-    PXTOOL_MODE("-copydone",        PZTOOL_MODE_COPYDONE,     copydoneArgs);
+    psMetadata *modes = psMetadataAlloc();
 
-    bool argErr = false;
-    if (config->mode == PZTOOL_MODE_NONE) {
-        argErr = true;
-        fprintf (stderr, "mode argument is required\n");
-    } else if (! psArgumentParse(config->args, &argc, argv) || argc != 1) {
-        argErr = true;
-        fprintf (stderr, "error parsing arguments\n");
-    }
+    PXTOOL_ADD_MODE("-seen",            "", PZTOOL_MODE_SEEN,         seenArgs);
+    PXTOOL_ADD_MODE("-pendingexp",      "", PZTOOL_MODE_PENDINGEXP,   pendingexpArgs);
+    PXTOOL_ADD_MODE("-pendingimfile",   "", PZTOOL_MODE_PENDINGIMFILE,pendingimfileArgs);
+    PXTOOL_ADD_MODE("-copydone",        "", PZTOOL_MODE_COPYDONE,     copydoneArgs);
 
-    if (argErr) {
-        printf("\nPan-STARRS Detrend Tool\n");
-        printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
-        printf(" <mode> :\n\n"); 
-
-        psMetadataIterator *iter = psMetadataIteratorAlloc(argSets, 0, NULL);
-        psMetadataItem *item = NULL;
-        while ((item = psMetadataGetAndIncrement(iter))) {
-            if (!item->type == PS_DATA_METADATA) {
-                psAbort("all options must be specified as a metadata");
-            }
-
-            fprintf(stdout, "%s ", item->name);
-            psArgumentHelp(item->data.md);
-        }
-        psFree(iter);
-
+    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
+        psError(PS_ERR_UNKNOWN, true, "option parsing failed");
         psFree(argSets);
+        psFree(modes);
         psFree(config);
         return NULL;
@@ -155,4 +133,5 @@
 
     psFree(argSets);
+    psFree(modes);
 
     // setup search criterion
@@ -173,5 +152,5 @@
     config->where = psMetadataAlloc();
 
-    addWhereStr(exp_id); 
+    addWhereStr(exp_name); 
     addWhereStr(telescope); 
     // convert '-inst' to 'camera'
@@ -206,8 +185,4 @@
     }
 
-    // save argv/argc
-    config->argv = argv;
-    config->argc = argc;
-
     return config;
 }
