diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java
index c72c5f633a233e64b4be7cc568bc5a6b4f32b875..45a5e060694422aa26c035dcfcc635eb3ad33d83 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonEtAl_2014.java
@@ -33,8 +33,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <p>For the 2023 NSHM, implementations were added that support CyberShake
  * informed modifications to basin amplification terms. This is a
- * region-specific behavior and is managed through the use of flags that are
- * passed in with {@code GmmInput}.
+ * region-specific behavior and is managed through the use of a gmm-region
+ * defined in the {@code data/site} directory of recent {@code nshm-conus}
+ * models.
  *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
@@ -157,8 +158,8 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel {
     return coeffs.imt;
   }
 
-  /* Use USGS deep basin amplification model. */
-  boolean basin() {
+  /* Use USGS deep basin, long period amplification model. */
+  boolean usgsBasin() {
     return false;
   }
 
@@ -174,13 +175,13 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel {
 
   @Override
   public LogicTree<GroundMotion> calc(GmmInput in) {
-    return calc(coeffs, in, basin(), vsInferred(), cybershake());
+    return calc(coeffs, in, usgsBasin(), vsInferred(), cybershake());
   }
 
   private static final LogicTree<GroundMotion> calc(
       Coefficients c,
       GmmInput in,
-      boolean basin,
+      boolean usgsBasin,
       boolean vsInferred,
       boolean cybershake) {
 
@@ -280,7 +281,7 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel {
     // Soil Depth Model -- Equation 17
     double f10 = calcSoilTerm(c, vs30, in.z1p0, cybershake);
 
-    if (basin) {
+    if (usgsBasin) {
       f10 *= GmmUtils.deltaZ1scale(c.imt, in.z1p0);
     }
 
@@ -420,7 +421,7 @@ public class AbrahamsonEtAl_2014 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
index 4f0a28078cbae8043a2a91ecf6f86b9657eec7fb..f64f389cea8418d52580d437ac7ad51fa99e3c6e 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AbrahamsonGulerce_2020.java
@@ -50,7 +50,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <ul><li>Implementation currently supports a global median model, as well as
  * Alaska and Cascadia regional models. Following the Earthquake Spectra version
  * this implementation provides epistemic uncertainty on the median ground
- * motion for the Alaska and Cascadia models, but not the global model.</li>
+ * motion for the Alaska and Cascadia models. Epistemic uncertainty for the
+ * global model was provided via personal communication with N. Abrahamson
+ * 5/11/23.</li>
  *
  * <li>Coefficients for 0.01s are used for PGA.</li>
  *
@@ -58,9 +60,8 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <li>Mean model does not include aftershock term.</li>
  *
- * <li>{@code zTor} is interpreted as hypocentral depth and is only used for
- * slab events; it is limited to 120 km, consistent with other subduction
- * GMMs.</li>
+ * <li>{@code zTor} is only used for slab events and it is limited to 120 km,
+ * consistent with other subduction GMMs.</li>
  *
  * <li>Basin scaling only amplifies long period ground motion when z2.5 is
  * greater than the reference value computed from Vs30. If z2.5 is supplied, the
@@ -87,6 +88,21 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Component:</b> average horizontal (RotD50)
  *
  * @author U.S. Geological Survey
+ * @see Gmm#AG_20_GLOBAL_INTERFACE
+ * @see Gmm#AG_20_GLOBAL_INTERFACE_AK_ADJUSTED
+ * @see Gmm#AG_20_GLOBAL_SLAB
+ * @see Gmm#AG_20_CASCADIA_INTERFACE
+ * @see Gmm#AG_20_CASCADIA_INTERFACE_BASIN
+ * @see Gmm#AG_20_CASCADIA_INTERFACE_ADJUSTED
+ * @see Gmm#AG_20_CASCADIA_INTERFACE_ADJUSTED_BASIN
+ * @see Gmm#AG_20_CASCADIA_SLAB
+ * @see Gmm#AG_20_CASCADIA_SLAB_BASIN
+ * @see Gmm#AG_20_CASCADIA_SLAB_ADJUSTED
+ * @see Gmm#AG_20_CASCADIA_SLAB_ADJUSTED_BASIN
+ * @see Gmm#AG_20_ALASKA_INTERFACE
+ * @see Gmm#AG_20_ALASKA_INTERFACE_ADJUSTED
+ * @see Gmm#AG_20_ALASKA_SLAB
+ * @see Gmm#AG_20_ALASKA_SLAB_ADJUSTED
  */
 public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
 
@@ -229,7 +245,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -254,11 +270,11 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     double pgaRock = 0.0;
     if (in.vs30 < coeffs.vlin) {
       pgaRock = exp(calcMean(
-          coeffsPGA, slab(), basin(), adjusted(), akBiasAdjusted(),
+          coeffsPGA, slab(), usgsBasin(), adjusted(), akBiasAdjusted(),
           0.0, in.Mw, in.rRup, in.zTor, VS30_ROCK, Double.NaN));
     }
     double μ = calcMean(
-        coeffs, slab(), basin(), adjusted(), akBiasAdjusted(),
+        coeffs, slab(), usgsBasin(), adjusted(), akBiasAdjusted(),
         pgaRock, in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5);
 
     double σ = calcSigma(coeffs, coeffsPGA, pgaRock, in.rRup, in.vs30);
@@ -273,7 +289,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
   private static double calcMean(
       Coefficients c,
       boolean slab,
-      boolean basin,
+      boolean usgsBasin,
       boolean adjust,
       boolean akBiasAdjusted,
       double pgaRock,
@@ -329,7 +345,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
       double lnzPrime = calcLnzPrime(z2p5m, exp(lnZ2p5ref));
 
       if (lnzPrime > 0) {
-        if (basin) {
+        if (usgsBasin) {
           // USGS T & shallow Z scaling; no need below b/c z2p5>6
           lnzPrime *= GmmUtils.deltaZ25scale(c.imt, z2p5);
         }
@@ -544,7 +560,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -557,7 +573,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -609,7 +625,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -622,7 +638,7 @@ public abstract class AbrahamsonGulerce_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AtkinsonMacias_2009.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AtkinsonMacias_2009.java
index b05ed6f3f701a6afc40ae9bd4cc95c5e7ba536d2..815f72a4b1c4c85c20d9f5e053acfb581999efc5 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/AtkinsonMacias_2009.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/AtkinsonMacias_2009.java
@@ -52,22 +52,28 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Implementation notes:</b><ul>
  *
  * <li>NSHM fortran implementation converts 0.13Hz to 7.7s; this implementation
- * uses 7.5s instead.</li>
+ * uses 7.5s instead.
  *
  * <li>Model uses a magnitude dependent depth term and so does not impose 20km
- * hypocentral depth as other subduction interface models do.</li>
+ * hypocentral depth as other subduction interface models do.
  *
  * <li>Support for spectral period 0.01s is provided using the same coefficients
- * as PGA.</li>
+ * as PGA.
  *
  * <li>Support for spectral periods 0.02s, 0.03s, 0.075s, 0.15s, 0.25s, and 1.5s
  * is provided via interpolation of ground motion and sigma of adjacent periods
- * for which there are coefficients.</li>
+ * for which there are coefficients.
  *
  * <li>Support for basin effects is provided per documentation of the 2018
  * Conterminous U.S. NSHM update (<a
- * href="https://doi.org/10.1177%2F8755293019878199">Petersen et al.,
- * 2020</a>).</li></ul>
+ * href="https://doi.org/10.1177%2F8755293019878199">Petersen et al., 2020</a>).
+ * Implementations include USGS developed depth tapering and restriction to long
+ * periods ({@code T &geq; 1 s}), as well as a Seattle-specific basin
+ * implementation that makes further adjustments based on M9 simulations for
+ * interface events at sites over the deepest depths ({@code Z2.5 > 6 km}) and
+ * at long periods ({@code T &qeq; 2 s}). These are region-specific behaviors
+ * and are managed through the use of a gmm-region defined in the
+ * {@code data/site} directory of recent {@code nshm-conus} models.</ul>
  *
  * <p><b>Reference:</b> Atkinson, G.M. and Macias, D.M., 2009, Predicted ground
  * motions for great interface earthquakes in the Cascadia subduction zone:
@@ -81,6 +87,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * @author U.S. Geological Survey
  * @see Gmm#AM_09_INTERFACE
  * @see Gmm#AM_09_INTERFACE_BASIN
+ * @see Gmm#AM_09_INTERFACE_BASIN_M9
+ * @see Gmm#AM_09_INTERFACE_BASIN_CONUS_2018
+ * @see Gmm#AM_09_INTERFACE_CONUS_2014
  */
 public class AtkinsonMacias_2009 implements GroundMotionModel {
 
@@ -157,7 +166,7 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -191,7 +200,7 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
 
     /* Add (possibly depth-tapered) CB14 deep basin term or M9 adjustment. */
     double fb = 0.0;
-    if (basin()) {
+    if (usgsBasin()) {
       fb = cb14.deepBasinScaling(in.z2p5);
       if (m9() && in.z2p5 > 6.0 && (coeffs.imt.isSA() && coeffs.imt.period() > 1.9)) {
         fb = log(2.0); // M9 scaling
@@ -232,7 +241,7 @@ public class AtkinsonMacias_2009 implements GroundMotionModel {
     }
 
     @Override
-    final boolean basin() {
+    final boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BcHydro_2012.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BcHydro_2012.java
index 747e6921a453c3c73d3bc64df432665ba2520e7a..456da537c5b580fccac26e860ff4f0ab5840587f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BcHydro_2012.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BcHydro_2012.java
@@ -50,40 +50,46 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <li>Added coefficients for 0.02s that are identical to PGA. 0.02s ground
  * motions had previously had been computed via interpolation between 0.01s and
- * 0.05s.</li>
+ * 0.05s.
  *
- * <li>Slab {@code zTor} adjusted from 125 km to 120 km.</li>
+ * <li>Slab {@code zTor} adjusted from 125 km to 120 km.
  *
  * <li>Changed interpolation of the {@code ΔC1} magnitude-scaling break term to
  * log spectral periods and linear values; prior implementation was linear;
  * change affects the following spectral periods: 0.4s, 0.6s (disabled), 0.75s,
- * 1.5s, and 2.5s wherein the {@code ΔC1} value has decreased by 0.01</li></ul>
+ * 1.5s, and 2.5s wherein the {@code ΔC1} value has decreased by 0.01.</ul>
  *
  * <p><b>Implementation notes:</b><ul>
  *
- * <li>Forearc/backarc term is considered.</li>
+ * <li>Forearc/backarc term is considered.
  *
  * <li>{@code zTor} is interpreted as hypocentral depth and is only used for
  * slab events; it is limited to 120 km, consistent with other subduction
- * models.</li>
+ * models.
  *
  * <li>Only the middle branch of the {@code ΔC1} magnitude-scaling break term
  * for interface events is considered; the {@code ΔC1} term for slab events is
- * fixed at -0.3.</li>
+ * fixed at -0.3.
  *
  * <li>Support for spectral period 0.01s is provided using the same coefficients
- * as bounding periods PGA and 0.02s.</li>
+ * as bounding periods PGA and 0.02s.
  *
  * <li>Support for spectral periods 0.03s is provided via interpolation of
- * ground motion and sigma of adjacent periods.</li></li>
+ * ground motion and sigma of adjacent periods.
  *
  * <li>Support for basin effects is provided per documentation of the 2018
  * Conterminous U.S. NSHM update (<a
- * href="https://doi.org/10.1177%2F8755293019878199">Petersen et al.,
- * 2020</a>).</li>
+ * href="https://doi.org/10.1177%2F8755293019878199">Petersen et al., 2020</a>).
+ * Implementations include USGS developed depth tapering and restriction to long
+ * periods ({@code T &geq; 1 s}), as well as a Seattle-specific basin
+ * implementation that makes further adjustments based on M9 simulations for
+ * interface events at sites over the deepest depths ({@code Z2.5 > 6 km}) and
+ * at long periods ({@code T &qeq; 2 s}). These are region-specific behaviors
+ * and are managed through the use of a gmm-region defined in the
+ * {@code data/site} directory of recent {@code nshm-conus} models.
  *
  * <li>Support for PGV is provided via the Abrahamson &amp; Bhasin (2020)
- * conditional PGV model for crustal earthquakes.</li></ul>
+ * conditional PGV model for crustal earthquakes.</ul>
  *
  * <p><b>Reference:</b> Abrahamson, N., Gregor, N., and Addo, K., 2016, BC Hydro
  * ground motion prediction equations for subduction earthquakes: Earthquake
@@ -102,6 +108,7 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * @see Gmm#BCHYDRO_12_INTERFACE
  * @see Gmm#BCHYDRO_12_SLAB
  * @see Gmm#BCHYDRO_12_INTERFACE_BASIN
+ * @see Gmm#BCHYDRO_12_INTERFACE_BASIN_M9
  * @see Gmm#BCHYDRO_12_SLAB_BASIN
  * @see Gmm#BCHYDRO_12_INTERFACE_BACKARC
  * @see Gmm#BCHYDRO_12_SLAB_BACKARC
@@ -198,7 +205,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -230,7 +237,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
         calcMean(coeffs, slab(), pgaRock, in.Mw, in.rRup, in.zTor, in.vs30, backarc());
 
     /* Add (possibly depth-tapered) CB14 deep basin term. */
-    if (basin()) {
+    if (usgsBasin()) {
       μAsk += cb14.deepBasinScaling(in.z2p5);
     }
 
@@ -319,7 +326,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -345,7 +352,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
 
@@ -393,7 +400,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -406,7 +413,7 @@ public abstract class BcHydro_2012 implements GroundMotionModel {
     }
 
     @Override
-    final boolean basin() {
+    final boolean usgsBasin() {
       return true;
     }
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java
index fbea3a55a8a15667405ce8bdf70165966fbf1152..ace036438803e1150d7413b64d60b3fd3fa8c678 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/BooreEtAl_2014.java
@@ -31,8 +31,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <p>For the 2023 NSHM, implementations were added that support CyberShake
  * informed modifications to basin amplification terms. This is a
- * region-specific behavior and is managed through the use of flags that are
- * passed in with {@code GmmInput}.
+ * region-specific behavior and is managed through the use of a gmm-region
+ * defined in the {@code data/site} directory of recent {@code nshm-conus}
+ * models.
  *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
@@ -141,8 +142,8 @@ public class BooreEtAl_2014 implements GroundMotionModel {
     return coeffs.imt;
   }
 
-  /* Use USGS deep basin amplification model. */
-  boolean basin() {
+  /* Use USGS deep basin, long period amplification model. */
+  boolean usgsBasin() {
     return false;
   }
 
@@ -153,17 +154,20 @@ public class BooreEtAl_2014 implements GroundMotionModel {
 
   @Override
   public LogicTree<GroundMotion> calc(GmmInput in) {
-    return calc(coeffs, coeffsPGA, in, basin(), cybershake());
+    return calc(coeffs, coeffsPGA, in, usgsBasin(), cybershake());
   }
 
   private static final LogicTree<GroundMotion> calc(
-      Coefficients c, Coefficients cPGA,
-      GmmInput in, boolean basin, boolean cybershake) {
+      Coefficients c,
+      Coefficients cPGA,
+      GmmInput in,
+      boolean usgsBasin,
+      boolean cybershake) {
 
     FaultStyle style = GmmUtils.rakeToFaultStyle_NSHMP(in.rake);
     double pgaRock = calcPGArock(cPGA, in.Mw, in.rJB, style);
 
-    double μ = calcMean(c, style, pgaRock, in, basin, cybershake);
+    double μ = calcMean(c, style, pgaRock, in, usgsBasin, cybershake);
     double σ = calcStdDev(c, in);
 
     return GroundMotions.createTree(μ, σ);
@@ -315,7 +319,7 @@ public class BooreEtAl_2014 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java
index 2119d48d8ffb6c0a4435e8efe048dd211c4c419f..67b5f3145f19086ce9d3d735550434e0889126c0 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/CampbellBozorgnia_2014.java
@@ -39,8 +39,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <p>For the 2023 NSHM, implementations were added that support CyberShake
  * informed modifications to basin amplification terms. This is a
- * region-specific behavior and is managed through the use of flags that are
- * passed in with {@code GmmInput}.
+ * region-specific behavior and is managed through the use of a gmm-region
+ * defined in the {@code data/site} directory of recent {@code nshm-conus}
+ * models.
  *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
@@ -57,10 +58,10 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Component:</b> RotD50 (average horizontal)
  *
  * @author U.S. Geological Survey
+ * @see Gmm#CB_14_BASE
  * @see Gmm#CB_14
  * @see Gmm#CB_14_BASIN
  * @see Gmm#CB_14_CYBERSHAKE
- * @see Gmm#CB_14_CYBERSHAKE_ON
  */
 public class CampbellBozorgnia_2014 implements GroundMotionModel {
 
@@ -163,8 +164,8 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
     return coeffs.imt;
   }
 
-  /* Use USGS deep basin amplification model. */
-  boolean basin() {
+  /* Use USGS deep basin, long period amplification model. */
+  boolean usgsBasin() {
     return false;
   }
 
@@ -175,7 +176,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
 
   @Override
   public LogicTree<GroundMotion> calc(GmmInput in) {
-    return calc(coeffs, coeffsPGA, in, in.vs30, in.z2p5, basin(), cybershake());
+    return calc(coeffs, coeffsPGA, in, in.vs30, in.z2p5, usgsBasin(), cybershake());
   }
 
   private static LogicTree<GroundMotion> calc(
@@ -184,7 +185,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
       GmmInput in,
       double vs30,
       double z2p5,
-      boolean basin,
+      boolean usgsBasin,
       boolean cybershake) {
 
     FaultStyle style = GmmUtils.rakeToFaultStyle_NSHMP(in.rake);
@@ -193,14 +194,14 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
     // TODO PGA short period so basin and cyber could be false
     // same below for short periods
     double pgaRock = (vs30 < c.k1)
-        ? exp(calcMean(cPGA, style, 1100.0, 0.398, 0.0, in, basin, false))
+        ? exp(calcMean(cPGA, style, 1100.0, 0.398, 0.0, in, usgsBasin, false))
         : 0.0;
 
-    double μ = calcMean(c, style, vs30, z2p5, pgaRock, in, basin, cybershake);
+    double μ = calcMean(c, style, vs30, z2p5, pgaRock, in, usgsBasin, cybershake);
 
     // prevent SA<PGA for short periods
     if (SHORT_PERIODS.contains(c.imt)) {
-      double pgaMean = calcMean(cPGA, style, vs30, z2p5, pgaRock, in, basin, false);
+      double pgaMean = calcMean(cPGA, style, vs30, z2p5, pgaRock, in, usgsBasin, false);
       μ = max(μ, pgaMean);
     }
 
@@ -235,7 +236,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
       double z2p5,
       double pgaRock,
       GmmInput in,
-      boolean basinAmpOnly,
+      boolean usgsBasin,
       boolean cybershake) {
 
     double Mw = in.Mw;
@@ -313,7 +314,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
         : (c.c11 + c.k2 * N) * log(vsk1);
 
     // Basin Response term -- Equation 20
-    double Fsed = basinResponseTerm(c, vs30, z2p5, basinAmpOnly, cybershake);
+    double Fsed = basinResponseTerm(c, vs30, z2p5, usgsBasin, cybershake);
 
     // Hypocentral Depth term -- Equations 21, 22, 23
     double zHyp = in.zHyp;
@@ -342,7 +343,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
       Coefficients c,
       double vs30,
       double z2p5,
-      boolean basin,
+      boolean usgsBasin,
       boolean cybershake) {
 
     /* Vs30 based depth model */
@@ -358,7 +359,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
     // TODO revisit; CSIM is also modifying the zRef term outside the
     // zTerm depth scaling; doesn't this introduce a step function jump
     // in the basin term at 1km z2.5 depth?
-    if (basin) {
+    if (usgsBasin) {
       if (GmmUtils.checkBasin(c.imt, z2p5, GmmUtils.BASIN_Z2P5_UPPER)) {
         double zScale = GmmUtils.basinScale(
             z2p5,
@@ -469,7 +470,7 @@ public class CampbellBozorgnia_2014 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java
index 5f7cffb429af96712b0bbc8639ac3a6958838ccd..fbb1ae41aec6fb05c64e454549d10b135c58c0b3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ChiouYoungs_2014.java
@@ -35,8 +35,9 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <p>For the 2023 NSHM, implementations were added that support CyberShake
  * informed modifications to basin amplification terms. This is a
- * region-specific behavior and is managed through the use of flags that are
- * passed in with {@code GmmInput}.
+ * region-specific behavior and is managed through the use of a gmm-region
+ * defined in the {@code data/site} directory of recent {@code nshm-conus}
+ * models.
  *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
@@ -55,10 +56,11 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Component:</b> RotD50 (average horizontal)
  *
  * @author U.S. Geological Survey
+ * @see Gmm#CY_14_BASE
  * @see Gmm#CY_14
  * @see Gmm#CY_14_BASIN
  * @see Gmm#CY_14_CYBERSHAKE
- * @see Gmm#CY_14_CYBERSHAKE_ON
+ * @see Gmm#CY_14_VS30_MEASURED
  */
 public class ChiouYoungs_2014 implements GroundMotionModel {
 
@@ -158,8 +160,8 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
     return coeffs.imt;
   }
 
-  /* Use USGS deep basin amplification model. */
-  boolean basin() {
+  /* Use USGS deep basin, long period amplification model. */
+  boolean usgsBasin() {
     return false;
   }
 
@@ -175,13 +177,13 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
 
   @Override
   public LogicTree<GroundMotion> calc(GmmInput in) {
-    return calc(coeffs, in, basin(), vsInferred(), cybershake());
+    return calc(coeffs, in, usgsBasin(), vsInferred(), cybershake());
   }
 
   private static final LogicTree<GroundMotion> calc(
       Coefficients c,
       GmmInput in,
-      boolean basin,
+      boolean usgsBasin,
       boolean vsInferred,
       boolean cybershake) {
 
@@ -189,7 +191,7 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
     double saRef = calcSAref(c, in);
     double soilNonLin = calcSoilNonLin(c, in.vs30);
 
-    double μ = calcMean(c, in.vs30, in.z1p0, soilNonLin, saRef, basin, cybershake);
+    double μ = calcMean(c, in.vs30, in.z1p0, soilNonLin, saRef, usgsBasin, cybershake);
     double σ = calcStdDev(c, in.Mw, vsInferred, soilNonLin, saRef);
 
     return GroundMotions.createTree(μ, σ);
@@ -253,8 +255,14 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
   }
 
   // Mean ground motion model -- Equation 12
-  private static final double calcMean(Coefficients c, double vs30,
-      double z1p0, double snl, double saRef, boolean basin, boolean cybershake) {
+  private static final double calcMean(
+      Coefficients c,
+      double vs30,
+      double z1p0,
+      double snl,
+      double saRef,
+      boolean usgsBasin,
+      boolean cybershake) {
 
     // Soil effect: linear response
     double sl = c.φ1 * min(log(vs30 / 1130.0), 0.0);
@@ -268,7 +276,7 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
         ? c.φ5cy * (1.0 - exp(-dZ1 / c.φ6cy)) + CY_CSIM
         : c.φ5 * (1.0 - exp(-dZ1 / PHI6));
 
-    if (basin) {
+    if (usgsBasin) {
       rkdepth *= GmmUtils.deltaZ1scale(c.imt, z1p0);
     }
 
@@ -344,7 +352,7 @@ public class ChiouYoungs_2014 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
index ebcc629d87cd10fc35fab899c18488a698c55382..825adffd4afad726441a7edc460b30cc5c8d1bd3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/KuehnEtAl_2020.java
@@ -36,11 +36,12 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <ul><li>Implementations are provided for the global model as well as Cascadia
  * and Alaska regionalized models. Implementations include USGS developed depth
  * tapering and restriction to long periods ({@code T &geq; 1 s}), as well as a
- * Seattle-specific basin implementation that makes further adjustments based on
- * M9 simulations for interface events at sites over the deepest depths
- * ({@code Z2.5 > 6 km}) and at long periods ({@code T &qeq; 2 s}). Specialized
- * flags are now supported as GMM inputs and these may also trigger
- * Seattle-specific behavior in the Cascadia interface implementation.
+ * Seattle-specific basin implementation that makes further adjustments to
+ * interface subclasses based on M9 simulations for interface events at sites
+ * over the deepest depths ({@code Z2.5 > 6 km}) and at long periods
+ * ({@code T &qeq; 2 s}). These are region-specific behaviors and are managed
+ * through the use of a gmm-region defined in the {@code data/site} directory of
+ * recent {@code nshm-conus} models.
  *
  * <li>Simplified epistemic uncertainty tables for the model were obtained from
  * <a href="https://github.com/nikuehn/KBCG20/tree/master/UNCERTAINTY">
@@ -50,13 +51,6 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * if {@code z}-values are supplied then the general Cascadia basin term is
  * used.
  *
- * <li>For the 2023 NSHM, implementations were added that support Seattle M9
- * interface simulation informed modifications to basin amplification terms.
- * This is a region-specific behavior and is managed through the use of flags
- * that are passed in with {@code GmmInput}. Note that the Cascadia model
- * includes specialized behavior (no M9) by default for both slab and
- * interface.</ul>
- *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
  * desired {@link Imt}.
@@ -68,12 +62,23 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Component:</b> average horizontal (RotD50)
  *
  * @author U.S. Geological Survey
+ * @see Gmm#KBCG_20_GLOBAL_INTERFACE
+ * @see Gmm#KBCG_20_GLOBAL_INTERFACE_AK_ADJUSTED
+ * @see Gmm#KBCG_20_GLOBAL_SLAB
+ * @see Gmm#KBCG_20_CASCADIA_INTERFACE
+ * @see Gmm#KBCG_20_CASCADIA_INTERFACE_BASIN
+ * @see Gmm#KBCG_20_CASCADIA_INTERFACE_SEATTLE_BASIN
+ * @see Gmm#KBCG_20_CASCADIA_INTERFACE_SEATTLE_BASIN_M9
+ * @see Gmm#KBCG_20_CASCADIA_SLAB
+ * @see Gmm#KBCG_20_CASCADIA_SLAB_BASIN
+ * @see Gmm#KBCG_20_CASCADIA_SLAB_SEATTLE_BASIN
+ * @see Gmm#KBCG_20_ALASKA_INTERFACE
+ * @see Gmm#KBCG_20_ALASKA_SLAB
  */
 
 public abstract class KuehnEtAl_2020 implements GroundMotionModel {
 
   /*
-   *
    * Developer notes:
    *
    * (Some of the issues noted below will likely be cleared up when an
@@ -153,7 +158,6 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
 
   private static final class Coefficients {
     final Imt imt;
-    final SubductionZone zone;
 
     final double θ1;
     final double θ2;
@@ -191,8 +195,8 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
         CoefficientContainer ccBias,
         SubductionZone zone,
         boolean slab) {
+
       this.imt = imt;
-      this.zone = zone;
       Map<String, Double> coeffs = cc.get(imt);
 
       θ3 = coeffs.get("theta_3");
@@ -283,7 +287,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -310,13 +314,13 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
         in.Mw, in.rRup, in.zTor));
 
     double μ = calcMean(
-        coeffs, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
+        coeffs, slab(), usgsBasin(), seattle(), m9(), akBiasAdjusted(),
         in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
 
     // short periods can't be lower than PGA
     if (coeffs.imt.isSA() && coeffs.imt.period() <= 0.1) {
       double μPga = calcMean(
-          coeffsPGA, slab(), basin(), seattle(), m9(), akBiasAdjusted(),
+          coeffsPGA, slab(), usgsBasin(), seattle(), m9(), akBiasAdjusted(),
           in.Mw, in.rRup, in.zTor, in.vs30, in.z2p5, pgaRef);
       μ = max(μ, μPga);
     }
@@ -360,7 +364,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
   private static double calcMean(
       Coefficients c,
       boolean slab,
-      boolean basin,
+      boolean usgsBasin,
       boolean seattle,
       boolean m9,
       boolean akBiasAdjusted,
@@ -376,7 +380,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     double fDepth = depthTerm(c, zTor);
     double fAtten = arcCrossingTerm(c, rRup);
     double fSite = siteAmpTerm(c, vs30, pgaRef);
-    double fBasin = basinTerm(c, vs30, z2p5, slab, basin, seattle, m9);
+    double fBasin = basinTerm(c, vs30, z2p5, slab, usgsBasin, seattle, m9);
     double μ = c.θ1 + fMag + fGeom + fDepth + fAtten + fSite + fBasin;
 
     if (!slab && akBiasAdjusted) {
@@ -676,7 +680,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -729,7 +733,7 @@ public abstract class KuehnEtAl_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
index 2505d3c20bd9a468eb2ab483051323e61361236e..bd2bfe915224c1a1df5c7ff1ed7bbf452cb4261b 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ParkerEtAl_2020.java
@@ -34,25 +34,20 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  *
  * <p><b>Implementation notes:</b>
  *
- * <ul><li>Model currently uses {@code zTor} for intraslab depth scaling but
- * authors recommend {@code zHyp}.
+ * <ul><li>Implementations are provided for the global model as well as Cascadia
+ * and Alaska regionalized models.
+ *
+ * <li>Model uses {@code zTor} adjusted to {@code zHyp} using the author
+ * recommended model and assuming a 6.5 km vertical thickness of oceanic crust.
  *
  * <li>The basin depth scaling model is that developed for Cascadia.
  * Implementations include USGS developed depth tapering and restriction to long
  * periods ({@code T &geq; 1 s}), as well as a Seattle-specific basin
  * implementation that makes further adjustments based on M9 simulations for
  * interface events at sites over the deepest depths ({@code Z2.5 > 6 km}) and
- * at long periods ({@code T &qeq; 2 s}). Specialized flags are now supported as
- * GMM inputs and these may also trigger Seattle-specific behavior in the
- * Cascadia interface implementation.
- *
- * <li>Implementations are provided for the global model as well as Cascadia and
- * Alaska regionalized models.
- *
- * <li>For the 2023 NSHM, implementations were added that support Seattle M9
- * interface simulation informed modifications to basin amplification terms.
- * This is a region-specific behavior and is managed through the use of flags
- * that are passed in with {@code GmmInput}.</ul>
+ * at long periods ({@code T &qeq; 2 s}). These are region-specific behaviors
+ * and are managed through the use of a gmm-region defined in the
+ * {@code data/site} directory of recent {@code nshm-conus} models.
  *
  * <p><b>Note:</b> Direct instantiation of {@code GroundMotionModel}s is
  * prohibited. Use {@link Gmm#instance(Imt)} to retrieve an instance for a
@@ -71,6 +66,16 @@ import gov.usgs.earthquake.nshmp.tree.LogicTree;
  * <p><b>Component:</b> average horizontal (RotD50)
  *
  * @author U.S. Geological Survey
+ * @see Gmm#PSBAH_20_GLOBAL_INTERFACE
+ * @see Gmm#PSBAH_20_GLOBAL_INTERFACE_AK_ADJUSTED
+ * @see Gmm#PSBAH_20_GLOBAL_SLAB
+ * @see Gmm#PSBAH_20_CASCADIA_INTERFACE
+ * @see Gmm#PSBAH_20_CASCADIA_INTERFACE_BASIN
+ * @see Gmm#PSBAH_20_CASCADIA_INTERFACE_BASIN_M9
+ * @see Gmm#PSBAH_20_CASCADIA_SLAB
+ * @see Gmm#PSBAH_20_CASCADIA_SLAB_BASIN
+ * @see Gmm#PSBAH_20_ALASKA_INTERFACE
+ * @see Gmm#PSBAH_20_ALASKA_SLAB
  */
 
 public abstract class ParkerEtAl_2020 implements GroundMotionModel {
@@ -281,7 +286,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -302,7 +307,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
         coeffsPGA, slab(), akBiasAdjusted(), in));
 
     double μ = calcMean(
-        coeffs, slab(), basin(), m9(), akBiasAdjusted(), pgaRef, in);
+        coeffs, slab(), usgsBasin(), m9(), akBiasAdjusted(), pgaRef, in);
 
     double Ï•Total = phiTotal(coeffs, in.rRup, in.vs30);
     double σ = Maths.hypot(coeffs.τ, ϕTotal);
@@ -339,7 +344,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
   private static double calcMean(
       Coefficients c,
       boolean slab,
-      boolean basin,
+      boolean usgsBasin,
       boolean m9,
       boolean akBiasAdjusted,
       double pgaRef,
@@ -353,7 +358,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     /* Equation 7 */
     double Fslin = siteTermLinear(c, in.vs30);
     double Fsnl = siteTermNonLinear(c, pgaRef, in.vs30);
-    double Fsb = siteBasinTerm(c, in.vs30, in.z2p5, slab, basin, m9);
+    double Fsb = siteBasinTerm(c, in.vs30, in.z2p5, slab, usgsBasin, m9);
     double Fs = Fslin + Fsnl + Fsb;
 
     double μ = c.c0 + Fp + Fm + Fd + Fs;
@@ -442,7 +447,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
       double vs30,
       double z2p5,
       boolean slab,
-      boolean basin,
+      boolean usgsBasin,
       boolean m9) {
 
     if (Double.isNaN(z2p5)) {
@@ -471,7 +476,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
       }
     }
 
-    if (basin) {
+    if (usgsBasin) {
       Fb *= GmmUtils.deltaZ25scale(c.imt, z2p5);
     }
 
@@ -636,7 +641,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
@@ -675,7 +680,7 @@ public abstract class ParkerEtAl_2020 implements GroundMotionModel {
     }
 
     @Override
-    boolean basin() {
+    boolean usgsBasin() {
       return true;
     }
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ZhaoEtAl_2006.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ZhaoEtAl_2006.java
index b770ca9c7ae2525dcc6df0f5f3a77d648f56aff2..38c15b9bc2bd49771c645aca7589111a10616433 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/ZhaoEtAl_2006.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/ZhaoEtAl_2006.java
@@ -50,8 +50,8 @@ import gov.usgs.earthquake.nshmp.gmm.GmmInput.Constraints;
 import gov.usgs.earthquake.nshmp.tree.LogicTree;
 
 /**
- * Abstract implementation of the subduction ground motion model by Zhao et al.
- * (2006). This implementation matches that used in the USGS NSHM.
+ * Implementation of the subduction ground motion model by Zhao et al. (2006).
+ * This implementation matches that used in the USGS NSHM.
  *
  * <p>This model supports both slab and interface type events. In the 2008
  * NSHMP, the 'interface' form is used with the Cascadia subduction zone models
@@ -236,7 +236,7 @@ public abstract class ZhaoEtAl_2006 implements GroundMotionModel {
   }
 
   /* Use USGS deep basin, long period amplification model. */
-  boolean basin() {
+  boolean usgsBasin() {
     return false;
   }
 
@@ -268,7 +268,7 @@ public abstract class ZhaoEtAl_2006 implements GroundMotionModel {
 
     /* Add (possibly depth-tapered) CB14 deep basin term. */
     double fb = 0.0;
-    if (basin()) {
+    if (usgsBasin()) {
       fb = cb14.deepBasinScaling(in.z2p5);
       if (m9() && in.z2p5 > 6.0 && (coeffs.imt.isSA() && coeffs.imt.period() > 1.9)) {
         fb = log(2.0); // M9 scaling
@@ -358,7 +358,7 @@ public abstract class ZhaoEtAl_2006 implements GroundMotionModel {
     }
 
     @Override
-    final boolean basin() {
+    final boolean usgsBasin() {
       return true;
     }
   }
@@ -401,7 +401,7 @@ public abstract class ZhaoEtAl_2006 implements GroundMotionModel {
     }
 
     @Override
-    final boolean basin() {
+    final boolean usgsBasin() {
       return true;
     }
   }