diff --git a/modules/util/viirs_l1b_l2.py b/modules/util/viirs_l1b_l2.py
index 949e7f078f4559b358dd380542c62459d392b941..5a21eff5c55be3e4c8e73d6668374ed32101a0af 100644
--- a/modules/util/viirs_l1b_l2.py
+++ b/modules/util/viirs_l1b_l2.py
@@ -45,39 +45,42 @@ ds_range.update({'cloud_fraction': 'actual_range'})
 
 emis_params = ['temp_10_4um_nom', 'temp_11_0um_nom', 'temp_12_0um_nom', 'temp_13_3um_nom', 'temp_3_9um_nom',
                'temp_6_7um_nom']
-
 # refl_params = ['refl_0_47um_nom', 'refl_0_65um_nom', 'refl_0_86um_nom', 'refl_1_38um_nom', 'refl_1_60um_nom']
-
 # data_params = refl_params + emis_params
 # data_params = emis_params
 
-# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'cloud_fraction']
-l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cld_opd_dcomp']
-# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cloud_probability']
-# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cloud_fraction']
+#target_param = 'cloud_probability'
+target_param = 'cld_opd_dcomp'
+
+# group_name = ''
+group_name = 'super/'
+l2_params = [group_name+'temp_11_0um_nom', group_name+'temp_12_0um_nom', group_name+'refl_0_65um_nom', group_name+target_param]
+
+# solzen_name = group_name + 'solar_zenith_angle'
+solzen_name = group_name + 'solar_zenith'
 
 label_params = l2_params
 data_params = l2_params
 
 
 def keep_tile(param_s, tile):
-    k = param_s.index('cloud_fraction')
-    grd_k = tile[k, ].flatten()
-    keep = np.invert(np.isnan(grd_k))
-    total = np.sum(keep)
-    if total == 0:
-        return False
-    np.where(np.invert(keep), 0, grd_k)
-
-    keep = np.where(keep, np.invert(np.logical_and(0.1 < grd_k, grd_k < 0.9)), False)
-    if np.sum(keep)/total > 0.75:
-        return True
+    k = param_s.index(group_name + target_param)
+    grd_k = tile[k, ].copy()
+
+    if target_param == 'cloud_probability':
+        grd_k = process_cld_prob_(grd_k)
+    elif target_param == 'cld_opd_dcomp':
+        grd_k = process_cld_opd_(grd_k)
+
+    if grd_k is not None:
+        tile[k, ] = grd_k
+        return tile
     else:
-        return False
+        return None
 
 
 def process_cld_prob(param_s, tile):
-    k = param_s.index('cloud_probability')
+    k = param_s.index(group_name + 'cloud_probability')
     grd_k = tile[k, ].copy()
     grd_k = process_cld_prob_(grd_k)
     if grd_k is not None:
@@ -100,7 +103,7 @@ def process_cld_prob_(grd_k):
 
 
 def process_cld_opd(param_s, tile):
-    k = param_s.index('cld_opd_dcomp')
+    k = param_s.index(group_name + 'cld_opd_dcomp')
     grd_k = tile[k, ].copy()
     grd_k = process_cld_opd_(grd_k)
     if grd_k is not None:
@@ -222,7 +225,8 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi
     num_lines = data_h5f[param_name].shape[0]
     num_pixels = data_h5f[param_name].shape[1]
 
-    solzen = get_grid_values(data_h5f, 'solar_zenith_angle', 0, 0, None, num_lines, num_pixels)
+    if day_night != 'BOTH':
+        solzen = get_grid_values(data_h5f, solzen_name, 0, 0, None, num_lines, num_pixels)
 
     grd_s = []
     for param in param_s:
@@ -261,7 +265,7 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi
                 continue
 
             nda = data[:, j_a:j_b, i_a:i_b]
-            nda = process_cld_opd(param_s, nda)
+            nda = keep_tile(param_s, nda)
             if nda is not None:
                 train_tiles.append(nda)
 
@@ -280,7 +284,7 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi
                 continue
 
             nda = data[:, j_a:j_b, i_a:i_b]
-            nda = process_cld_opd(param_s, nda)
+            nda = keep_tile(param_s, nda)
             if nda is not None:
                 valid_tiles.append(nda)