Index: trunk/ppSub/src/ppSubConvolve.c
===================================================================
--- trunk/ppSub/src/ppSubConvolve.c	(revision 29551)
+++ trunk/ppSub/src/ppSubConvolve.c	(revision 31156)
@@ -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);
         }
 
