Index: trunk/ippTools/src/regtoolConfig.c
===================================================================
--- trunk/ippTools/src/regtoolConfig.c	(revision 8459)
+++ trunk/ippTools/src/regtoolConfig.c	(revision 8534)
@@ -137,10 +137,16 @@
         if (config->mode) { \
             psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \
+            goto FAIL; \
         } \
         config->mode = modeval; \
         config->args = psMemIncrRefCounter(argset); \
     } \
+    if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, NULL, argset)) {;\
+        psError(PS_ERR_UNKNOWN, false, "failed to add argset for %s", option);\
+    } \
+    psFree(argset); \
 }
 
+    psMetadata *argSets = psMetadataAlloc();
     // find which mode we're running under
     PXTOOL_MODE("-pendingexp",   P0TOOL_MODE_PENDINGEXP,  pendingexpArgs);
@@ -162,34 +168,22 @@
         printf("\nPan-STARRS Phase 0 Tool\n");
         printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
-        printf(" <mode> : [-pendingexp|-pendingimfile|-updateexp|-updateimfile|-rawimfile]\n\n");
-
-        fprintf (stdout, "-pendingexp ");
-        psArgumentHelp(pendingexpArgs);
-        psFree(pendingexpArgs);
-
-        fprintf (stdout, "-pendingimfile ");
-        psArgumentHelp(pendingimfileArgs);
-        psFree(pendingimfileArgs);
-
-        fprintf (stdout, "-updateexp ");
-        psArgumentHelp(updateexpArgs);
-        psFree(updateexpArgs);
-
-        fprintf (stdout, "-updateimfile ");
-        psArgumentHelp(updateimfileArgs);
-        psFree(updateimfileArgs);
-
-        fprintf (stdout, "-rawimfile ");
-        psArgumentHelp(rawimfileArgs);
-        psFree(rawimfileArgs);
-
+        printf(" <mode> :\n\n");
+
+        psMetadataIterator *iter = psMetadataIteratorAlloc(argSets, 0, NULL);
+        psMetadataItem *item = NULL;
+        while ((item = psMetadataGetAndIncrement(iter))) {
+            if (!item->type == PS_DATA_METADATA) {
+                psAbort(argv[0], "all options must be specified as a metadata");            }
+
+            fprintf(stdout, "%s ", item->name);
+            psArgumentHelp(item->data.md);
+        }
+        psFree(iter);
+
+        psFree(argSets);
         goto FAIL;
     }
 
-    psFree(pendingexpArgs);
-    psFree(pendingimfileArgs);
-    psFree(updateexpArgs);
-    psFree(updateimfileArgs);
-    psFree(rawimfileArgs);
+    psFree(argSets);
 
     // setup search criterion
