Index: branches/eam_branches/ipp-20110213/ppSub/src/ppSub.h
===================================================================
--- branches/eam_branches/ipp-20110213/ppSub/src/ppSub.h	(revision 30628)
+++ branches/eam_branches/ipp-20110213/ppSub/src/ppSub.h	(revision 30772)
@@ -128,4 +128,7 @@
 void ppSubVersionPrint(void);
 
+/// write the version info to a string
+psString ppSubVersionLong(void);
+
 /// Mark the data quality as bad and prepare to suspend processing
 void ppSubDataQuality(ppSubData *data,  ///< Processing data
@@ -185,4 +188,6 @@
 bool ppSubSetSourceImageIDs (psArray *sources, int imageID);
 
+void ppSubSetThreads (void);
+
 ///@}
 #endif
Index: branches/eam_branches/ipp-20110213/ppSub/src/ppSubArguments.c
===================================================================
--- branches/eam_branches/ipp-20110213/ppSub/src/ppSubArguments.c	(revision 30628)
+++ branches/eam_branches/ipp-20110213/ppSub/src/ppSubArguments.c	(revision 30772)
@@ -57,4 +57,9 @@
 }
 
+void ppSubSetThreads (void) {
+    // ppSub does not have any of its own thread handlers
+    return;
+}
+
 bool ppSubArguments(int argc, char *argv[], ppSubData *data)
 {
@@ -62,4 +67,10 @@
     pmConfig *config = data->config;
     assert(config);
+
+    // generic arguments (version, dumpconfig)
+    PS_ARGUMENTS_GENERIC( ppSub, config, argc, argv );
+
+    // thread arguments
+    PS_ARGUMENTS_THREADS( ppSub, config, argc, argv )
 
     int argNum = psArgumentGet(argc, argv, "-debug"); // Debugging argument number
@@ -82,6 +93,4 @@
     psMetadataAddStr(arguments, PS_LIST_TAIL, "-stats", 0, "Statistics file", NULL);
     psMetadataAddStr(arguments,  PS_LIST_TAIL, "-stamps", 0, "Stamps filename; x,y on each line", NULL);
-    psMetadataAddS32(arguments, PS_LIST_TAIL, "-threads", 0, "Number of threads", 0);
-    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dumpconfig", 0, "file to dump configuration to", NULL);
     psMetadataAddS32(arguments, PS_LIST_TAIL, "-convolve", 0, "Image to convolve [1 or 2]", 0);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-photometry", 0, "Perform photometry?", NULL);
@@ -166,12 +175,4 @@
     }
 
-    int threads = psMetadataLookupS32(NULL, arguments, "-threads"); // Number of threads
-    if (threads > 0) {
-        if (!psThreadPoolInit(threads)) {
-            psError(psErrorCodeLast(), false, "Unable to setup %d threads", threads);
-            return false;
-        }
-    }
-
     psTrace("ppSub", 1, "Done reading command-line arguments\n");
 
Index: branches/eam_branches/ipp-20110213/ppSub/src/ppSubConvolve.c
===================================================================
--- branches/eam_branches/ipp-20110213/ppSub/src/ppSubConvolve.c	(revision 30628)
+++ branches/eam_branches/ipp-20110213/ppSub/src/ppSubConvolve.c	(revision 30772)
@@ -39,4 +39,8 @@
 }
 
+void ppSubSetThreads (void) {
+    // ppSub does not have any of its own thread handlers
+    return;
+}
 
 int main(int argc, char *argv[])
@@ -49,4 +53,10 @@
         goto die;
     }
+
+    // generic arguments (version, dumpconfig)
+    PS_ARGUMENTS_GENERIC( ppSub, config, argc, argv );
+
+    // thread arguments
+    PS_ARGUMENTS_THREADS( ppSub, config, argc, argv )
 
     bool reference = false;             // Input is actually the reference image?
@@ -59,5 +69,4 @@
         psMetadataAddStr(arguments, PS_LIST_TAIL, "-kernel", 0, "Convolution kernel", NULL);
         psMetadataAddBool(arguments, PS_LIST_TAIL, "-reference", 0, "Input is actually reference?", false);
-        psMetadataAddS32(arguments, PS_LIST_TAIL, "-threads", 0, "Threads to use", 0);
         psMetadataAddBool(arguments, PS_LIST_TAIL, "-save-all", 0, "Save all outputs?", false);
 
@@ -75,5 +84,5 @@
 
         reference = psMetadataLookupBool(NULL, arguments, "-reference");
-        threads = psMetadataLookupS32(NULL, arguments, "-threads");
+        threads = psMetadataLookupS32(NULL, arguments, "NTHREADS");
         fileList("PPSUB.INPUT", inImage, "Input image", config);
         fileList("PPSUB.INPUT.MASK", inMask, "Input mask", config);
@@ -239,5 +248,4 @@
         if (threads > 0) {
             pmSubtractionThreadsInit();
-            psThreadPoolInit(threads);
         }
 
Index: branches/eam_branches/ipp-20110213/ppSub/src/ppSubMatchPSFs.c
===================================================================
--- branches/eam_branches/ipp-20110213/ppSub/src/ppSubMatchPSFs.c	(revision 30628)
+++ branches/eam_branches/ipp-20110213/ppSub/src/ppSubMatchPSFs.c	(revision 30772)
@@ -374,5 +374,5 @@
     }
 
-    int threads = psMetadataLookupS32(NULL, config->arguments, "-threads"); // Number of threads
+    int threads = psMetadataLookupS32(NULL, config->arguments, "NTHREADS"); // Number of threads
     if (threads > 0) {
         pmSubtractionThreadsInit();
