diff --git a/preprocess_thresholds.py b/preprocess_thresholds.py
index 9d51feffd470b63c389485fd7f57f5f90da8091f..56d12a16a0925cf17fd1f3813f7f5556d7617b46 100644
--- a/preprocess_thresholds.py
+++ b/preprocess_thresholds.py
@@ -48,7 +48,7 @@ def thresholds_11_12um(data: xr.Dataset,
     schi = np.array(schi, dtype=np.float32)  # this is because the C function expects a float
 
     m15 = data.M15.values[scene_idx].ravel()
-    latitude = data.latitude.values[scene_idx].ravel
+    latitude = data.latitude.values[scene_idx].ravel()
     thr = anc.py_cithr(1, schi, m15)
     thr_dict = prepare_11_12um_thresholds(thresholds, m15.shape[0])
 
@@ -356,34 +356,56 @@ def polar_night_thresholds(data, thresholds, scene, test_name, scene_idx):
     return out_thr.T
 
 
-def get_nl_thresholds(data, threshold):
-    lo_val = threshold['bt_diff_bounds'][0]
-    hi_val = threshold['bt_diff_bounds'][1]
-    lo_val_thr = threshold['nl_11_4m'][0]
-    hi_val_thr = threshold['nl_11_4m'][1]
-    conf_range = threshold['nl_11_4m'][2]
-    power = threshold['nl_11_4m'][3]
-
-    a = (data['M15-M16'].values - lo_val) / (hi_val - lo_val)
-    midpt = lo_val_thr + a*(hi_val_thr - lo_val_thr)
-    hicut = midpt - conf_range
-    locut = midpt + conf_range
-
-    idx = np.nonzero(data['M15-M16'].values > threshold['bt_diff_bounds'][0])
-    locut[idx] = threshold['nl_11_4l'][0]
-    midpt[idx] = threshold['nl_11_4l'][1]
-    hicut[idx] = threshold['nl_11_4l'][2]
-    power[idx] = threshold['nl_11_4l'][3]
-
-    idx = np.nonzero(data['M15-M16'].values < threshold['bt_diff_bounds'][1])
-    locut[idx] = threshold['nl_11_4h'][0]
-    midpt[idx] = threshold['nl_11_4h'][1]
-    hicut[idx] = threshold['nl_11_4h'][2]
-    power[idx] = threshold['nl_11_4h'][3]
-
-    out_thr = xr.DataArray(data=np.stack((locut, midpt, hicut, np.ones(data.M01.shape), power)),
-                           dims=('number_of_lines', 'number_of_pixels', 'z'))
-    return out_thr
+# get_nl_thresholds
+def land_night_thresholds(data, threshold, coast=True):
+    if coast is False:
+        lo_val = threshold['bt_diff_bounds'][0]
+        hi_val = threshold['bt_diff_bounds'][1]
+        lo_val_thr = threshold['thr_mid'][0]
+        hi_val_thr = threshold['thr_mid'][1]
+        conf_range = threshold['thr_mid'][2]
+
+        a = (data['M15-M16'].values - lo_val) / (hi_val - lo_val)
+        midpt = lo_val_thr + a*(hi_val_thr - lo_val_thr)
+        hicut = midpt - conf_range
+        locut = midpt + conf_range
+
+        power = np.full(midpt.shape, threshold['thr_mid'][3])
+
+        idx = np.nonzero(data['M15-M16'].values > threshold['bt_diff_bounds'][0])
+        locut[idx] = threshold['thr_low'][0]
+        midpt[idx] = threshold['thr_low'][1]
+        hicut[idx] = threshold['thr_low'][2]
+        power[idx] = threshold['thr_low'][3]
+
+        idx = np.nonzero(data['M15-M16'].values < threshold['bt_diff_bounds'][1])
+        locut[idx] = threshold['thr_hi'][0]
+        midpt[idx] = threshold['thr_hi'][1]
+        hicut[idx] = threshold['thr_hi'][2]
+        power[idx] = threshold['thr_hi'][3]
+
+        out_thr = np.dstack((locut.ravel(), midpt.ravel(), hicut.ravel(),
+                             np.ones(locut.ravel().shape), power.ravel()))
+        return np.squeeze(out_thr.T)
+    else:
+        b0 = threshold['coeffs'][0]
+        b1 = threshold['coeffs'][1]
+        b2 = threshold['coeffs'][2]
+
+        thr = b0 + threshold['int_adj'] + b1*data.geos_tpw.values + b2*data.geos_tpw.values**2
+        hicut = np.empty((2, thr.shape[0], thr.shape[1]))
+        midpt = np.empty((2, thr.shape[0], thr.shape[1]))
+        locut = np.empty((2, thr.shape[0], thr.shape[1]))
+        hicut[0, :] = thr - 1
+        hicut[1, :] = thr + 1
+        midpt[0, :] = hicut[0, :] - 0.5
+        midpt[1, :] = hicut[1, :] + 0.5
+        locut[0, :] = hicut[0, :] - 1
+        locut[1, :] = hicut[1, :] + 1
+
+        out_thr = np.dstack((hicut[0, :], midpt[0, :], locut[0, :], locut[1, :], midpt[1, :], hicut[1, :],
+                             np.ones(locut[0, :].shape), np.ones(locut[0, :].shape)))
+        return np.moveaxis(out_thr, -1, 0)
 
 
 def vis_refl_thresholds(data, thresholds, scene, scene_idx):
@@ -454,21 +476,22 @@ def gemi_thresholds(data, thresholds, scene_name, scene_idx):
     return gemi_thr.T
 
 
-def bt_diff_11_4um_thresholds(data, threshold):
+def bt_diff_11_4um_thresholds(data, threshold, scene_idx):
     c = threshold['coeffs']
-    tpw = data.geos_tpw.values
+    tpw = data.geos_tpw.values[scene_idx].ravel()
 
     thr = c[0] + threshold['corr'] + c[1]*tpw + c[2]*np.power(tpw, 2)
-    hicut0 = (thr + threshold['hicut_coeff'][0]).reshape(1, np.prod(tpw.shape))
-    hicut1 = (thr + threshold['hicut_coeff'][1]).reshape(1, np.prod(tpw.shape))
-    midpt0 = (hicut0 + threshold['midpt_coeff'][0]).reshape(1, np.prod(tpw.shape))
-    midpt1 = (hicut1 + threshold['midpt_coeff'][1]).reshape(1, np.prod(tpw.shape))
-    locut0 = (hicut0 + threshold['locut_coeff'][0]).reshape(1, np.prod(tpw.shape))
-    locut1 = (hicut1 + threshold['locut_coeff'][1]).reshape(1, np.prod(tpw.shape))
-
-    thr_out = np.vstack([hicut0, midpt0, locut0, locut1, midpt1, hicut1,
+
+    hicut0 = thr + threshold['hicut_coeff'][0]
+    hicut1 = thr + threshold['hicut_coeff'][1]
+    midpt0 = hicut0 + threshold['midpt_coeff'][0]
+    midpt1 = hicut1 + threshold['midpt_coeff'][1]
+    locut0 = hicut0 + threshold['locut_coeff'][0]
+    locut1 = hicut1 + threshold['locut_coeff'][1]
+
+    thr_out = np.dstack([locut0, midpt0, hicut0, hicut1, midpt1, locut1,
                          np.ones(hicut0.shape), np.ones(hicut0.shape)])
-    return thr_out
+    return np.squeeze(thr_out.T)
 
 
 def thresholds_1_38um_test(data, thresholds, scene_name, scene_idx):
diff --git a/read_data.py b/read_data.py
index 96f61b17dbd4075f7064b96f4ca511a72cb85ac3..2a12b609fc58f479b05823c926f9a3d62f97283e 100644
--- a/read_data.py
+++ b/read_data.py
@@ -194,6 +194,8 @@ def get_data(file_names: Dict[str, str],
         viirs_data['M16'].values[idx] = _bad_data
 
         # Compute channel differences and ratios that are used in the tests
+        viirs_data['M15-M13'] = (('number_of_lines', 'number_of_pixels'),
+                                 viirs_data.M15.values - viirs_data.M13.values)
         viirs_data['M14-M15'] = (('number_of_lines', 'number_of_pixels'),
                                  viirs_data.M14.values - viirs_data.M15.values)
         viirs_data['M15-M16'] = (('number_of_lines', 'number_of_pixels'),
diff --git a/scene.py b/scene.py
index c921417bcaafe26da08569b49e6bcbcdf403ed95..0abe8659237ca5ce4ab5a64ddef5254ce09f0c4c 100644
--- a/scene.py
+++ b/scene.py
@@ -13,10 +13,11 @@ import ancillary_data as anc
 _scene_list = ['Ocean_Day', 'Ocean_Night', 'Land_Day', 'Land_Night', 'Day_Snow', 'Night_Snow', 'Coast_Day',
                'Land_Day_Desert', 'Antarctic_Day', 'Polar_Day_Snow', 'Polar_Day_Desert', 'Polar_Day_Ocean',
                'Polar_Day_Desert_Coast', 'Polar_Day_Coast', 'Polar_Day_Land', 'Polar_Night_Snow',
-               'Polar_Night_Land', 'Polar_Night_Ocean', 'Land_Day_Desert_Coast', 'Land_Day_Coast', 'Desert']
+               'Polar_Night_Land', 'Polar_Night_Ocean', 'Land_Day_Desert_Coast', 'Land_Day_Coast', 'Desert',
+               'Australia']
 _flags = ['day', 'night', 'land', 'coast', 'sh_lake', 'sh_ocean', 'water', 'polar', 'sunglint',
           'greenland', 'high_elevation', 'antarctica', 'desert', 'visusd', 'vrused', 'map_snow', 'map_ice',
-          'ndsi_snow', 'snow', 'ice', 'new_zealand', 'uniform']
+          'ndsi_snow', 'snow', 'ice', 'new_zealand', 'uniform', 'australia']
 
 # temp value, need to verify what the actual bad_data value is in the C code
 _bad_data = -999.0
@@ -297,6 +298,9 @@ def find_scene(data, sunglint_angle):
     idx = np.nonzero((day == 0) & (lat > 86.0))
     scene_flag['ice'][idx] = 1
 
+    idx = np.nonzero((lat <= -11) & (lat > -40) & (lon <= 155) & (lon > 110))
+    scene_flag['australia'][idx] = 1
+
     # Check regional uniformity
     # Check for data border pixels
     scene_flag['uniform'] = anc.py_check_reg_uniformity(eco, eco, snowfr, icefr, lsf)['loc_uniform']
@@ -436,4 +440,7 @@ def scene_id(scene_flag):
     idx = np.nonzero(scene_flag['desert'] == 1)
     scene['Desert'][idx] = 1
 
+    idx = np.nonzero(scene_flag['australia'] == 1)
+    scene['Australia'][idx] = 1
+
     return scene
diff --git a/spectral_tests.py b/spectral_tests.py
index d08c6001af6822ac4d8933db8f614a12c80edb8e..183efb591a7d71c685456166ede70c71d430c52d 100644
--- a/spectral_tests.py
+++ b/spectral_tests.py
@@ -1,7 +1,7 @@
 import numpy as np
 import xarray as xr
 
-# from numpy.lib.stride_tricks import sliding_window_view
+from numpy.lib.stride_tricks import sliding_window_view
 from typing import Dict
 
 import functools
@@ -43,7 +43,7 @@ class CloudTests(object):
         @functools.wraps(func)
         def wrapper(self, *args, test_name, **kwargs):
             if test_name not in self.thresholds[self.scene_name]:
-                # print('Not running test for this scene')
+                print('Not running test for this scene')
                 # returns cmin. This could be changed into a keyworded argument for readability
                 test_bit = np.zeros(args[-1].shape)
                 return args[-1], test_bit
@@ -164,7 +164,7 @@ class CloudTests(object):
                           cmin: np.ndarray,
                           test_name: str = '11-12um_Cirrus_Test') -> np.ndarray:
 
-        confidence = np.ones(self.data.M01.shape)
+        confidence = np.ones(self.data.M15.shape)
         qa_bit = np.zeros(self.data[band].shape)
         test_bit = np.zeros(self.data[band].shape)
         threshold = self.thresholds[self.scene_name][test_name]
@@ -192,29 +192,147 @@ class CloudTests(object):
                                   cmin: np.ndarray,
                                   test_name: str = '11-4um_BT_Difference_Test') -> np.ndarray:
 
-        confidence = np.ones(self.data.M01.shape)
+        confidence = np.ones(self.data.M15.shape)
         qa_bit = np.zeros(self.data[band].shape)
         test_bit = np.zeros(self.data[band].shape)
         threshold = self.thresholds[self.scene_name][test_name]
 
         if (threshold['perform'] is True and self.pixels_in_scene is True):
             qa_bit[self.scene_idx] = 1
-            thr = preproc.bt_diff_11_4um_thresholds(self.data, threshold)
+            print(f'Testing "{self.scene_name}"\n')
+            thr = preproc.bt_diff_11_4um_thresholds(self.data, threshold, self.scene_idx)
+            rad = self.data[band].values[self.scene_idx]
+            test_bit[self.scene_idx] = 1  # THIS NEEDS TO BE CALCULATED PROPERLY
+            confidence[self.scene_idx] = conf.conf_test_dble(rad, thr)
+
+        cmin = np.fmin(cmin, confidence)
+
+        return cmin, test_bit
+
+    @run_if_test_exists_for_scene
+    def bt_difference_11_4um_test_land(self,
+                                       band1: str,
+                                       band2: str,
+                                       cmin: np.ndarray,
+                                       test_name: str = '11-4um_BT_Difference_Test') -> np.ndarray:
+
+        confidence = np.ones(self.data.M15.shape)
+        qa_bit = np.zeros(self.data[band1].shape)
+        test_bit = np.zeros(self.data[band1].shape)
+        threshold = self.thresholds[self.scene_name][test_name]
 
-        # CONTINUE FROM HERE...
+        scene_flag = scn.find_scene(self.data, self.thresholds['Sun_Glint']['bounds'][3])
 
+        if (threshold['perform'] is True and self.pixels_in_scene is True):
+            qa_bit[self.scene_idx] = 1
+            print(f'Testing "{self.scene_name}"\n')
+            if self.scene_name == 'Land_Night':
+                australia = self.data.Australia.values
+                ndvi = self.data.ndvi.values
+                coast = scene_flag['coast']
+                sh_lake = scene_flag['sh_lake']
+                idx = np.where(((australia == 0) & (ndvi < threshold['ndvi']) & (coast == 0)) |
+                               ((australia == 1) & (ndvi < threshold['ndvi_australia']) & (coast == 0)))
+                not_idx = np.ones(australia.shape, dtype=bool)
+                not_idx[idx] = False
+
+                rad11_12 = self.data[band1].values
+                rad11_4 = self.data[band2].values
+                thr = preproc.get_nl_thresholds(self.data, threshold, coast=False)
+                idx_lake = np.where((sh_lake == 1) | (rad11_12 < 0))
+                # test_bit[self.scene_idx] = 1  # THIS NEEDS TO BE CALCULATED PROPERLY
+                thr[:3, idx_lake] = thr[:3, idx_lake] + 2
+                temp_thr = np.squeeze(thr[:, idx[0]])
+                temp_rad = rad11_4[idx]
+                confidence[idx] = conf.conf_test_new(temp_rad, temp_thr)
+
+                thr = preproc.land_night_thresholds(self.data, threshold, coast=True)
+                temp_thr = np.squeeze(thr[:, not_idx])
+                temp_rad = rad11_4[not_idx]
+                thr[0:3, idx_lake[0], idx_lake[1]] = thr[0:3, idx_lake[0], idx_lake[1]] - 1
+                thr[3:6, idx_lake[0], idx_lake[1]] = thr[3:6, idx_lake[0], idx_lake[1]] + 1
+
+                confidence[not_idx] = conf.conf_test_dble(rad11_4[not_idx], thr[:, not_idx])
+
+            if self.scene_name in ['Polar_Night_Land', 'Polar_Day_Snow', 'Day_Snow']:
+                rad11_12 = self.data[band1].values[self.scene_idx]
+                rad11_4 = self.data[band2].values[self.scene_idx]
+                thr = preproc.polar_night_thresholds(self.data, threshold, self.scene_name,
+                                                     test_name, self.scene_idx)
+                confidence[self.scene_idx] = conf.conf_test_new(rad11_4, thr)
+
+            if self.scene_name in ['Polar_Night_Snow']:
+                rad11_12 = self.data[band1].values
+                rad11_4 = self.data[band2].values
+                idx_top = np.nonzero(self.data.M15.values > threshold['bt_thr'])
+                thr_top = preproc.polar_night_thresholds(self.data, threshold['top'], self.scene_name,
+                                                         test_name, idx_top)
+                idx_bottom = np.nonzero((self.data.M15.values > threshold['bt_thr']) &
+                                        (self.data.geos_tpw > threshold['tpw_thr']))
+                thr_bottom = preproc.polar_night_thresholds(self.data, threshold['bottom'], self.scene_name,
+                                                            test_name, idx_top)
+
+                confidence[idx_top] = conf.conf_test_new(rad11_4[idx_top], thr_top)
+                confidence[idx_bottom] = conf.conf_test_new(rad11_4[idx_bottom], thr_bottom)
+
+            if self.scene_name in ['Night_Snow']:
+                rad11_12 = self.data[band1].values
+                rad11_4 = self.data[band2].values
+                idx_top = np.nonzero(self.data.M15.values > threshold['bt_thr'])
+                thr_top = threshold['thr']
+                idx_bottom = np.nonzero((self.data.M15.values > threshold['bt_thr']) &
+                                        (self.data.geos_tpw > threshold['tpw_thr']))
+                thr_bottom = preproc.polar_night_thresholds(self.data, threshold['bottom'], self.scene_name,
+                                                            test_name, idx_top)
+
+                confidence[idx_top] = conf.conf_test_new(rad11_4[idx_top], thr_top)
+                confidence[idx_bottom] = conf.conf_test_new(rad11_4[idx_bottom], thr_bottom)
+
+            cmin = np.fmin(cmin, confidence)
 
+        return cmin, test_bit
+
+    # This test requires 7.3um band that is not available for VIIRS
     @run_if_test_exists_for_scene
     def midlevel_cloud_test():
         pass
 
+    # This test requires 7.3um band that is not available for VIIRS
     @run_if_test_exists_for_scene
     def water_vapor_cloud_test():
         pass
 
     @run_if_test_exists_for_scene
-    def variability_11um_test():
-        pass
+    def variability_11um_test(self,
+                              band: str,
+                              cmin: np.ndarray,
+                              test_name: str = '11um_Variability_Test') -> np.ndarray:
+
+        confidence = np.ones(self.data.M15.shape)
+        qa_bit = np.zeros(self.data[band].shape)
+        test_bit = np.zeros(self.data[band].shape)
+        threshold = self.thresholds[self.scene_name][test_name]
+        var = np.zeros([self.data.M15.shape[0], self.data.M15.shape[1], 9])
+        radshape = self.data.M15.shape
+
+        if (threshold['perform'] is True and self.pixels_in_scene is True):
+            qa_bit[self.scene_idx] = 1
+            print(f'Testing "{self.scene_name}"\n')
+            rad = self.data[band].values
+
+            test = (sliding_window_view(np.pad(rad, [1, 1], mode='constant'), (3, 3)) -
+                    np.expand_dims(rad, (2, 3)))
+            var[np.abs(test).reshape(radshape[0], radshape[1], 9) < threshold['variability']] = 1
+            var = var.sum(axis=2)
+
+            idx = np.where(var == 9)
+            test_bit[idx] = 1
+            thr = np.array(threshold['thr'])
+            confidence[idx] = conf.conf_test_new(rad[idx], thr)
+
+        cmin = np.fmin(cmin, confidence)
+
+        return cmin, test_bit
 
     @run_if_test_exists_for_scene
     def oceanic_stratus_11_4um_test(self,
@@ -222,7 +340,7 @@ class CloudTests(object):
                                     cmin: np.ndarray,
                                     test_name: str = '11-4um_Oceanic_Stratus_Test') -> np.ndarray:
 
-        confidence = np.ones(self.data.M01.shape)
+        confidence = np.ones(self.data.M15.shape)
         qa_bit = np.zeros(self.data[band].shape)
         test_bit = np.zeros(self.data[band].shape)
         threshold = self.thresholds[self.scene_name][test_name]
@@ -237,9 +355,9 @@ class CloudTests(object):
                 confidence[self.scene_idx] = conf.conf_test_dble(rad, thr)
 
             # these scenes have not been implemented yet
-            elif self.scene_name in ['Land_Night', 'Polar_Night_Land', 'Polar_Day_Snow', 'Polar_Night_Snow',
-                                     'Day_Snow', 'Night_Snow', 'Antarctic_Day']:
-                pass
+            # elif self.scene_name in ['Land_Night', 'Polar_Night_Land', 'Polar_Day_Snow', 'Polar_Night_Snow',
+            #                          'Day_Snow', 'Night_Snow', 'Antarctic_Day']:
+            #     pass
             else:
                 scene_flag = scn.find_scene(self.data, self.thresholds['Sun_Glint']['bounds'][3])
                 idx = np.nonzero((self.data[band].values >= threshold['thr'][1]) &
@@ -252,7 +370,7 @@ class CloudTests(object):
 
         cmin = np.fmin(cmin, confidence)
 
-        return cmin, test_bit  # np.abs(1-test_bit)*qa_bit
+        return cmin, test_bit
 
     @run_if_test_exists_for_scene
     def nir_reflectance_test(self,
diff --git a/thresholds.mvcm.snpp.v0.0.1.yaml b/thresholds.mvcm.snpp.v0.0.1.yaml
index e8f59044f4b192e4f94bf6320701eb16aebe1ad2..801c795c7c763f2ac975b601d9c636892b8099a8 100644
--- a/thresholds.mvcm.snpp.v0.0.1.yaml
+++ b/thresholds.mvcm.snpp.v0.0.1.yaml
@@ -13,8 +13,6 @@ Land_Day:
   11-4um_Oceanic_Stratus_Test:
     thr: [-16.0, -14.0, -12.0, 1.0, 1.0]
     perform: True
-  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
-  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
   Visible_Reflectance_Test:
     thr: [0.207, 0.169, 0.132, 1.0, 1.0] # used to be dlref1
     adj: 0.94 # used to be dl_b1bias_adj
@@ -25,6 +23,8 @@ Land_Day:
   dlvrat         : [1.80, 1.85, 1.90, 1.0, 1.0]
 #  dl11_12lcmult  : 0.3
 #  dl11_12hcadj   : 1.25
+  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
+  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
 
 Land_Night:
   11-12um_Cirrus_Test:
@@ -37,14 +37,18 @@ Land_Night:
   4-12um_BTD_Thin_Cirrus_Test:
     thr: [15.0, 10.0, 5.00, 1.0, 1.0]
     perform: True
-  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
-  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
   7.3-11um_BTD_Mid_Level_Cloud_Test:
     thr: [-8.0,   -10.0, -11.0, 1.0, 1.0]  # nl7_11s
-  nl_11_4l       : [0.0,   -0.5, -1.0,  1.0]
-  nl_11_4h       : [6.5,    6.0,  5.5,  1.0]
-  nl_11_4m       : [-0.5,    6.0,  0.5,  1.0]
-  nl_11_4_pfm    : 1.0
+  11-4um_BT_Difference_Test:
+    thr_low: [0.0, -0.5, -1.0, 1.0]
+    thr_mid: [-0.5, 6.0, 0.5, 1.0]
+    thr_hi: [6.5, 6.0, 5.5, 1.0]
+    coeffs: [-0.3476, 0.5307, -0.1930]
+    int_adj: 0
+    ndvi: 0.25
+    ndvi_australia: 0.4
+    bt_diff_bounds : [1.0, -1.0]
+    perform: True
   Surface_Temperature_Test:
     desert_thr: 20.0
     regular_thr: 12.0
@@ -54,18 +58,19 @@ Land_Night:
       #  Surface_Temperature_Test_df1: [-0.2, 1.0]
       #  Surface_Temperature_Test_df2: [-0.5, 1.0]
       #  Surface_Temperature_Test_difference: [-0.2, 1.0, -0.5, 1.0]  # <- this merges the previous two arrays
-  bt_diff_bounds : [1.0, -1.0]
     #  Surface_Temperature_Test_1: 20.0  #   | might be worth figuring out if we can
     #  Surface_Temperature_Test_2: 12.0  #   | merge these three coefficients
     #  Surface_Temperature_Test_pfm: 1.0 # __|
     #  Surface_Temperature_Test: [20.0, 12.0, 1.0]  # <- First attempt to merge the three values above
   nlbt1          : 270.0
   nl_lat         : 30.0
-  nl_ndvi        : 0.25
-  nl_ndvi_Aust   : 0.40
-  nl_intadj      : 0.0
+    #  nl_ndvi        : 0.25
+    #  nl_ndvi_Aust   : 0.40
+    #  nl_intadj      : 0.0
   nl_btd1        : -2.0
-  nl11_4coef     : [-0.3476, 0.5307, -0.1930]
+    #  nl11_4coef     : [-0.3476, 0.5307, -0.1930]
+  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
+  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
 
 Land_Day_Coast:
   11-12um_Cirrus_Test:
@@ -222,10 +227,13 @@ Ocean_Night:
   11-4um_Oceanic_Stratus_Test:
     thr: [1.25, 1.0, 0.25, 1.0, 1.0]
     perform: True
-  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
-  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
-  no86_73        : [14.0,  15.0,  16.0,  1.0, 1.0]
-  11um_Variability_Test: [3.0, 6.0, 7.0, 1.0, 1.0]
+  Water_Vapor_Cloud_Test:
+    thr: [14.0, 15.0, 16.0, 1.0, 1.0]
+    perform: True
+  11um_Variability_Test:
+    thr: [3.0, 6.0, 7.0, 1.0, 1.0]
+    variability: 0.40
+    perform: True
   11-4um_BT_Difference_Test:
     coeffs: [-0.7093, 0.1128, -0.1567]
     corr: 0.0  # no_intadj
@@ -233,6 +241,8 @@ Ocean_Night:
     midpt_coeff: [-2.5, 2.5]  # no11_4mdad
     hicut_coeff: [-1.5, 1.5]  # no11_4hiad
     perform: True             # no11_4_pfm
+  CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
+  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
 
 Polar_Day_Land:
   11-12um_Cirrus_Test:
@@ -275,24 +285,32 @@ Polar_Night_Land:
       #  Surface_Temperature_Test_2: 12.0  #   | merge these three coefficients
       #  Surface_Temperature_Test_pfm: 1.0 # __|
       #  Surface_Temperature_Test: [20.0, 12.0, 1.0]  # <- First attempt to merge the three values above
-  pnl_11_4_pfm   : 1.0
-  pnl_7_11_pfm   : 1.0
-  pnl_4_12_pfm   : 1.0
+  11-4um_BT_Difference_Test:
+    low: [2.00, 1.70, 1.40, 1.0]
+    mid1: [1.70, 0.70, 0.3, 1.0]
+    mid2: [0.00, 0.00, 0.00, 0.0]
+    mid3: [0.00, 0.00, 0.00, 0.0]
+    high: [1.00, 0.70,  0.40, 1.0]
+    bt11_bounds: [235, 0, 0, 265]
+    perform: True
   7.3-11um_BTD_Mid_Level_Cloud_Test:
     low: [-1.00, 0.00, 1.00, 1.0, 1.0]  # pn_7_11l
-    mid1: [0.00,  -4.50, -1.00, 1.0]  # pn_7_11m1
+    mid1: [0.00, -4.50, -1.00, 1.0]  # pn_7_11m1
     mid2: [-4.50, -10.50, -1.00, 1.0]  # pn_7_11m2
     mid3: [-10.50, -20.0, -1.00, 1.0]  # pn_7_11m3
     high: [-21.0, -20.0, -19.0,1.0]  # pn_7_11h
     bt11_bounds: [220.0, 245.0, 255.0, 265.0]  # bt11_bnds2
   4-12um_BTD_Thin_Cirrus_Test:
     low: [2.00, 1.70, 1.40, 1.0]
-    mid1: [1.70,  0.70, 0.300, 1.0]
-    mid2: [0.00,  0.00, 0.00, 0.0]
-    mid3: [0.00,  0.00, 0.00, 0.0]
-    high: [1.00,  0.70,  0.40, 1.0]
-    bt11_bounds  : [235.0, 000.0, 000.0, 265.0]
+    mid1: [1.70, 0.70, 0.300, 1.0]
+    mid2: [0.00, 0.00, 0.00, 0.0]
+    mid3: [0.00, 0.00, 0.00, 0.0]
+    high: [1.00, 0.70,  0.40, 1.0]
+    bt11_bounds: [235.0, 000.0, 000.0, 265.0]
     perform: True
+#  pnl_11_4_pfm   : 1.0
+#  pnl_7_11_pfm   : 1.0
+#  pnl_4_12_pfm   : 1.0
 
 Polar_Day_Coast:
   11-12um_Cirrus_Test:
@@ -370,14 +388,15 @@ Polar_Day_Snow:
   1.38um_High_Cloud_Test:
     thr: [0.060, 0.0525, 0.045, 1.0, 1.0]
     perform: True
+  11-4um_BT_Difference_Test:
+    low: [20.0, 18.0, 16.0, 1.0]
+    mid1: [18.0, 16.0, 2.0, 1.0]
+    mid2: [0.0, 0.0, 0.0, 0.0]
+    mid3: [0.0, 0.0, 0.0, 0.0]
+    high: [18.0, 16.0, 14.0, 1.0]
+    bt_11_bounds: [230.0, 0.0, 0.0, 245.0]
+    perform: True
   dps11_12adj    : 0.8
-  dps4_11l       : [20.0,  18.0,  16.0,  1.0]
-  dps4_11h       : [18.0,  16.0,  14.0,  1.0]
-  dps4_11m1      : [18.0,  16.0,   2.0,  1.0]
-  dps4_11m2      : [0.0,   0.0,   0.0,  0.0]
-  dps4_11m3      : [0.0,   0.0,   0.0,  0.0]
-  dps4_11_pfm    : 1.0
-  bt_11_bnds3    : [230.0,  0.0,   0.0, 245.0]
 
 Polar_Night_Snow:
   11-12um_Cirrus_Test:
@@ -407,21 +426,24 @@ Polar_Night_Snow:
     high_ice: [-21.0 -20.0, -19.0, 1.0]  # pn_7_11hw
     bt11_bounds: [220.0, 245.0, 255.0, 265.0]  # bt11_bnds2
   Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
-  pn_11_4l       : [2.00, 1.70, 1.40, 1.0]
-  pn_11_4h       : [0.60,  0.30,  0.00, 1.0]
-  pn_11_4m1      : [1.70,  0.30, 0.300, 1.0]
-  pn_11_4m2      : [0.00,  0.00, 0.00, 0.0]
-  pn_11_4m3      : [0.00,  0.00, 0.00, 0.0]
-  pns_11_4_pfm   : 1.0
-  pn_11_4bl      : [-3.00, -2.50, -2.00, 1.0]
-  pn_11_4bh      : [-3.00, -2.50, -2.00, 1.0]
-  pn_11_4bm1     : [-2.50, -2.50, -0.50, 1.0]
-  pn_11_4bm2     : [0.00,  0.00, 0.00, 0.0]
-  pn_11_4bm3     : [0.00,  0.00, 0.00, 0.0]
+  11-4um_BT_Difference_Test:
+    top:
+      low: [2.00, 1.70, 1.40, 1.0]
+      mid1: [1.70, 0.30, 0.300, 1.0]
+      mid2: [0.00, 0.00, 0.00, 0.0]
+      mid3: [0.00, 0.00, 0.00, 0.0]
+      high: [0.60, 0.30, 0.00, 1.0]
+    bottom:
+      low: [-3.00, -2.50, -2.00, 1.0]
+      mid1: [-2.50, -2.50, -0.50, 1.0]
+      mid2: [0.00, 0.00, 0.00, 0.0]
+      mid3: [0.00, 0.00, 0.00, 0.0]
+      high: [-3.00, -2.50, -2.00, 1.0]
+    bt_thr: 230.0  # pnbt3
+    tpw_thr: 0.2   # pntpw
+    perform: True
   pn11_12adj     : 0.8
   pnbt2          : 270.0
-  pnbt3          : 230.0
-  pntpw          : 0.2
 
 Polar_Day_Ocean:
   11um_Test:
@@ -491,9 +513,13 @@ Polar_Night_Ocean:
   11-4um_Oceanic_Stratus_Test:
     thr: [1.25, 1.0, 0.25, 1.0, 1.0]
     perform: True
-  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
-  pno86_73       : [14.0,  15.0,  16.0,  1.0, 1.0]
-  11um_Variability_Test: [3.0,   6.0,   7.0,   1.0, 1.0]
+  Water_Vapor_Cloud_Test:
+    thr: [14.0, 15.0, 16.0, 1.0, 1.0]
+    perform: True
+  11um_Variability_Test:
+    thr: [3.0, 6.0, 7.0, 1.0, 1.0]
+    variability: 040
+    perform: True
   11-4um_BT_Difference_Test:
     coeffs: [-0.7093, 0.1128, -0.1567]
     corr: 0.0                 # pno_intadj
@@ -501,6 +527,7 @@ Polar_Night_Ocean:
     midpt_coeff: [-2.5, 2.5]  # pno11_4mdad
     hicut_coeff: [-1.5, 1.5]  # pno11_4hiad
     perform: True             # pno11_4_pfm
+  Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
 
 
 Day_Snow:
@@ -515,10 +542,17 @@ Day_Snow:
   1.38um_High_Cloud_Test:
     thr: [0.060, 0.0525, 0.045, 1.0, 1.0]
     perform: True
+  11-4um_BT_Difference_Test:
+    low: [20.0, 18.0, 16.0, 1.0]
+    mid1: [18.0, 16.0, 2.0, 1.0]
+    mid2: [0.0, 0.0, 0.0, 0.0]
+    mid3: [0.0, 0.0, 0.0, 0.0]
+    high: [18.0, 16.0, 14.0, 1.0]
+    bt_11_bounds: [230.0, 0.0, 0.0, 245.0]
+    perform: True
   ds11_12adj     : 0.8
   ds11_12lcmult  : 0.3
   ds11_12hcmult  : 0.3
-  ds4_11_pfm     : 1.0
 
 Night_Snow:
   11-12um_Cirrus_Test:
@@ -528,11 +562,21 @@ Night_Snow:
     bt1: 270.0
     perform: True
   nsbt2          : 270.0
-  nsbt3          : 230.0
-  ns11_4lo       : [0.70,  0.60,  0.50,  1.0, 1.0]
   4-12um_BTD_Thin_Cirrus_Test:
     thr: [4.50,  4.00,  3.50,  1.0, 1.0]
     perform: True
+  11-4um_BT_Difference_Test:
+    thr: [0.70, 0.60, 0.50, 1.0, 1.0]
+    bottom:
+      low: [20.0, 18.0, 16.0, 1.0]
+      mid1: [18.0, 16.0, 2.0, 1.0]
+      mid2: [0.0, 0.0, 0.0, 0.0]
+      mid3: [0.0, 0.0, 0.0, 0.0]
+      high: [18.0, 16.0, 14.0, 1.0]
+    bt_11_bounds: [230.0, 0.0, 0.0, 245.0]
+    bt_thr: 230.0
+    tpw_thr: 0.2
+    perform: True
   7.3-11um_BTD_Mid_Level_Cloud_Test:
     low: [-1.00, 0.00, 1.00, 1.0, 1.0]  # pn_7_11l
     mid1: [0.00,  -4.50, -1.00, 1.0]  # pn_7_11m1
@@ -545,11 +589,10 @@ Night_Snow:
     mid3_ice: [-16.50, -20.0, -1.00, 1.0]  # pn_7_11m3w
     high_ice: [-21.0 -20.0, -19.0, 1.0]  # pn_7_11hw
     bt11_bounds: [220.0, 245.0, 255.0, 265.0]  # bt11_bnds2
+    perform: False
   CO2_High_Clouds_Test: [222.0, 224.0, 226.0, 1.0, 1.0]
   Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]
   ns11_12adj     : 0.8
-  nstpw          : 0.2
-  ns_7_11_pfm    : 1.0
 
 Antarctic_Day:
   Water_Vapor_High_Clouds_Test: [215.0, 220.0, 225.0, 1.0, 1.0]