Index: trunk/ppSub/src/ppSubCamera.c
===================================================================
--- trunk/ppSub/src/ppSubCamera.c	(revision 21524)
+++ trunk/ppSub/src/ppSubCamera.c	(revision 23235)
@@ -40,5 +40,5 @@
     pmFPAfile *inputMask = pmFPAfileBindFromArgs(&status, input, config, "PPSUB.INPUT.MASK", "INPUT.MASK");
     if (!status) {
-        psError (PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.INPUT.MASK");
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.INPUT.MASK");
         return NULL;
     }
@@ -51,9 +51,20 @@
     pmFPAfile *inputVariance = pmFPAfileBindFromArgs(&status, input, config, "PPSUB.INPUT.VARIANCE", "INPUT.VARIANCE");
     if (!status) {
-        psError (PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.INPUT.VARIANCE");
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.INPUT.VARIANCE");
         return NULL;
     }
     if (inputVariance && inputVariance->type != PM_FPA_FILE_VARIANCE) {
         psError(PS_ERR_IO, true, "PPSUB.INPUT.VARIANCE is not of type VARIANCE");
+        return false;
+    }
+
+    // Input source list
+    pmFPAfile *inputSources = pmFPAfileBindFromArgs(&status, input, config, "PPSUB.INPUT.SOURCES", "INPUT.SOURCES");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.INPUT.SOURCES");
+        return NULL;
+    }
+    if (inputSources && inputSources->type != PM_FPA_FILE_CMF) {
+        psError(PS_ERR_IO, true, "PPSUB.INPUT.SOURCES is not of type CMF");
         return false;
     }
@@ -74,5 +85,5 @@
     pmFPAfile *refMask = pmFPAfileBindFromArgs(&status, ref, config, "PPSUB.REF.MASK", "REF.MASK");
     if (!status) {
-        psError (PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.REF.MASK");
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.REF.MASK");
         return NULL;
     }
@@ -85,9 +96,20 @@
     pmFPAfile *refVariance = pmFPAfileBindFromArgs(&status, ref, config, "PPSUB.REF.VARIANCE", "REF.VARIANCE");
     if (!status) {
-        psError (PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.REF.VARIANCE");
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.REF.VARIANCE");
         return NULL;
     }
     if (refVariance && refVariance->type != PM_FPA_FILE_VARIANCE) {
         psError(PS_ERR_IO, true, "PPSUB.REF.VARIANCE is not of type VARIANCE");
+        return false;
+    }
+
+    // Reference source list
+    pmFPAfile *refSources = pmFPAfileBindFromArgs(&status, ref, config, "PPSUB.REF.SOURCES", "REF.SOURCES");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "Failed to load file definition PPSUB.REF.SOURCES");
+        return NULL;
+    }
+    if (refSources && refSources->type != PM_FPA_FILE_CMF) {
+        psError(PS_ERR_IO, true, "PPSUB.REF.SOURCES is not of type CMF");
         return false;
     }
@@ -241,20 +263,4 @@
     outKernels->save = true;
 
-#if 0
-    if (!pmFPAAddSourceFromFormat(output->fpa, "Subtraction", output->format)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to generate output FPA.");
-        return false;
-    }
-#endif
-
-    pmFPAfile *sources = pmFPAfileDefineFromArgs(&status, config, "PPSUB.SOURCES", "PPSUB.SOURCES");
-    if (!status) {
-        psError(PS_ERR_IO, false, "Failed to load file definition PPSUB.SOURCES");
-        return false;
-    }
-    if (sources && sources->type != PM_FPA_FILE_CMF) {
-        psError(PS_ERR_IO, true, "PPSUB.SOURCES is not of type CMF");
-        return false;
-    }
 
     psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSUB_RECIPE); // Recipe for ppSim
