Index: trunk/psModules/src/imcombine/pmSubtractionKernels.h
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionKernels.h	(revision 13340)
+++ trunk/psModules/src/imcombine/pmSubtractionKernels.h	(revision 14106)
@@ -6,13 +6,16 @@
 /// Type of subtraction kernel
 typedef enum {
-    PM_SUBTRACTION_KERNEL_POIS,         ///< POIS kernel --- delta functions
-    PM_SUBTRACTION_KERNEL_ISIS          ///< ISIS kernel --- gaussians modified by polynomials
+    PM_SUBTRACTION_KERNEL_POIS,         ///< Pan-STARRS Optimal Image Subtraction --- delta functions
+    PM_SUBTRACTION_KERNEL_ISIS,         ///< Traditional kernel --- gaussians modified by polynomials
+    PM_SUBTRACTION_KERNEL_SPAM,         ///< Summed Pixels for Advanced Matching --- summed delta functions
+    PM_SUBTRACTION_KERNEL_FRIES,        ///< Fibonacci Radius Increases Excellence of Subtraction
 } pmSubtractionKernelsType;
 
 /// Kernels specification
 typedef struct {
-    pmSubtractionKernelsType type;       ///< Type of kernels --- allowing the use of multiple kernels
+    pmSubtractionKernelsType type;      ///< Type of kernels --- allowing the use of multiple kernels
     psVector *u, *v;                    ///< Offset (for POIS) or polynomial order (for ISIS)
-    psVector *sigma;                    ///< Width of Gaussian (for ISIS)
+    psVector *sigma;                    ///< Gaussian widths (ISIS only)
+    psVector *uStop, *vStop;            ///< Width of kernel element (SPAM,FRIES only)
     psVector *xOrder, *yOrder;          ///< Spatial Polynomial order (for all)
     int subIndex;                       ///< Index of kernel to be subtracted (to maintain flux conservation)
@@ -44,4 +47,17 @@
                                                );
 
+/// Generate SPAM kernels
+pmSubtractionKernels *pmSubtractionKernelsSPAM(int size, ///< Half-size of the kernel
+                                               int spatialOrder, ///< Order of spatial variations
+                                               int inner, ///< Inner radius to preserve unbinned
+                                               int binning ///< Kernel binning factor
+    );
+
+/// Generate FRIES kernels
+pmSubtractionKernels *pmSubtractionKernelsFRIES(int size, ///< Half-size of the kernel
+                                                int spatialOrder, ///< Order of spatial variations
+                                                int inner ///< Inner radius to preserve unbinned
+    );
+
 /// Generate a kernel of a specified type
 pmSubtractionKernels *pmSubtractionKernelsGenerate(pmSubtractionKernelsType type, ///< Kernel type
@@ -49,6 +65,8 @@
                                                    int spatialOrder, ///< Order of spatial variations
                                                    const psVector *sigmas, ///< Gaussian widths
-                                                   const psVector *orders ///< Polynomial order of gaussians
-                                                   );
+                                                   const psVector *orders, ///< Polynomial order of gaussians
+                                                   int inner, ///< Inner radius to preserve unbinned
+                                                   int binning ///< Kernel binning factor
+    );
 
 #endif
