diff --git a/.gitignore b/.gitignore
index 37b57e4b9f69899c08d100b457dc7e87b7a73268..b8ac68d356aa6f24882439f9b5a4a5711954b845 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,4 +25,5 @@ libs
 
 # Node
 node_modules
+package.json
 package-lock.json
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6c98dfb5f81d6571bc2c6aab5f1f837c33026e45..ac7cda7171bf680697637ca20f651c386ea0c30c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,8 @@
 variables:
+  JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html
+  JUNIT_FILES: build/test-results/test/TEST-*.xml
   NSHMP_HAZ_WS_IMAGE: ${CODE_REGISTRY_IMAGE}/nshmp-haz-ws:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
+  REPORTS_DIR: build/reports
 
 # Do not run for merge requests
 workflow:
@@ -7,33 +10,136 @@ workflow:
     - if: $CI_COMMIT_TAG
     - if: $CI_COMMIT_BRANCH
 
-include:
-  - project: 'ghsc/nshmp/nshmp-pipeline-templates'
-    ref: 'main'
-    file: 'templates/library.yml'
-
 stages:
-  - init
   - build
   - trigger
 
 ####
-# Templates
+# Environment Templates
 ####
 
-.gradle:
-  image: ${DEVOPS_REGISTRY}usgs/java:11-jdk
+##
+# Rule for development environment
+##
+.development-env: &development-env
+  if: >
+    $CI_PROJECT_PATH != $UPSTREAM_PATH
+    || (
+      $CI_PROJECT_PATH == $UPSTREAM_PATH
+      && (
+        $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
+        && $CI_COMMIT_BRANCH != 'production'
+        && $CI_COMMIT_TAG == null
+      )
+    )
+  variables:
+    ENVIRONMENT: development
+
+##
+# Rule for staging environment
+##
+.staging-env: &staging-env
+  if: >
+    $CI_PROJECT_PATH == $UPSTREAM_PATH
+    && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+  variables:
+    ENVIRONMENT: staging
+
+##
+# Rule for production envrionment
+##
+.production-env: &production-env
+  if: >
+    $CI_PROJECT_PATH == $UPSTREAM_PATH
+    && (
+      $CI_COMMIT_BRANCH == 'production'
+      || ( $CI_COMMIT_TAG && $CI_COMMIT_TAG != '' )
+    )
+  variables:
+    ENVIRONMENT: production
+
+####
+# Docker Templates
+####
+
+##
+# Docker in Docker
+##
+.dind:
+  image: ${DEVOPS_REGISTRY}docker:19.03-git
+  services:
+    - alias: docker
+      name: ${DEVOPS_REGISTRY}docker:19.03-dind
+  variables:
+    DOCKER_DRIVER: overlay2
+
+##
+# Build Docker image and push to registry.
+#
+# Pushes to internal registry for all branches and Docker registry
+# on default upstream and production upstream branches.
+##
+.docker-build:
+  extends:
+    - .dind
+  needs: []
+  rules:
+    - *development-env
+    - *staging-env
+    - *production-env
+  script:
+    - BUILD_ARGS='';
+    - |
+      for arg in ${DOCKER_BUILD_ARGS}; do
+        BUILD_ARGS="${BUILD_ARGS} --build-arg ${arg}";
+      done
+    - |
+      docker build \
+        ${BUILD_ARGS} \
+        --pull \
+        --tag "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}" \
+        --file "${CI_PROJECT_DIR}/${DOCKERFILE}" \
+        "${CI_PROJECT_DIR}/.";
+    - docker push "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}";
+    - latest_image_name="${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
+    - docker tag "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}" "${latest_image_name}";
+    - docker push "${latest_image_name}";
+    - if [[
+          ${CI_COMMIT_REF_SLUG} == "${CI_DEFAULT_BRANCH}" ||
+          ${CI_COMMIT_REF_SLUG} == "production" ||
+          -n "${CI_COMMIT_TAG}"
+      ]]; then
+        docker tag "${latest_image_name}" "usgs/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
+        docker push "usgs/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
+      fi
+    - |
+      printf "
+        --------
+        Image Name - %s:%s
+        --------
+      " "${CI_PROJECT_NAME}" "${IMAGE_TAG}";
   stage: build
   tags:
-    - development
+    - build
+  variables:
+    DOCKERFILE: Dockerfile
+    DOCKER_BUILD_ARGS: |
+      BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/centos:latest
+      FROM_IMAGE=${DEVOPS_REGISTRY}usgs/centos:latest
+    IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
 
 ####
-# Stage: init
+# Java Templates
 ####
 
-Init:
-  extends:
-    - .gradle-init
+##
+# General Java setup
+##
+.java:
+  image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:11
+  stage: build
+  tags:
+    - development
 
 ####
 # Stage: build
@@ -45,8 +151,8 @@ Build Image Haz:
   variables:
     CI_PROJECT_NAME: nshmp-haz
     DOCKER_BUILD_ARGS: |
-      BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/java:11
-      FROM_IMAGE=${DEVOPS_REGISTRY}usgs/java:11
+      BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11
+      FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11
       CI_JOB_TOKEN=${CI_JOB_TOKEN}
     UPSTREAM_PATH: ghsc/nshmp/nshmp-haz
 
@@ -56,44 +162,23 @@ Build Image WS:
   variables:
     CI_PROJECT_NAME: nshmp-haz-ws
     DOCKER_BUILD_ARGS: |
-      BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/java:11
-      FROM_IMAGE=${DEVOPS_REGISTRY}usgs/java:11
+      BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11
+      FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11
       CI_JOB_TOKEN=${CI_JOB_TOKEN}
     DOCKERFILE: ws.Dockerfile
     UPSTREAM_PATH: ghsc/nshmp/nshmp-haz
 
 Build Project:
   extends:
-    - .gradle
-  needs:
-    - Init
-  rules:
-    -
-      changes:
-        - 'src/**'
-        - '*gradle*'
-      when: on_success
-    -
-      allow_failure: true
-      when: manual
+    - .java
   script:
     - ./gradlew assemble
 
 Markdown Lint:
   extends:
-    - .gradle
-  needs:
-    - Init
-  rules:
-    -
-      changes:
-        - '**/*.md'
-      when: on_success
-    -
-      allow_failure: true
-      when: manual
+    - .java
   script:
-    - ./gradlew markdownlint;
+    - ./gradlew markdownlint
 
 Unit Tests:
   artifacts:
@@ -103,18 +188,7 @@ Unit Tests:
       junit: ${JUNIT_FILES}
   coverage: '/Total.*?([0-9]{1,3})%/'
   extends:
-    - .gradle
-  needs:
-    - Init
-  rules:
-    -
-      changes:
-        - 'src/**/*'
-        - '*gradle*'
-      when: on_success
-    -
-      allow_failure: true
-      when: manual
+    - .java
   script:
     - ./gradlew check
     - cat ${JACOCO_HTML_DIR}/index.html
@@ -128,12 +202,10 @@ Trigger nshmp-haz-ws CDK:
     - Build Image WS
   rules:
     -
-      if: !reference [.development-env, if]
-      variables: !reference [.development-env, variables]
+      <<: *development-env
       when: manual
-      allow_failure: true
-    - !reference [.staging-env]
-    - !reference [.production-env]
+    - *staging-env
+    - *production-env
   script:
     - apk add curl
     - |
diff --git a/DISCLAIMER.md b/DISCLAIMER.md
index ec593eb18c6dc06781a39be052b8a14b03fcef77..fb9a9721c01b7d5d544ebf162c429b766582f2b4 100644
--- a/DISCLAIMER.md
+++ b/DISCLAIMER.md
@@ -1,11 +1,10 @@
 # Disclaimer
 
-This software has been approved for release by the U.S. Geological Survey
-(USGS). Although the software has been subjected to rigorous review, the USGS
-reserves the right to update the software as needed pursuant to further analysis
-and review. No warranty, expressed or implied, is made by the USGS or the U.S.
-Government as to the functionality of the software and related material nor
-shall the fact of release constitute any such warranty. Furthermore, the
-software is released on condition that neither the USGS nor the U.S. Government
-shall be held liable for any damages resulting from its authorized or
-unauthorized use.
+This software is preliminary or provisional and is subject to revision. It is
+being provided to meet the need for timely best science. The software has not
+received final approval by the U.S. Geological Survey (USGS). No warranty,
+expressed or implied, is made by the USGS or the U.S. Government as to the
+functionality of the software and related material nor shall the fact of release
+constitute any such warranty. The software is provided on the condition that
+neither the USGS nor the U.S. Government shall be held liable for any damages
+resulting from the authorized or unauthorized use of the software.
diff --git a/Dockerfile b/Dockerfile
index 934d0ee14bd0a25604e703ee66db0861e2744cb5..367f83e95d3a793a30959e3a748031b03b20d332 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -27,8 +27,8 @@
 #   docker build -t nshmp-haz .
 ####
 
-ARG BUILD_IMAGE=usgs/java:11
-ARG FROM_IMAGE=usgs/java:11
+ARG BUILD_IMAGE=usgs/amazoncorretto:11
+ARG FROM_IMAGE=usgs/amazoncorretto:11
 
 ####
 # Builder image: Build jar file.
diff --git a/build.gradle b/build.gradle
index 4e0a5e5b94dd6e2b59d8580bd890145b1a2d9a1b..33d9f5a71e90ad58d9215ba09fe2f9cc95408142 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,9 +29,9 @@
 
 plugins {
   id "application"
-  id "com.diffplug.gradle.spotless" version "${spotlessVersion}"
+  id "com.diffplug.spotless" version "${spotlessVersion}"
   id "com.github.johnrengelman.shadow" version "${shadowVersion}"
-  id "com.github.node-gradle.node" version "${nodeVersion}"
+  id "com.github.node-gradle.node" version "${nodePluginVersion}"
   id "com.github.spotbugs" version "${spotbugsVersion}"
   id "com.star-zero.gradle.githook" version "${githooksVersion}"
   id "eclipse-wtp"
@@ -40,29 +40,25 @@ plugins {
   id "maven-publish"
 }
 
-configurations {
-  nshmp
-}
-
 apply from: "${projectDir}/gradle/dependencies.gradle"
 apply from: "${projectDir}/gradle/ext.gradle"
 apply from: "${projectDir}/gradle/jar.gradle"
-apply from: "${projectDir}/gradle/javadoc.gradle"
+apply from: "${projectDir}/gradle/git-hooks.gradle"
+apply from: "${projectDir}/gradle/node.gradle"
 apply from: "${projectDir}/gradle/repositories.gradle"
+apply from: "${projectDir}/gradle/spotbugs.gradle"
+apply from: "${projectDir}/gradle/spotless.gradle"
 
-sourceCompatibility = JavaVersion.VERSION_11
-compileJava.options.encoding = "UTF-8"
 
+compileJava.options.encoding = "UTF-8"
+compileTestJava.options.encoding = "UTF-8"
 mainClassName = "gov.usgs.earthquake.nshmp.www.Application"
+sourceCompatibility = JavaVersion.VERSION_11
 
 jacoco {
   toolVersion = "0.8.4"
 }
 
-test {
-  useJUnitPlatform()
-}
-
 jacocoTestReport {
   reports {
     xml.enabled true
@@ -84,7 +80,13 @@ tasks.withType(JavaCompile) {
 }
 
 tasks.withType(JavaExec) {
-  jvmArgs('-noverify', '-Xms2g', '-Xmx8g', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
+  jvmArgs(
+      '-noverify',
+      '-Xms2g',
+      '-Xmx8g',
+      '-XX:TieredStopAtLevel=1',
+      '-Dcom.sun.management.jmxremote',
+      )
 }
 
 /* Add HTML reports to SpotBugs */
@@ -102,15 +104,10 @@ task libsClean(type: Delete) {
 }
 clean.dependsOn libsClean
 
-gradle.afterProject {
-  copy {
-    from {
-      configurations.nshmp.collect { zipTree(it) }
-    }
-    into nshmpLib
+test {
+  useJUnitPlatform()
+
+  filter {
+    excludeTestsMatching "gov.usgs.earthquake.nshmp.model.NshmTestsLarge"
   }
-  apply from: "${nshmpLibGradleDir}/git-hooks.gradle"
-  apply from: "${nshmpLibGradleDir}/node.gradle"
-  apply from: "${nshmpLibGradleDir}/spotbugs.gradle"
-  apply from: "${nshmpLibGradleDir}/spotless.gradle"
 }
diff --git a/code.json b/code.json
index f524431f124cd5bb5c2e260747a357e7d5cf8ff6..e2e1203db87fad980c2a75633f7bd00639636889 100644
--- a/code.json
+++ b/code.json
@@ -2,31 +2,28 @@
   {
     "name": "nshmp-haz",
     "organization": "U.S. Geological Survey",
-    "description": "National Seismic Hazard Mapping Project (NSHMP) software stack",
-    "version": "#.#.#",
-    "status": "Production",
-    "doi": "doi:###TBD###",
+    "description": "NSHMP command line applications and web services",
+    "version": "main",
+    "status": "Development",
 
     "permissions": {
       "usageType": "openSource",
       "licenses": [
         {
           "name": "Public Domain, CC0-1.0",
-          "URL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/LICENSE.md"
+          "URL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/raw/main/LICENSE.md"
         }
       ]
     },
 
-    "repositoryURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/",
-    "homepageURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs",
-    "downloadURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/releases/tag/v#.#.#",
-    "disclaimerURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/DISCLAIMER.md",
+    "homepageURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/",
+    "downloadURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/archive/main/nshmp-haz-main.zip",
+    "disclaimerURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/raw/main/DISCLAIMER.md",
+    "repositoryURL": "https://code.usgs.gov/ghsc/nshmp/nshmp-haz.git",
     "vcs": "git",
 
     "laborHours": 1200,
 
-    "languages": [ "Java" ],
-
     "tags": [
       "Earthquake Hazards",
       "Geologic Hazards Science Center",
@@ -38,8 +35,11 @@
       "earthquake-source",
       "hazard-curve",
       "disaggregation",
-      "deaggregation",
-      "doi|###TBD###"
+      "doi|https://doi.org/10.5066/P9STF5GK"
+    ],
+
+    "languages": [
+      "Java"
     ],
 
     "contact": {
@@ -48,7 +48,7 @@
     },
 
     "date": {
-      "metadataLastUpdated": "2021-06-##"
+      "metadataLastUpdated": "2021-10-20"
     }
   }
 ]
diff --git a/docs/pages/About-the-NSHMP.md b/docs/pages/About-the-NSHMP.md
index 2ee3a89ea3da645cc77555b5faad65e554e5b928..54d1297ad82570ff8f21271163570e29c90a794f 100644
--- a/docs/pages/About-the-NSHMP.md
+++ b/docs/pages/About-the-NSHMP.md
@@ -11,7 +11,7 @@ Earthquake Hazards Reduction Act of 1977, as amended:
 >lifelines, including additional maps needed for performance-based design approaches."
 
 The NSHMP primarily produces long-term NSHMs that are used in U.S. building codes and numerous
-other seismic design requirements. The models are used is site-specific analyses and also for
+other seismic design requirements. The models are used in site-specific analyses and also for
 defining likely earthquake scenarios for emergency planning. NSHMs are considered reference
 (or baseline) models used by the risk, insurance and reinsurance industries, and they are also
 considered in other industries such as real estate lending. A 9-member steering committee of
diff --git a/docs/pages/Building-&-Running.md b/docs/pages/Building-&-Running.md
index 25622afad6a1651185b1f6800f665fc2e974cda2..0dfe9f0baedae37796f77fdf4551b6afd3ed49d0 100644
--- a/docs/pages/Building-&-Running.md
+++ b/docs/pages/Building-&-Running.md
@@ -111,7 +111,7 @@ which can be run with:
 
 ```bash
 docker run \
-    --env CLASS_NAME=<DeaggCalc | DeaggIml | HazardCalc | RateCalc> \
+    --env CLASS_NAME=<DisaggCalc | HazardCalc | RateCalc> \
     --env IML=<NUMBER> \
     --env RETURN_PERIOD=<NUMBER> \
     --volume /absolute/path/to/sites/file:/app/sites.<geojson | csv> \
@@ -123,12 +123,9 @@ docker run \
 Where:
 
 * `CLASS_NAME` is the nshmp-haz class to run:
-  * [DeaggCalc](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java)
-  * [DeaggIml](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java)
+  * [DisaggCalc](../../src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java)
   * [HazardCalc](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java)
   * [RateCalc](../../src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java)
-* `RETURN_PERIOD`, in years, is only required when running a disaggregation
-* `IML`: intensity measure level, only required when running `DeaggIml`
 * Other arguments (local files mapped to files within the Docker container with `:/app/...`):
   * (required) The absolute path to a [USGS model (NSHM)](./USGS-Models.md)
     * Example: `$(pwd)/nshm-hawaii:/app/model`
@@ -142,32 +139,9 @@ Where:
 
 ### Docker Examples
 
-#### [`DeaggCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java) Example
-
-The following example runs the `DeaggCalc` program in nshmp-haz with the
-[nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the
-assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`.
-
-```bash
-# Download Hawaii NSHM
-git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git
-
-# Pull image
-docker pull usgs/nshmp-haz:production-latest
-
-# Run nshmp-haz DeaggCalc
-docker run \
-    --env CLASS_NAME="DeaggCalc" \
-    --env RETURN_PERIOD=475 \
-    --volume "$(pwd)/nshm-hawaii:/app/model" \
-    --volume "$(pwd)/sites.geojson" \
-    --volume "$(pwd)/hawaii-disagg-output:/app/output" \
-    usgs/nshmp-haz:production-latest
-```
-
-#### [`DeaggIml`](../../src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java) Example
+#### [`HazardCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java) Example
 
-The following example runs the `DeaggIml` program in nshmp-haz with the
+The following example runs the `HazardCalc` program in nshmp-haz with the
 [nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the
 assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`.
 
@@ -178,19 +152,18 @@ git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git
 # Pull image
 docker pull usgs/nshmp-haz:production-latest
 
-# Run nshmp-haz DeaggIml
+# Run nshmp-haz HazardCalc
 docker run \
-    --env CLASS_NAME="DeaggCalc" \
-    --env IML=1 \
+    --env CLASS_NAME="HazardCalc" \
     --volume "$(pwd)/nshm-hawaii:/app/model" \
     --volume "$(pwd)/sites.geojson" \
-    --volume "$(pwd)/hawaii-disagg-iml-output:/app/output" \
+    --volume "$(pwd)/hawaii-hazard-output:/app/output" \
     usgs/nshmp-haz:production-latest
 ```
 
-#### [`HazardCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java) Example
+#### [`DisaggCalc`](../../src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java) Example
 
-The following example runs the `HazardCalc` program in nshmp-haz with the
+The following example runs the `DisaggCalc` program in nshmp-haz with the
 [nshm-hawaii](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git) model and the
 assumption a GeoJSON [site](./Site-Specification.md) file exists named `sites.geojson`.
 
@@ -201,12 +174,13 @@ git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git
 # Pull image
 docker pull usgs/nshmp-haz:production-latest
 
-# Run nshmp-haz HazardCalc
+# Run nshmp-haz DisaggCalc
 docker run \
-    --env CLASS_NAME="HazardCalc" \
+    --env CLASS_NAME="DisaggCalc" \
+    --env RETURN_PERIOD=475 \
     --volume "$(pwd)/nshm-hawaii:/app/model" \
     --volume "$(pwd)/sites.geojson" \
-    --volume "$(pwd)/hawaii-hazard-output:/app/output" \
+    --volume "$(pwd)/hawaii-disagg-output:/app/output" \
     usgs/nshmp-haz:production-latest
 ```
 
diff --git a/docs/pages/Functional-PSHA.md b/docs/pages/Functional-PSHA.md
index 375098c02a407c9b2ce87ac88fa1506c961c891a..24fad10920f01749517d4289841865128226e50e 100644
--- a/docs/pages/Functional-PSHA.md
+++ b/docs/pages/Functional-PSHA.md
@@ -132,7 +132,7 @@ The functional pipeline can be processed stepwise:
 
 ![image](images/psha-functional.png "PSHA functional pipeline")
 
-**Need a deagreggation?** Revisit and parse the results of steps 1 and 2
+**Need a disaggregation?** Revisit and parse the results of steps 1 and 2
 
 **Need a response spectra?** Spawn more calculations, one for each IMT, at step 2.
 
diff --git a/docs/pages/Ground-Motion-Models.md b/docs/pages/Ground-Motion-Models.md
index 0ffa1e71f03081bb5523a1aed9d25ba283a25447..f18344593f3d9f43ea5a30c7dfc061cc63c6d653 100644
--- a/docs/pages/Ground-Motion-Models.md
+++ b/docs/pages/Ground-Motion-Models.md
@@ -70,6 +70,7 @@ Reference | ID | Component | Notes
 [Boore & Anderson, 2008](http://dx.doi.org/10.1193/1.2830434) | BA_08 | GMRotI50 |
 [Campbell & Bozorgnia, 2008](http://dx.doi.org/10.1193/1.2857546) | CB_08 | GMRotI50 |
 [Chiou & Youngs, 2008](http://dx.doi.org/10.1193/1.2894832) | CY_08 | GMRotI50 |
+[Gulerce & Abrahamson, 2011](http://dx.doi.org/10.1193/1.3651317) | GA_11 | V/H |
 **Other**
 [Abrahamson & Silva, 1997](http://dx.doi.org/10.1785/gssrl.68.1.94) | AS_97 | Average horizontal |
 [Boore et al., 1997](http://dx.doi.org/10.1785/gssrl.68.1.128)<br>[Boore, 2005](http://dx.doi.org/10.1785/gssrl.76.3.368) | BJF_97 | Random horizontal | 1
diff --git a/docs/pages/Magnitude-Frequency-Distributions.md b/docs/pages/Magnitude-Frequency-Distributions.md
index 0f69189d50ab75bf754e3c6f1a8839f068e0979b..365758f1398e11c08e0bfa9ae578605ad9a183e1 100644
--- a/docs/pages/Magnitude-Frequency-Distributions.md
+++ b/docs/pages/Magnitude-Frequency-Distributions.md
@@ -70,6 +70,8 @@ A general purpose MFD that represents defined by explicit arrays of magnitudes a
   }
 ```
 
+An incremental MFD will ignore any uncertainty settings defined in a `mfd-config.json`.
+
 ## MFD Construction
 
 Construction of MFDs from their declaration in a tree also depends on the following files:
diff --git a/docs/pages/Model-Editions.md b/docs/pages/Model-Editions.md
index 02d123367b4425f21e34385b4a77d9062380a54e..0509a8bc7aea43f5cee1712af7f8d5b425c5dc9d 100644
--- a/docs/pages/Model-Editions.md
+++ b/docs/pages/Model-Editions.md
@@ -51,7 +51,7 @@ Puerto Rico & <br/> U.S. Virgin Islands | 2003 | v1.0.0 | | | |
 included data to support updates to the U.S. Building Code, specifically hazard curves for peak
 ground acceleration (PGA), and 0.2 and 1.0 second spectral accelerations, all at a BC boundary site
 class with Vs30 = 760 m/s. Some time later, the model was deployed to the Unified Hazard Tool
-(UHT) and included support in the Wester U.S. for calculations at sites other than Vs30 = 760 m/s,
+(UHT) and included support in the Western U.S. for calculations at sites other than Vs30 = 760 m/s,
 consistent with dynamic calculations using the 2008 model. Subsequently, we updated the 2014
 model with [addional periods and site classes](https://pubs.er.usgs.gov/publication/ofr20181111).
 Doing so required dropping several ground motion models (GMMs) and a redistribution of logic-tree
diff --git a/docs/pages/Model-Structure.md b/docs/pages/Model-Structure.md
index dc7a55de5a11acb278453f7db604f00f5bc5d93b..e5f15da236b8807e98ffa01a4291134cfceba922 100644
--- a/docs/pages/Model-Structure.md
+++ b/docs/pages/Model-Structure.md
@@ -11,14 +11,15 @@ for representing model data and relationships and is supported in most programmi
 ## Directory Structure
 
 Earthquake source files are organized by tectonic setting: `active-crust`, `stable-crust`,
-`subduction-interface`, `subduction-slab`, and `volcanic` with the two crustal and the volcanic
-settings supporting the nested source types: `fault-sources`, `grid-sources`, and `zone-sources`.
-The `volcanic` tectonic setting also supports `decollement-sources`.
+`subduction`, and `volcanic`. The crustal and volcanic tectonic settings support `fault`, `grid`,
+and `zone` source types. The volcanic tectonic setting additionally supports a `decollement`
+source type. The subduction tectonic setting supports `interface` and `slab` source types.
 
 The root of a model must include `model-info.json` and _may_ include a `calc-config.json` that
 specifies any custom default [calculation configuration](./Calculation-Configuration.md) settings
-for the model. Top level tectonic setting directories must include `gmm-tree.json` and
-`gmm-config.json` files. Source directories are loaded recursively, permitting configuration files
+for the model. Top level tectonic setting directories may include a `gmm-tree.json` and
+`gmm-config.json` files. If absent, the two ground motion model files must be present in the nested
+source type directories. Source directories are loaded recursively, permitting configuration files
 deeper in the heirarchy to override those defined higher in the heirarchy, as needed and as
 specified for each source type. Nested directories support associations between groups of sources,
 their configuration and initialization, and ground motion models. If there are a large number of
@@ -31,26 +32,33 @@ model-directory/
   ├─ calc-config.json             (optional, overrides defaults)
   │
   ├─ active-crust/
-  │   ├─ gmm-config.json          (required, can override)
-  │   ├─ gmm-tree.json            (required, can override)
+  │   ├─ gmm-config.json          (required here or in child source type directory, can override)
+  │   ├─ gmm-tree.json
   │   │
-  │   ├─ fault-sources/
+  │   ├─ fault/
   │   │   └─ ...
   │   │
-  │   ├─ grid-sources/
+  │   ├─ grid/
   │   │   └─ ...
   │   │
-  │   └─ zone-sources/
+  │   └─ zone/
   │       └─ ...
   │
   ├─ stable-crust/...             Same structure as 'active-crust'
   │   └─ ...
   │
-  ├─ subduction-interface/        Similar structure to 'fault-sources'
-  │   └─ ...
+  ├─ volcanic/...                 Same structure as 'active-crust'; may include
+  │   └─ ...                      'decollement' source type
   │
-  └─ subduction-slab/             Similar structure to 'grid-sources'
-      └─ ...
+  └─ subduction/
+      ├─ gmm-config.json          (required here or in nested source type directory, can override)
+      ├─ gmm-tree.json
+      │
+      ├─ interface/               Similar structure to 'fault' sources
+      │   └─ ...
+      │
+      └─ slab/                    Similar structure to 'grid' sources
+          └─ ...
 ```
 
 The following sections describe each source type, associated configuration and source definition
@@ -65,7 +73,7 @@ surface trace of the section. The coordinate order of the trace must adhere to t
 geology right-hand rule.
 
 ```text
-fault-sources/
+fault/
   ├─ fault-config.json            (required, can override)
   ├─ mfd-config.json              (required, can override)
   ├─ mfd-map.json                 (optional) Map of shared mfd-trees
@@ -105,7 +113,7 @@ trees of source model variants. Grid sources are modeled as point sources of var
 Multiple GeoJSON `Polygon`s may be used to accomodate spatial variations in source properties.
 
 ```text
-grid-sources/
+grid/
   ├─ grid-config.json             (required, can override)
   ├─ mfd-map.json                 (optional) Map of shared mfd-trees
   ├─ features/                    (required) Directory of grid feature bounds
@@ -136,7 +144,7 @@ of dynamically computing rates over a zone from a single value or `rate-tree.jso
 a model.*
 
 ```text
-zone-sources/
+zone/
   ├─ zone-config.json             (required, can override)
   ├─ mfd-config.json              (required)
   ├─ mfd-map.json                 (optional) Map of shared mfd-trees
@@ -164,7 +172,7 @@ define interface sections using a `MultiLineString` of multple traces at increas
 coordinate order of each trace must adhere to the U.S. structural geology right-hand rule.
 
 ```text
-subduction-interface
+interface/
   ├─ gmm-config.json              (required)
   ├─ gmm-tree.json                (required)
   ├─ interface-config.json        (required)
@@ -182,7 +190,7 @@ rate files (`*.csv`) are stored adjacent to their corresponding feature file (`*
 _this may change in a future release_.
 
 ```text
-subduction-slab
+slab/
   ├─ gmm-config.json              (required)
   ├─ gmm-tree.json                (required)
   ├─ slab-config.json             (required)
diff --git a/docs/pages/Source-Types.md b/docs/pages/Source-Types.md
index fc6d2042ce951aa1b8662901e7c797e811df57ca..56ca3c289d02507bdf2d1e4e6101ec0ca0f5762b 100644
--- a/docs/pages/Source-Types.md
+++ b/docs/pages/Source-Types.md
@@ -37,10 +37,10 @@ for rupture geometry. Truncated Gutenberg-Richter MFDs are used to model grid so
 magnitudes and rates with logic trees of varying a-value, b-value and maximum magnitude. For grid
 sources the relative rate at each grid node is defined using a spatial PDF (see notes on
 spatial PDFs, [below](#spatial-pdfs)). When realizing each source the spatial PDF value is scaled
-by each regional rate in a rate-tree.
+by each regional rate in a required `rate-tree`.
 
 Grid sources are represented in a model using a logic tree with a `rupture-sets.json` defining the
-ruptures on each branch.  Because gridded seismicity models may be govered by regionally
+ruptures on each branch.  Because gridded seismicity models may be governed by regionally
 varying MFD properties (e.g. `mMax`), rupture sets for grids are defined in a JSON array.
 
 **rupture-sets.json**: Defines an array of one or more rupture sets. Multiple rupture sets are
@@ -175,12 +175,12 @@ Finite fault source representation. The geometry, properties and rupture MFDs of
 are defined by one or more GeoJSONs and associated configuration. Depending on the complexity of
 the source, it may be represented using a single GeoJSON or result from stitching together
 multiple GeoJSONs (see note on fault section stitching, [below](#fault-section-stitching)). If a
-fault source is represented with a logic treek then `rupture-set.json` defines the ruptures for
+fault source is represented with a logic tree then a `rupture-set.json` defines the ruptures for
 each branch. Depending on the MFDs and scaling relations used to determine a rupture size, some
 ruptures may fill the entire source model while smaller events are modeled as 'floating' ruptures;
 they occur in multiple locations on the fault surface with appropriately scaled rates. MFDs
-associated with finite fault models may be explicitely defined or or derived from slip rates.
-Fault rupture rates may be modeled using explicitely defined MFDs or logic trees of slip rate.
+associated with finite fault models may be explicitly defined or derived from slip rates.
+Fault rupture rates may be modeled using explicitly defined MFDs or logic trees of slip rate.
 
 **fault-source.geojson**: Defines the geometry and properties of a single source. In the example
 below the presence of a `rate-map` property indicates MFDs should be constructed from the supplied
@@ -243,6 +243,24 @@ variations and an associated slip-rate scaling model are also supported for norm
 }
 ```
 
+**rupture-set.json**: When a fault source is represented with a logic tree a
+`rupture-set.json` defines the ruptures for each branch. A rupture set _may_ also define custom
+properties and _may_ also contain a `sections` member that defines the fault sections for the
+rupture set (see note on fault section stitching, [below](#fault-section-stitching)).
+
+```json
+{
+  "name": "New Madrid - USGS (center)",
+  "id": 3023,
+  "sections": [3020, 3021, 3022],
+  "mfd-tree": "usgs-hi-mag",
+  "properties": {
+    "state": "MO",
+    "width": 15.0
+  }
+}
+```
+
 ### Fault Section Stitching
 
 When multiple sections are defined for a rupture, the ruptures must be defined in an order that
@@ -264,7 +282,8 @@ a cluster may only have an mfd-tree composed of `Mfd.Type.SINGLE` MFDs and the m
 match across all sources in a cluster (i.e. each mfd-tree has the same IDs and weights).
 
 **cluster-set.json** A specialized type of rupture set, this file defines the array of fault
-rupture sets that make up a 'cluster'.
+rupture sets that make up a 'cluster'. As with fault sources, the nested rupture sets in a cluster
+set _may_ define `properties` and `sections` members.
 
 ```json
 {
diff --git a/etc/examples/1-hazard-curve/README.md b/etc/examples/1-hazard-curve/README.md
index ed8da976693fdf3b5a0cf561651a8f1efaa79b35..6891e5968155a05c4e77ae30a9f7286efcf21571 100644
--- a/etc/examples/1-hazard-curve/README.md
+++ b/etc/examples/1-hazard-curve/README.md
@@ -14,11 +14,9 @@ testing. See the [PEER directory](../../peer/) for more information.
 
 The result of this calculation should be available as a single comma-delimited file containing
 several total mean hazard curves for PGA in a newly created `hazout` directory. In this example,
- the calculation configuration was derived from the model directory and the site was specified
-  as a comma-delimited string. The string must have the form:
-   `name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]`, where `vs30`, `vsInf`, `z1p0`, and `z2p5`
-   are optional. See the [site specification](https://github.com/usgs/nshmp-haz/wiki/sites)
-   page for more details.
+the calculation configuration was derived from the model directory and the site is defined in
+file `site.csv`. See the [site specification](https://github.com/usgs/nshmp-haz/wiki/sites)
+page for more details.
 
 Note that not all [calculation configuration](https://github.com/usgs/nshmp-haz/wiki/Configuration)
 parameters need be supplied; see the [configuration file](../../peer/models/Set1-Case1/config.json)
diff --git a/etc/examples/1-hazard-curve/site.csv b/etc/examples/1-hazard-curve/site.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3eb309c0a0b37ab58057d996bea031f7ead61273
--- /dev/null
+++ b/etc/examples/1-hazard-curve/site.csv
@@ -0,0 +1,2 @@
+name,lon,lat
+Test Site, -122.0, 38.0
diff --git a/etc/examples/2-custom-config/README.md b/etc/examples/2-custom-config/README.md
index 33c8c381aa8b47f57fbff49085da83b6d064fd7b..ca5163209413c937d88b172a5215c677a1899f2c 100644
--- a/etc/examples/2-custom-config/README.md
+++ b/etc/examples/2-custom-config/README.md
@@ -5,7 +5,7 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/2-custom-config`
 Navigate to the directory above and execute the following:
 
 ```Shell
-hazard ../../peer/models/Set1-Case1 "San Francisco, -122.40, 37.75" config.json
+hazard ../../peer/models/Set1-Case1 site.csv config.json
 ```
 
 In this example we've overridden the configuration supplied by the model. Specifically:
diff --git a/etc/examples/2-custom-config/site.csv b/etc/examples/2-custom-config/site.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e2bca493abcc930c0e3ec1edffe778fda85363ec
--- /dev/null
+++ b/etc/examples/2-custom-config/site.csv
@@ -0,0 +1,2 @@
+name,lon,lat
+San Francisco, -122.40, 37.75
diff --git a/etc/examples/3-sites-file/README.md b/etc/examples/3-sites-file/README.md
index f70f356a496a5177fdbae1418bcdc53b144ab576..65aa2ba681db02df0ac2a9c789f6851e3b8b8657 100644
--- a/etc/examples/3-sites-file/README.md
+++ b/etc/examples/3-sites-file/README.md
@@ -19,9 +19,6 @@ The [site specification](https://github.com/usgs/nshmp-haz/wiki/sites)
 wiki page provides details on the two file formats. Note that with either format,
 if the name of a site is supplied, it will be included in the first column of any output curve files.
 
-Note that both formats ([CSV](sites.csv) and [GeoJSON](sites.geojson)) are elegantly
-rendered by GitHub.
-
 __Results directory structure:__
 
 ```text
diff --git a/etc/examples/4-hazard-map/README.md b/etc/examples/4-hazard-map/README.md
index 0c26c4102630b610eba586085ff2cd66b96b7110..da3708ea2464aa03afd53985b33b5b0486f02543 100644
--- a/etc/examples/4-hazard-map/README.md
+++ b/etc/examples/4-hazard-map/README.md
@@ -4,8 +4,8 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/4-hazard-map`
 
 A hazard map is just a collection of values plucked from a lot of hazard curves.
 To compute curves at reqularly spaced intervals in latitude and longitude over a region,
- a [GeoJSON site file](https://github.com/usgs/nshmp-haz/wiki/sites#geojson-format-geojson)
- may instead specify a polygon and a site spacing.
+a [GeoJSON site file](../../../docs/pages/Site-Specification.md#geojson-format-geojson)
+may instead specify a polygon and a site spacing.
 
 ```Shell
 hazard ../../peer/models/Set1-Case1 map.geojson config.json
diff --git a/etc/examples/5-complex-model/README.md b/etc/examples/5-complex-model/README.md
index 79f7b17b1dbbb340077ff22e5e16c755461cd98d..15616984654db3a8cc073e4fdb6c110cdea49a1c 100644
--- a/etc/examples/5-complex-model/README.md
+++ b/etc/examples/5-complex-model/README.md
@@ -4,30 +4,28 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/5-complex-model`
 
 Most PSHAs involve the use of more complex source models, the components of which
 might use different ground motion models. For this and ensuing examples, we'll use the
-2008 USGS National Seismic Hazard Model (NSHM) for the western U.S. `nshmp-haz` uses an
-in-memory source model. The USGS NSHMs are quite large, so it's helpful to increase the amount
-memory available to Java when calling `HazardCalc`. For example, set your alias to:
+USGS National Seismic Hazard Model (NSHM) for the Conterminous U.S (CONUS). `nshmp-haz`
+uses an in-memory source model. The USGS NSHMs are quite large, so it's helpful to increase
+the amount memory available to Java when calling `HazardCalc`. For example, set your alias to:
 
 ```Shell
-alias hazard='java -Xms1g -Xmx4g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.HazardCalc'
+alias hazard='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.HazardCalc'
 ```
 
-This will increase the minimum amount of memory Java requires to 1GB and will allow it to claim
-up to 4GB, assuming that much is available.
+This will increase the minimum amount of memory Java requires to 4GB and will allow it to claim
+up to 8GB, assuming that much is available.
 
-First, clone the 2008 USGS NSHM. Assuming you are in the current working directory (above), the
-following will create a copy of the model adjacent to nshmp-haz:
+First, clone the CONUS NSHM repository. Assuming you are in the current working directory
+(above), the following will create a copy of the model adjacent to nshmp-haz:
 
 ```Shell
-git clone https://github.com/usgs/nshm-cous-2008.git ../../../../nshm-cous-2008
+git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-conus.git ../../../../nshm-conus
 ```
 
-The 2008 NSHM repository contains two source models: one for the western U.S. and a one for the
-central and eastern U.S. To compute hazard for a few sites in the Western U.S. at 1.0s and 2.0s
-spectral periods, execute:
+To compute hazard for a few sites at 1.0s and 2.0s spectral periods, execute:
 
 ```Shell
-hazard ../../../../nshm-cous-2008/Western\ US sites.geojson config-sites.json
+hazard ../../../../nshm-conus sites.geojson config-sites.json
 ```
 
 Note that more complex models take longer to initialize, although this only occurs once per
@@ -37,12 +35,12 @@ use all cores available by default and therefore performs better on multi-core s
 To compute a small, low-resolution map for the central San Francisco bay area, execute:
 
 ```Shell
-hazard ../../../../nshm-cous-2008/Western\ US map.geojson config-map.json
+hazard ../../../../nshm-conus map.geojson config-map.json
 ```
 
 This computes 121 curves over a 2° by 2° area and will give you a sense of how long a larger map
-might take. Note that in the above two examples we specified different output directories in the
-config files for each calculation.
+might take. This small coarse map may take 10 minutes to complete. Note that in the above two
+examples we specified different output directories in the config files for each calculation.
 
 __Results directory structure:__
 
diff --git a/etc/examples/5-complex-model/config-sites.json b/etc/examples/5-complex-model/config-sites.json
index 31a32a602930367f4392fe3ace4ea1e025c643d9..a11af3bf61eb2895d2cb02e23ef02b342e9166fa 100644
--- a/etc/examples/5-complex-model/config-sites.json
+++ b/etc/examples/5-complex-model/config-sites.json
@@ -3,7 +3,6 @@
     "imts": ["SA1P0", "SA2P0"]
   },
   "output": {
-    "directory": "hazout-sites",
-    "flushLimit": 1
+    "directory": "hazout-sites"
   }
 }
diff --git a/etc/examples/6-enhanced-output/README.md b/etc/examples/6-enhanced-output/README.md
index 61fffb7a1390f0e5893c6db546127f08cfb27335..efed4971851d0928f43b062c5c4d76a6bc328e7c 100644
--- a/etc/examples/6-enhanced-output/README.md
+++ b/etc/examples/6-enhanced-output/README.md
@@ -4,25 +4,26 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/6-enhanced-output`
 
 While mean hazard is of broad interest, it can be useful to preserve individual components of a
 total curve, particularly with more complex models. Execute the following to write curves for
-each source type and ground motion model (GMM) used in the 2008 NSHM:
+each source type and ground motion model (GMM) used in the CONUS NSHM (cloned in the previous
+example):
 
 ```Shell
-hazard ../../../../nshm-cous-2008/Western\ US sites.geojson config.json
+hazard ../../../../nshm-conus sites.geojson config.json
 ```
 
-The [config](https://github.com/usgs/nshmp-haz/blob/master/etc/examples/6-enhanced-output/config.json)
-file for this example specified `GMM` and `SOURCE` as
-[output data types](https://github.com/usgs/nshmp-haz/wiki/configuration#calculation-configuration-parameters).
- Note that the output curves directory now contains additional directories of curves by source
- type and GMM. We also specified an
- [output flush limit](https://github.com/usgs/nshmp-haz/wiki/configuration#calculation-configuration-parameters)
-  of `1`. Doing so gives feedback on how long it takes each site calculation to run on a particular system.
+The config file for this example, `config.json`, specified `GMM` and `SOURCE` as
+[output data types][output_types]. Note that the output curves directory now contains additional
+directories of curves by source type and GMM.
 
-See the `nshmp-haz` wiki and Javacocs for more information on source types
-([Wiki](https://github.com/usgs/nshmp-haz/wiki/source-types),
-[JavaDoc](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/eq/model/SourceType.html))
- and GMMs ([Wiki](https://github.com/usgs/nshmp-haz/wiki/ground-motion-models),
-  [JavaDoc](http://usgs.github.io/nshmp-haz/javadoc/index.html?gov/usgs/earthquake/nshmp/gmm/Gmm.html)).
+[output_types]: ../../../docs/pages/Calculation-Configuration.md#calculation-configuration
+
+See the `nshmp-haz` wiki and javadocs for more information on source types ([Wiki][source_wiki],
+[JavaDoc][source_javadoc]) and GMMs ([Wiki][gmm_wiki], [JavaDoc][gmm_javadoc]).
+
+[source_wiki]: ../../../docs/pages/Source-Types.md
+[source_javadoc]: https://earthquake.usgs.gov/nshmp/docs/nshmp-lib/gov/usgs/earthquake/nshmp/model/SourceType.html
+[gmm_wiki]: ./../../docs/pages/Ground-Motion-Models.md
+[gmm_javadoc]: https://earthquake.usgs.gov/nshmp/docs/nshmp-lib/gov/usgs/earthquake/nshmp/gmm/package-summary.html
 
 __Results directory structure:__
 
@@ -32,19 +33,25 @@ __Results directory structure:__
       ├─ config.json
       ├─ HazardCalc.log
       ├─ PGA/
+      │   ├─ curves-truncated.csv
       │   ├─ curves.csv
+      │   ├─ map.csv
       │   ├─ gmm/
-      │   │   ├─ AB_03_CASCADIA_SLAB/
-      │   │   │   └─ curves.csv
+      │   │   ├─ AM_09_INTERFACE_BASIN/
+      │   │   │   ├─ curves.csv
+      │   │   │   └─ map.csv
       │   │   ├─ ...
-      │   │   └─ ZHAO_06_INTERFACE/
-      │   │       └─ curves.csv
+      │   │   └─ ZHAO_06_SLAB_BASIN/
+      │   │       ├─ curves.csv
+      │   │       └─ map.csv
       │   └─ source/
       │       ├─ FAULT/
-      │       │   └─ curves.csv
+      │       │   ├─ curves.csv
+      │       │   └─ map.csv
       │       ├─ ...
       │       └─ SLAB/
-      │           └─ curves.csv
+      │           ├─ curves.csv
+      │           └─ map.csv
       ├─ SA0P2/
       │   └─ ...
       └─ SA1P0/
@@ -52,7 +59,7 @@ __Results directory structure:__
 ```
 
 <!-- markdownlint-disable MD001 -->
-#### Next: [Example 7 – Deaggregation](../7-deaggregation/README.md)
+#### Next: [Example 7 – Disaggregation](../7-disaggregation/README.md)
 
 ---
 
diff --git a/etc/examples/6-enhanced-output/config.json b/etc/examples/6-enhanced-output/config.json
index 1023392b357b71b62837d33b37fc609d3eb3f3a3..9ebae3bb03bef893a2345445464eb4fc3d61429f 100644
--- a/etc/examples/6-enhanced-output/config.json
+++ b/etc/examples/6-enhanced-output/config.json
@@ -1,6 +1,8 @@
 {
+  "hazard": {
+    "imts": ["PGA", "SA0P1", "SA0P5", "SA1P0", "SA2P0"]
+  },
   "output": {
-    "dataTypes": ["TOTAL", "GMM", "SOURCE"],
-    "flushLimit": 1
+    "dataTypes": ["TOTAL", "GMM", "SOURCE"]
   }
 }
diff --git a/etc/examples/7-deaggregation/config.json b/etc/examples/7-deaggregation/config.json
deleted file mode 100644
index e7d35261718b6cdec91e5b0593cad3b6d31582ca..0000000000000000000000000000000000000000
--- a/etc/examples/7-deaggregation/config.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "output": {
-    "dataTypes": ["TOTAL", "GMM"],
-    "flushLimit": 1
-  }
-}
diff --git a/etc/examples/7-deaggregation/README.md b/etc/examples/7-disaggregation/README.md
similarity index 56%
rename from etc/examples/7-deaggregation/README.md
rename to etc/examples/7-disaggregation/README.md
index 4750f2affa3c64fe660c3b4c543d2c4bbeb78ea2..ea60c780c8022a225536f941cb2358b7b3d533fe 100644
--- a/etc/examples/7-deaggregation/README.md
+++ b/etc/examples/7-disaggregation/README.md
@@ -1,43 +1,40 @@
-# Example 7: Deaggregation
+# Example 7: Disaggregation
 
-__Working directory:__ `/path/to/nshmp-haz/etc/examples/7-deaggregation`
+__Working directory:__ `/path/to/nshmp-haz/etc/examples/7-disaggregation`
 
-To perform a deaggregation of hazard, one must use the program `DeaggCalc`. Internally,
-`DeaggCalc` calls `HazardCalc` and then reprocesses the data to generate a comma-delimited
+To perform a disaggregation of hazard, one must use the program `DisaggCalc`. Internally,
+`DisaggCalc` calls `HazardCalc` and then reprocesses the data to generate a comma-delimited
 file of distance, magnitude, and epsilon bins, and a text file of summary statistics and primary
 contributing sources. For this, it can be helpful to create a second system alias:
 
 ```Shell
-alias deagg='java -Xms1g -Xmx4g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggCalc'
+alias disagg='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggCalc'
 ```
 
-`DeaggCalc` is similar to `HazardCalc` in every way except that the return-period of interest
+`DisaggCalc` is similar to `HazardCalc` in every way except that the return-period of interest
 must be specified. For example, execute:
 
 ```Shell
-deagg ../../../../nshm-cous-2008/Western\ US sites.geojson 2475 config.json
+disagg ../../../../nshm-conus sites.geojson 2475 config.json
 ```
 
-The results of the deaggregation are saved along with hazard curves in `deagg` directories.
- As with `HazardCalc`, if the `GMM` ddata type has been specified (as it has in the
- [config](https://github.com/usgs/nshmp-haz/blob/master/etc/examples/7-deaggregation/config.json)
- file for this example) additional deaggregation results for each GMM are generated as well.
- Deaggregations by individual `SOURCE` type are also possible.
-
-See the following pages for more information on
-[deaggregation](https://github.com/usgs/nshmp-haz/wiki/about-deaggregation)
-and the meaning of [epsilon](https://github.com/usgs/nshmp-haz/wiki/what-is-epsilon%3F).
+The results of the disaggregation are saved along with hazard curves in `disagg` directories.
+As with `HazardCalc`, if the `GMM` data type has been specified (as it has in the
+[config](../../../docs/pages/Calculation-Configuration.md#calculation-configuration)
+file for this example) additional disaggregation results for each GMM are generated as well.
+Disaggregations by individual `SOURCE` type are also possible.
 
 __Results directory structure:__
 
 ```text
-7-deaggregation/
+7-disaggregation/
   └─ hazout/
       ├─ config.json
-      ├─ DeaggCalc.log
+      ├─ DisaggCalc.log
       ├─ PGA/
+      │   ├─ curves-truncated.csv
       │   ├─ curves.csv
-      │   ├─ deagg/
+      │   ├─ disagg/
       │   │   ├─ Los Angeles CA/
       │   │   │   ├─ data.csv
       │   │   │   └─ summary.txt
@@ -51,9 +48,9 @@ __Results directory structure:__
       │   │       ├─ data.csv
       │   │       └─ summary.txt
       │   └─ gmm/
-      │       ├─ AB_03_CASCADIA_SLAB/
+      │       ├─ AM_09_INTERFACE_BASIN/
       │       │   ├─ curves.csv
-      │       │   └─ deagg/
+      │       │   └─ disagg/
       │       │       ├─ San Francisco CA/
       │       │       │   ├─ data.csv
       │       │       │   └─ summary.txt
@@ -61,9 +58,9 @@ __Results directory structure:__
       │       │           ├─ data.csv
       │       │           └─ summary.txt
       │       ├─ ...
-      │       ├─ CB_08/
+      │       ├─ CB_14_BASIN/
       │       │   ├─ curves.csv
-      │       │   └─ deagg/
+      │       │   └─ disagg/
       │       │       ├─ Los Angeles CA/
       │       │       │   ├─ data.csv
       │       │       │   └─ dsummary.txt
@@ -77,15 +74,14 @@ __Results directory structure:__
       │       │           ├─ data.csv
       │       │           └─ summary.txt
       │       └─ ...
-      ├─ SA0P2/
+      ├─ SA0P1/
       │   └─ ...
-      └─ SA1P0/
-          └─ ...
+      └─ ...
 ```
 
-Note that in the output above, there are only deaggregation results for
-subduction GMMs (e.g. `AB_03_CASCADIA_SLAB`) for sites closer to the Cascadia subduction zone;
-empty results will not be saved.
+Note that in the output above, there are only disaggregation results for subduction GMMs
+(e.g. `AM_09_INTERFACE_BASIN`) for sites closer to the Cascadia subduction zone; empty results
+will not be saved.
 
 <!-- markdownlint-disable MD001 -->
 #### Next: [Example 8 – Earthquake probabilities and rates](../8-probabilities/README.md)
diff --git a/etc/examples/7-disaggregation/config.json b/etc/examples/7-disaggregation/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..4ca4727af09a69c94e45e8652d8ff679ec87669f
--- /dev/null
+++ b/etc/examples/7-disaggregation/config.json
@@ -0,0 +1,8 @@
+{
+  "hazard": {
+    "imts": ["PGA", "SA0P1", "SA0P5", "SA1P0", "SA2P0"]
+  },
+  "output": {
+    "dataTypes": ["TOTAL", "GMM"]
+  }
+}
diff --git a/etc/examples/7-deaggregation/sites.geojson b/etc/examples/7-disaggregation/sites.geojson
similarity index 100%
rename from etc/examples/7-deaggregation/sites.geojson
rename to etc/examples/7-disaggregation/sites.geojson
diff --git a/etc/examples/8-probabilities/README.md b/etc/examples/8-probabilities/README.md
index 38f3b7a6de77668a70c3187a5cdd9354b8d1f5eb..4647c3da9ddfabc645d0f4404c6edc0f1329e889 100644
--- a/etc/examples/8-probabilities/README.md
+++ b/etc/examples/8-probabilities/README.md
@@ -3,7 +3,7 @@
 __Working directory:__ `/path/to/nshmp-haz/etc/examples/8-probabilities`
 
 `nshmp-haz` can also calculate earthquake probabilities and rates at a location.
-As with the `HazardCalc` and `DeaggCalc` programs, `RateCalc` takes a model, a site data file
+As with the `HazardCalc` and `DisaggCalc` programs, `RateCalc` takes a model, a site data file
 or string, and an optional config file, which will control whether the distributions generated
 are incremental or cumulative, and whether the distribution values are expressed as annual rates
 or Poisson probabilities. The default (no config supplied) settings are for incremental
@@ -13,19 +13,19 @@ all sources should be included, and a `timespan` used for conversion to Poisson
 For this example, the following system alias is helpful:
 
 ```Shell
-alias rate='java -Xms1g -Xmx4g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.RateCalc'
+alias rate='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.RateCalc'
 ```
 
-Assuming a copy of the 2008 USGS NSHM is available (see [Example 5](../5-complex-model)), execute:
+Assuming a copy of the CONUS NSHM is available (see [Example 5](../5-complex-model)), execute:
 
 ```Shell
-rate ../../../../nshm-cous-2008/Western\ US sites.csv config-sites.json
+rate ../../../../nshm-conus sites.csv config-sites.json
 ```
 
 to generate incremental, annual-rate output for a list of sites, or
 
 ```Shell
-rate ../../../../nshm-cous-2008/Western\ US map.geojson config-map.json
+rate ../../../../nshm-conus map.geojson config-map.json
 ```
 
 to generate a map of cumulative Poisson probabilities (i.e. P ≥ M).
@@ -41,11 +41,19 @@ __Results directory structure:__
   ├─ hazout-rate-sites/
   │   ├─ config.json
   │   ├─ RateCalc.log
-  │   └─ rates.csv
+  │   ├─ rates.csv
+  │   └─ source/
+  │       ├─ FAULT/
+  │       │   └─ probs.csv
+  │       └─ ...
   └─ hazout-prob-map/
       ├─ config.json
       ├─ RateCalc.log
       └─ probs.csv
+      └─ source/
+          ├─ FAULT/
+          │   └─ rates.csv
+          └─ ...
 ```
 
 ---
diff --git a/etc/peer/README.md b/etc/peer/README.md
index 413cc96790a1447fc9620665f690681bd4264b34..541df79eb19e44b0654849b0f6c0a332e5f39a9c 100644
--- a/etc/peer/README.md
+++ b/etc/peer/README.md
@@ -12,6 +12,13 @@ please see the [PEER Probabilistic Seismic Hazard Analysis Code Verification Rep
 
 - Most test cases have a version that matches the target results, but that run slowly, as
   well as a'fast' implementations with coarser discretizations.
+- Set1, Cases 5, 6, 7, 10, 11 have incremental MFds reflecting what should be built from
+  parameters. These should be refactored once a Youngs and Coppersmith (!985) MFD is
+  implemented.
+- Set1 Cases 10 and 11 not enabled yet; requires dynamic creation of zone point sources. The
+  _nshmp-haz-v1_ implementation distributed a predefined MFD over a dynamically created grid
+  in lat-lon space that was close enough to the uniform km-based grid prescribed by the test.
 - Set1, Cases 8a, b, and c implementations are the same as the Set1, Case2 'fast' versions.
 - Set2, Case1 (disagreggation) was skipped; implemented in OpenSHA.
 - Set3 tests are not yet implemented.
+- Consider symlinks for features, mfd-map, and other redundant files
diff --git a/etc/peer/docs/Set 1 Instructions Rev8-4.pdf b/etc/peer/docs/Set 1 Instructions Rev8-4.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..766b272a08d5babc6036fea96669ab64797715f8
Binary files /dev/null and b/etc/peer/docs/Set 1 Instructions Rev8-4.pdf differ
diff --git a/etc/peer/docs/Set 2 Part 1 Instructions Rev8-4 .pdf b/etc/peer/docs/Set 2 Part 1 Instructions Rev8-4 .pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e3b2f4a24def007403fc4cec9281e84b1b225878
Binary files /dev/null and b/etc/peer/docs/Set 2 Part 1 Instructions Rev8-4 .pdf differ
diff --git a/etc/peer/docs/Set 3 Instructions Rev 10-18b.pdf b/etc/peer/docs/Set 3 Instructions Rev 10-18b.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a5e45a60a7c847362a3c64f6ac57164dfdafdbd3
Binary files /dev/null and b/etc/peer/docs/Set 3 Instructions Rev 10-18b.pdf differ
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case1/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case1/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/features/set1-case1.geojson b/etc/peer/models/Set1-Case1/active-crust/fault/features/set1-case1.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/features/set1-case1.geojson
rename to etc/peer/models/Set1-Case1/active-crust/fault/features/set1-case1.geojson
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case1/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case1/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case1/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case1/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/set1-case1/rupture-set.json b/etc/peer/models/Set1-Case1/active-crust/fault/set1-case1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/set1-case1/rupture-set.json
rename to etc/peer/models/Set1-Case1/active-crust/fault/set1-case1/rupture-set.json
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case1/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case1/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case1/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case1/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/gmm-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/gmm-tree.json b/etc/peer/models/Set1-Case10-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..8392687bb5778aed9e7ac67063c89c1fa5ec6e1f
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "SADIGH_97", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ae2bde78fd129c6048434c530cddb533efe38f3
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json
@@ -0,0 +1,43 @@
+{
+  "set1-case10-mfd": [
+    {
+      "id": "set1-case10",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495],
+        "rates": [
+          0.00084802548, 0.00083063247, 0.00081359618, 0.00079690931, 0.00078056469, 0.00076455530, 0.00074887426, 0.00073351484, 0.00071847044, 0.00070373460,
+          0.00068930099, 0.00067516342, 0.00066131581, 0.00064775221, 0.00063446680, 0.00062145388, 0.00060870785, 0.00059622324, 0.00058399470, 0.00057201696,
+          0.00056028488, 0.00054879343, 0.00053753767, 0.00052651276, 0.00051571398, 0.00050513668, 0.00049477632, 0.00048462845, 0.00047468871, 0.00046495284,
+          0.00045541665, 0.00044607605, 0.00043692702, 0.00042796564, 0.00041918806, 0.00041059051, 0.00040216929, 0.00039392079, 0.00038584147, 0.00037792786,
+          0.00037017655, 0.00036258422, 0.00035514762, 0.00034786353, 0.00034072885, 0.00033374049, 0.00032689547, 0.00032019084, 0.00031362372, 0.00030719129,
+          0.00030089080, 0.00029471952, 0.00028867482, 0.00028275409, 0.00027695480, 0.00027127446, 0.00026571061, 0.00026026089, 0.00025492293, 0.00024969446,
+          0.00024457322, 0.00023955702, 0.00023464370, 0.00022983116, 0.00022511732, 0.00022050016, 0.00021597770, 0.00021154799, 0.00020720914, 0.00020295928,
+          0.00019879658, 0.00019471926, 0.00019072556, 0.00018681378, 0.00018298222, 0.00017922926, 0.00017555326, 0.00017195266, 0.00016842591, 0.00016497149,
+          0.00016158792, 0.00015827375, 0.00015502756, 0.00015184794, 0.00014873354, 0.00014568301, 0.00014269505, 0.00013976837, 0.00013690172, 0.00013409386,
+          0.00013134360, 0.00012864974, 0.00012601113, 0.00012342664, 0.00012089516, 0.00011841560, 0.00011598689, 0.00011360800, 0.00011127790, 0.00010899558,
+          0.00010676008, 0.00010457043, 0.00010242569, 0.00010032494, 9.8267273e-05, 9.6251810e-05, 9.4277684e-05, 9.2344047e-05, 9.0450069e-05, 8.8594937e-05,
+          8.6777853e-05, 8.4998038e-05, 8.3254727e-05, 8.1547172e-05, 7.9874638e-05, 7.8236408e-05, 7.6631778e-05, 7.5060059e-05, 7.3520576e-05, 7.2012668e-05,
+          7.0535687e-05, 6.9088999e-05, 6.7671983e-05, 6.6284030e-05, 6.4924543e-05, 6.3592940e-05, 6.2288648e-05, 6.1011107e-05, 5.9759768e-05, 5.8534094e-05,
+          5.7333559e-05, 5.6157647e-05, 5.5005853e-05, 5.3877682e-05, 5.2772650e-05, 5.1690282e-05, 5.0630114e-05, 4.9591689e-05, 4.8574563e-05, 4.7578298e-05,
+          4.6602467e-05, 4.5646649e-05, 4.4710436e-05, 4.3793424e-05, 4.2895220e-05, 4.2015439e-05, 4.1153701e-05, 4.0309638e-05, 3.9482887e-05, 3.8673093e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3b1c281e26b03a4e294a97c4b3ebc8f366eb229a
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv
@@ -0,0 +1,2 @@
+lon,lat,rate
+TODO
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..62dfb00e2b4927bb963f82e0fe36e0506219cca2
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson
@@ -0,0 +1,107 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "Polygon",
+    "coordinates": [[
+      [-122.000, 38.901],
+      [-121.920, 38.899],
+      [-121.840, 38.892],
+      [-121.760, 38.881],
+      [-121.682, 38.866],
+      [-121.606, 38.846],
+      [-121.532, 38.822],
+      [-121.460, 38.794],
+      [-121.390, 38.762],
+      [-121.324, 38.727],
+      [-121.261, 38.688],
+      [-121.202, 38.645],
+      [-121.147, 38.600],
+      [-121.096, 38.551],
+      [-121.050, 38.500],
+      [-121.008, 38.446],
+      [-120.971, 38.390],
+      [-120.940, 38.333],
+      [-120.913, 38.273],
+      [-120.892, 38.213],
+      [-120.876, 38.151],
+      [-120.866, 38.089],
+      [-120.862, 38.026],
+      [-120.863, 37.963],
+      [-120.869, 37.900],
+      [-120.881, 37.838],
+      [-120.899, 37.777],
+      [-120.921, 37.717],
+      [-120.949, 37.658],
+      [-120.982, 37.601],
+      [-121.020, 37.545],
+      [-121.063, 37.492],
+      [-121.110, 37.442],
+      [-121.161, 37.394],
+      [-121.216, 37.349],
+      [-121.275, 37.308],
+      [-121.337, 37.269],
+      [-121.403, 37.234],
+      [-121.471, 37.203],
+      [-121.542, 37.176],
+      [-121.615, 37.153],
+      [-121.690, 37.133],
+      [-121.766, 37.118],
+      [-121.843, 37.108],
+      [-121.922, 37.101],
+      [-122.000, 37.099],
+      [-122.078, 37.101],
+      [-122.157, 37.108],
+      [-122.234, 37.118],
+      [-122.310, 37.133],
+      [-122.385, 37.153],
+      [-122.458, 37.176],
+      [-122.529, 37.203],
+      [-122.597, 37.234],
+      [-122.663, 37.269],
+      [-122.725, 37.308],
+      [-122.784, 37.349],
+      [-122.839, 37.394],
+      [-122.890, 37.442],
+      [-122.937, 37.492],
+      [-122.980, 37.545],
+      [-123.018, 37.601],
+      [-123.051, 37.658],
+      [-123.079, 37.717],
+      [-123.101, 37.777],
+      [-123.119, 37.838],
+      [-123.131, 37.900],
+      [-123.137, 37.963],
+      [-123.138, 38.026],
+      [-123.134, 38.089],
+      [-123.124, 38.151],
+      [-123.108, 38.213],
+      [-123.087, 38.273],
+      [-123.060, 38.333],
+      [-123.029, 38.390],
+      [-122.992, 38.446],
+      [-122.950, 38.500],
+      [-122.904, 38.551],
+      [-122.853, 38.600],
+      [-122.798, 38.645],
+      [-122.739, 38.688],
+      [-122.676, 38.727],
+      [-122.610, 38.762],
+      [-122.540, 38.794],
+      [-122.468, 38.822],
+      [-122.394, 38.846],
+      [-122.318, 38.866],
+      [-122.240, 38.881],
+      [-122.160, 38.892],
+      [-122.080, 38.899],
+      [-122.000, 38.901]
+    ]]
+  },
+  "properties": {
+    "name": "Set1-Case10 zone",
+    "state": "CA",
+    "rate": "set1-case10.csv",
+    "strike": null,
+    "mfd-tree": "set1-case10-mfd"
+  }
+}
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..b55cb9c973c2c16771cbabd170655d94231e313c
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set1-case10",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/tree-info.json
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..142b55e720aea87d07b9326900ad6c3cefe5840d
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json
@@ -0,0 +1,21 @@
+{
+  "grid-spacing": 0.05,
+  "smoothing-density": null,
+  "smoothing-limit": null,
+  "opt-distance-bin": null,
+  "point-source-type": "POINT",
+  "rupture-scaling": "PEER",
+  "max-depth": 30.0,
+  "focal-mech-tree": [
+    { "id": "STRIKE_SLIP", "weight": 1.0 }
+  ],
+  "grid-depth-map": {
+    "all": {
+      "mMin": 4.5,
+      "mMax": 10.0,
+      "depth-tree": [
+        { "id": "5 km", "weight": 1.0, "value": 5.0 }
+      ]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case10-fast/calc-config.json b/etc/peer/models/Set1-Case10-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case10-fast/model-info.json b/etc/peer/models/Set1-Case10-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..694ee43da3ff65e65d7be33b0f516302e9107ed2
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set1-Case10-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set1-Case10-fast/sites.csv b/etc/peer/models/Set1-Case10-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ca911de79e3428e02b68783fde8f5911cb5bc9ff
--- /dev/null
+++ b/etc/peer/models/Set1-Case10-fast/sites.csv
@@ -0,0 +1,5 @@
+name, lon, lat
+PEER S1-Area-Site1, -122.0, 38.0
+PEER S1-Area-Site2, -122.0, 37.550
+PEER S1-Area-Site3, -122.0, 37.099
+PEER S1-Area-Site4, -122.0, 36.874
diff --git a/etc/peer/models/Set1-Case10/active-crust/gmm-config.json b/etc/peer/models/Set1-Case10/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set1-Case10/active-crust/gmm-tree.json b/etc/peer/models/Set1-Case10/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..8392687bb5778aed9e7ac67063c89c1fa5ec6e1f
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "SADIGH_97", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ae2bde78fd129c6048434c530cddb533efe38f3
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json
@@ -0,0 +1,43 @@
+{
+  "set1-case10-mfd": [
+    {
+      "id": "set1-case10",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495],
+        "rates": [
+          0.00084802548, 0.00083063247, 0.00081359618, 0.00079690931, 0.00078056469, 0.00076455530, 0.00074887426, 0.00073351484, 0.00071847044, 0.00070373460,
+          0.00068930099, 0.00067516342, 0.00066131581, 0.00064775221, 0.00063446680, 0.00062145388, 0.00060870785, 0.00059622324, 0.00058399470, 0.00057201696,
+          0.00056028488, 0.00054879343, 0.00053753767, 0.00052651276, 0.00051571398, 0.00050513668, 0.00049477632, 0.00048462845, 0.00047468871, 0.00046495284,
+          0.00045541665, 0.00044607605, 0.00043692702, 0.00042796564, 0.00041918806, 0.00041059051, 0.00040216929, 0.00039392079, 0.00038584147, 0.00037792786,
+          0.00037017655, 0.00036258422, 0.00035514762, 0.00034786353, 0.00034072885, 0.00033374049, 0.00032689547, 0.00032019084, 0.00031362372, 0.00030719129,
+          0.00030089080, 0.00029471952, 0.00028867482, 0.00028275409, 0.00027695480, 0.00027127446, 0.00026571061, 0.00026026089, 0.00025492293, 0.00024969446,
+          0.00024457322, 0.00023955702, 0.00023464370, 0.00022983116, 0.00022511732, 0.00022050016, 0.00021597770, 0.00021154799, 0.00020720914, 0.00020295928,
+          0.00019879658, 0.00019471926, 0.00019072556, 0.00018681378, 0.00018298222, 0.00017922926, 0.00017555326, 0.00017195266, 0.00016842591, 0.00016497149,
+          0.00016158792, 0.00015827375, 0.00015502756, 0.00015184794, 0.00014873354, 0.00014568301, 0.00014269505, 0.00013976837, 0.00013690172, 0.00013409386,
+          0.00013134360, 0.00012864974, 0.00012601113, 0.00012342664, 0.00012089516, 0.00011841560, 0.00011598689, 0.00011360800, 0.00011127790, 0.00010899558,
+          0.00010676008, 0.00010457043, 0.00010242569, 0.00010032494, 9.8267273e-05, 9.6251810e-05, 9.4277684e-05, 9.2344047e-05, 9.0450069e-05, 8.8594937e-05,
+          8.6777853e-05, 8.4998038e-05, 8.3254727e-05, 8.1547172e-05, 7.9874638e-05, 7.8236408e-05, 7.6631778e-05, 7.5060059e-05, 7.3520576e-05, 7.2012668e-05,
+          7.0535687e-05, 6.9088999e-05, 6.7671983e-05, 6.6284030e-05, 6.4924543e-05, 6.3592940e-05, 6.2288648e-05, 6.1011107e-05, 5.9759768e-05, 5.8534094e-05,
+          5.7333559e-05, 5.6157647e-05, 5.5005853e-05, 5.3877682e-05, 5.2772650e-05, 5.1690282e-05, 5.0630114e-05, 4.9591689e-05, 4.8574563e-05, 4.7578298e-05,
+          4.6602467e-05, 4.5646649e-05, 4.4710436e-05, 4.3793424e-05, 4.2895220e-05, 4.2015439e-05, 4.1153701e-05, 4.0309638e-05, 3.9482887e-05, 3.8673093e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3b1c281e26b03a4e294a97c4b3ebc8f366eb229a
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv
@@ -0,0 +1,2 @@
+lon,lat,rate
+TODO
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..62dfb00e2b4927bb963f82e0fe36e0506219cca2
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson
@@ -0,0 +1,107 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "Polygon",
+    "coordinates": [[
+      [-122.000, 38.901],
+      [-121.920, 38.899],
+      [-121.840, 38.892],
+      [-121.760, 38.881],
+      [-121.682, 38.866],
+      [-121.606, 38.846],
+      [-121.532, 38.822],
+      [-121.460, 38.794],
+      [-121.390, 38.762],
+      [-121.324, 38.727],
+      [-121.261, 38.688],
+      [-121.202, 38.645],
+      [-121.147, 38.600],
+      [-121.096, 38.551],
+      [-121.050, 38.500],
+      [-121.008, 38.446],
+      [-120.971, 38.390],
+      [-120.940, 38.333],
+      [-120.913, 38.273],
+      [-120.892, 38.213],
+      [-120.876, 38.151],
+      [-120.866, 38.089],
+      [-120.862, 38.026],
+      [-120.863, 37.963],
+      [-120.869, 37.900],
+      [-120.881, 37.838],
+      [-120.899, 37.777],
+      [-120.921, 37.717],
+      [-120.949, 37.658],
+      [-120.982, 37.601],
+      [-121.020, 37.545],
+      [-121.063, 37.492],
+      [-121.110, 37.442],
+      [-121.161, 37.394],
+      [-121.216, 37.349],
+      [-121.275, 37.308],
+      [-121.337, 37.269],
+      [-121.403, 37.234],
+      [-121.471, 37.203],
+      [-121.542, 37.176],
+      [-121.615, 37.153],
+      [-121.690, 37.133],
+      [-121.766, 37.118],
+      [-121.843, 37.108],
+      [-121.922, 37.101],
+      [-122.000, 37.099],
+      [-122.078, 37.101],
+      [-122.157, 37.108],
+      [-122.234, 37.118],
+      [-122.310, 37.133],
+      [-122.385, 37.153],
+      [-122.458, 37.176],
+      [-122.529, 37.203],
+      [-122.597, 37.234],
+      [-122.663, 37.269],
+      [-122.725, 37.308],
+      [-122.784, 37.349],
+      [-122.839, 37.394],
+      [-122.890, 37.442],
+      [-122.937, 37.492],
+      [-122.980, 37.545],
+      [-123.018, 37.601],
+      [-123.051, 37.658],
+      [-123.079, 37.717],
+      [-123.101, 37.777],
+      [-123.119, 37.838],
+      [-123.131, 37.900],
+      [-123.137, 37.963],
+      [-123.138, 38.026],
+      [-123.134, 38.089],
+      [-123.124, 38.151],
+      [-123.108, 38.213],
+      [-123.087, 38.273],
+      [-123.060, 38.333],
+      [-123.029, 38.390],
+      [-122.992, 38.446],
+      [-122.950, 38.500],
+      [-122.904, 38.551],
+      [-122.853, 38.600],
+      [-122.798, 38.645],
+      [-122.739, 38.688],
+      [-122.676, 38.727],
+      [-122.610, 38.762],
+      [-122.540, 38.794],
+      [-122.468, 38.822],
+      [-122.394, 38.846],
+      [-122.318, 38.866],
+      [-122.240, 38.881],
+      [-122.160, 38.892],
+      [-122.080, 38.899],
+      [-122.000, 38.901]
+    ]]
+  },
+  "properties": {
+    "name": "Set1-Case10 zone",
+    "state": "CA",
+    "rate": "set1-case10.csv",
+    "strike": null,
+    "mfd-tree": "set1-case10-mfd"
+  }
+}
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json b/etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..b55cb9c973c2c16771cbabd170655d94231e313c
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set1-case10",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case10/active-crust/zone/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case10/active-crust/zone/tree-info.json
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..bc30a9d8639609f7007608d682c251e8352f0a47
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json
@@ -0,0 +1,21 @@
+{
+  "grid-spacing": 0.01,
+  "smoothing-density": null,
+  "smoothing-limit": null,
+  "opt-distance-bin": null,
+  "point-source-type": "POINT",
+  "rupture-scaling": "PEER",
+  "max-depth": 30.0,
+  "focal-mech-tree": [
+    { "id": "STRIKE_SLIP", "weight": 1.0 }
+  ],
+  "grid-depth-map": {
+    "all": {
+      "mMin": 4.5,
+      "mMax": 10.0,
+      "depth-tree": [
+        { "id": "5 km", "weight": 1.0, "value": 5.0 }
+      ]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case10/calc-config.json b/etc/peer/models/Set1-Case10/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case10/model-info.json b/etc/peer/models/Set1-Case10/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..de753fa4c1575fc4f90fd8724a0fad0cec39ef57
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set1-Case10",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set1-Case10/sites.csv b/etc/peer/models/Set1-Case10/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ca911de79e3428e02b68783fde8f5911cb5bc9ff
--- /dev/null
+++ b/etc/peer/models/Set1-Case10/sites.csv
@@ -0,0 +1,5 @@
+name, lon, lat
+PEER S1-Area-Site1, -122.0, 38.0
+PEER S1-Area-Site2, -122.0, 37.550
+PEER S1-Area-Site3, -122.0, 37.099
+PEER S1-Area-Site4, -122.0, 36.874
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/gmm-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/gmm-tree.json b/etc/peer/models/Set1-Case11-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..8392687bb5778aed9e7ac67063c89c1fa5ec6e1f
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "SADIGH_97", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..eba7d84ab3ad0302a9a929fad05a49daf1ef4c49
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json
@@ -0,0 +1,43 @@
+{
+  "set1-case11-mfd": [
+    {
+      "id": "set1-case11",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495],
+        "rates": [
+          0.00084802548, 0.00083063247, 0.00081359618, 0.00079690931, 0.00078056469, 0.00076455530, 0.00074887426, 0.00073351484, 0.00071847044, 0.00070373460,
+          0.00068930099, 0.00067516342, 0.00066131581, 0.00064775221, 0.00063446680, 0.00062145388, 0.00060870785, 0.00059622324, 0.00058399470, 0.00057201696,
+          0.00056028488, 0.00054879343, 0.00053753767, 0.00052651276, 0.00051571398, 0.00050513668, 0.00049477632, 0.00048462845, 0.00047468871, 0.00046495284,
+          0.00045541665, 0.00044607605, 0.00043692702, 0.00042796564, 0.00041918806, 0.00041059051, 0.00040216929, 0.00039392079, 0.00038584147, 0.00037792786,
+          0.00037017655, 0.00036258422, 0.00035514762, 0.00034786353, 0.00034072885, 0.00033374049, 0.00032689547, 0.00032019084, 0.00031362372, 0.00030719129,
+          0.00030089080, 0.00029471952, 0.00028867482, 0.00028275409, 0.00027695480, 0.00027127446, 0.00026571061, 0.00026026089, 0.00025492293, 0.00024969446,
+          0.00024457322, 0.00023955702, 0.00023464370, 0.00022983116, 0.00022511732, 0.00022050016, 0.00021597770, 0.00021154799, 0.00020720914, 0.00020295928,
+          0.00019879658, 0.00019471926, 0.00019072556, 0.00018681378, 0.00018298222, 0.00017922926, 0.00017555326, 0.00017195266, 0.00016842591, 0.00016497149,
+          0.00016158792, 0.00015827375, 0.00015502756, 0.00015184794, 0.00014873354, 0.00014568301, 0.00014269505, 0.00013976837, 0.00013690172, 0.00013409386,
+          0.00013134360, 0.00012864974, 0.00012601113, 0.00012342664, 0.00012089516, 0.00011841560, 0.00011598689, 0.00011360800, 0.00011127790, 0.00010899558,
+          0.00010676008, 0.00010457043, 0.00010242569, 0.00010032494, 9.8267273e-05, 9.6251810e-05, 9.4277684e-05, 9.2344047e-05, 9.0450069e-05, 8.8594937e-05,
+          8.6777853e-05, 8.4998038e-05, 8.3254727e-05, 8.1547172e-05, 7.9874638e-05, 7.8236408e-05, 7.6631778e-05, 7.5060059e-05, 7.3520576e-05, 7.2012668e-05,
+          7.0535687e-05, 6.9088999e-05, 6.7671983e-05, 6.6284030e-05, 6.4924543e-05, 6.3592940e-05, 6.2288648e-05, 6.1011107e-05, 5.9759768e-05, 5.8534094e-05,
+          5.7333559e-05, 5.6157647e-05, 5.5005853e-05, 5.3877682e-05, 5.2772650e-05, 5.1690282e-05, 5.0630114e-05, 4.9591689e-05, 4.8574563e-05, 4.7578298e-05,
+          4.6602467e-05, 4.5646649e-05, 4.4710436e-05, 4.3793424e-05, 4.2895220e-05, 4.2015439e-05, 4.1153701e-05, 4.0309638e-05, 3.9482887e-05, 3.8673093e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3b1c281e26b03a4e294a97c4b3ebc8f366eb229a
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv
@@ -0,0 +1,2 @@
+lon,lat,rate
+TODO
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..0ee0f41188c47f0cc8c9424a8bee7535af38367b
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson
@@ -0,0 +1,107 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "Polygon",
+    "coordinates": [[
+      [-122.000, 38.901],
+      [-121.920, 38.899],
+      [-121.840, 38.892],
+      [-121.760, 38.881],
+      [-121.682, 38.866],
+      [-121.606, 38.846],
+      [-121.532, 38.822],
+      [-121.460, 38.794],
+      [-121.390, 38.762],
+      [-121.324, 38.727],
+      [-121.261, 38.688],
+      [-121.202, 38.645],
+      [-121.147, 38.600],
+      [-121.096, 38.551],
+      [-121.050, 38.500],
+      [-121.008, 38.446],
+      [-120.971, 38.390],
+      [-120.940, 38.333],
+      [-120.913, 38.273],
+      [-120.892, 38.213],
+      [-120.876, 38.151],
+      [-120.866, 38.089],
+      [-120.862, 38.026],
+      [-120.863, 37.963],
+      [-120.869, 37.900],
+      [-120.881, 37.838],
+      [-120.899, 37.777],
+      [-120.921, 37.717],
+      [-120.949, 37.658],
+      [-120.982, 37.601],
+      [-121.020, 37.545],
+      [-121.063, 37.492],
+      [-121.110, 37.442],
+      [-121.161, 37.394],
+      [-121.216, 37.349],
+      [-121.275, 37.308],
+      [-121.337, 37.269],
+      [-121.403, 37.234],
+      [-121.471, 37.203],
+      [-121.542, 37.176],
+      [-121.615, 37.153],
+      [-121.690, 37.133],
+      [-121.766, 37.118],
+      [-121.843, 37.108],
+      [-121.922, 37.101],
+      [-122.000, 37.099],
+      [-122.078, 37.101],
+      [-122.157, 37.108],
+      [-122.234, 37.118],
+      [-122.310, 37.133],
+      [-122.385, 37.153],
+      [-122.458, 37.176],
+      [-122.529, 37.203],
+      [-122.597, 37.234],
+      [-122.663, 37.269],
+      [-122.725, 37.308],
+      [-122.784, 37.349],
+      [-122.839, 37.394],
+      [-122.890, 37.442],
+      [-122.937, 37.492],
+      [-122.980, 37.545],
+      [-123.018, 37.601],
+      [-123.051, 37.658],
+      [-123.079, 37.717],
+      [-123.101, 37.777],
+      [-123.119, 37.838],
+      [-123.131, 37.900],
+      [-123.137, 37.963],
+      [-123.138, 38.026],
+      [-123.134, 38.089],
+      [-123.124, 38.151],
+      [-123.108, 38.213],
+      [-123.087, 38.273],
+      [-123.060, 38.333],
+      [-123.029, 38.390],
+      [-122.992, 38.446],
+      [-122.950, 38.500],
+      [-122.904, 38.551],
+      [-122.853, 38.600],
+      [-122.798, 38.645],
+      [-122.739, 38.688],
+      [-122.676, 38.727],
+      [-122.610, 38.762],
+      [-122.540, 38.794],
+      [-122.468, 38.822],
+      [-122.394, 38.846],
+      [-122.318, 38.866],
+      [-122.240, 38.881],
+      [-122.160, 38.892],
+      [-122.080, 38.899],
+      [-122.000, 38.901]
+    ]]
+  },
+  "properties": {
+    "name": "Set1-Case11 zone",
+    "state": "CA",
+    "rate": "set1-case11.csv",
+    "strike": null,
+    "mfd-tree": "set1-case11-mfd"
+  }
+}
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2a9e330c4adfa1152e8cfcccfdb2ee4b0b5468b
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set1-case11",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/tree-info.json
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..390f6541a9fcdbbd6e8f197aa412f4570294985b
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json
@@ -0,0 +1,26 @@
+{
+  "grid-spacing": 0.1,
+  "smoothing-density": null,
+  "smoothing-limit": null,
+  "opt-distance-bin": null,
+  "point-source-type": "POINT",
+  "rupture-scaling": "PEER",
+  "max-depth": 30.0,
+  "focal-mech-tree": [
+    { "id": "STRIKE_SLIP", "weight": 1.0 }
+  ],
+  "grid-depth-map": {
+    "all": {
+      "mMin": 4.5,
+      "mMax": 10.0,
+      "depth-tree": [
+        { "id": "5 km", "weight": 0.1667, "value": 5.0 },
+        { "id": "6 km", "weight": 0.1666, "value": 6.0 },
+        { "id": "7 km", "weight": 0.1667, "value": 7.0 },
+        { "id": "8 km", "weight": 0.1667, "value": 8.0 },
+        { "id": "9 km", "weight": 0.1666, "value": 9.0 },
+        { "id": "10 km", "weight": 0.1667, "value": 10.0 }
+      ]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case11-fast/calc-config.json b/etc/peer/models/Set1-Case11-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case11-fast/model-info.json b/etc/peer/models/Set1-Case11-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..2dacce72ac9a11ebb82894fcf6227a1f661e514f
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set1-Case11-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set1-Case11-fast/sites.csv b/etc/peer/models/Set1-Case11-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ca911de79e3428e02b68783fde8f5911cb5bc9ff
--- /dev/null
+++ b/etc/peer/models/Set1-Case11-fast/sites.csv
@@ -0,0 +1,5 @@
+name, lon, lat
+PEER S1-Area-Site1, -122.0, 38.0
+PEER S1-Area-Site2, -122.0, 37.550
+PEER S1-Area-Site3, -122.0, 37.099
+PEER S1-Area-Site4, -122.0, 36.874
diff --git a/etc/peer/models/Set1-Case11/active-crust/gmm-config.json b/etc/peer/models/Set1-Case11/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set1-Case11/active-crust/gmm-tree.json b/etc/peer/models/Set1-Case11/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..8392687bb5778aed9e7ac67063c89c1fa5ec6e1f
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "SADIGH_97", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..eba7d84ab3ad0302a9a929fad05a49daf1ef4c49
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json
@@ -0,0 +1,43 @@
+{
+  "set1-case11-mfd": [
+    {
+      "id": "set1-case11",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495],
+        "rates": [
+          0.00084802548, 0.00083063247, 0.00081359618, 0.00079690931, 0.00078056469, 0.00076455530, 0.00074887426, 0.00073351484, 0.00071847044, 0.00070373460,
+          0.00068930099, 0.00067516342, 0.00066131581, 0.00064775221, 0.00063446680, 0.00062145388, 0.00060870785, 0.00059622324, 0.00058399470, 0.00057201696,
+          0.00056028488, 0.00054879343, 0.00053753767, 0.00052651276, 0.00051571398, 0.00050513668, 0.00049477632, 0.00048462845, 0.00047468871, 0.00046495284,
+          0.00045541665, 0.00044607605, 0.00043692702, 0.00042796564, 0.00041918806, 0.00041059051, 0.00040216929, 0.00039392079, 0.00038584147, 0.00037792786,
+          0.00037017655, 0.00036258422, 0.00035514762, 0.00034786353, 0.00034072885, 0.00033374049, 0.00032689547, 0.00032019084, 0.00031362372, 0.00030719129,
+          0.00030089080, 0.00029471952, 0.00028867482, 0.00028275409, 0.00027695480, 0.00027127446, 0.00026571061, 0.00026026089, 0.00025492293, 0.00024969446,
+          0.00024457322, 0.00023955702, 0.00023464370, 0.00022983116, 0.00022511732, 0.00022050016, 0.00021597770, 0.00021154799, 0.00020720914, 0.00020295928,
+          0.00019879658, 0.00019471926, 0.00019072556, 0.00018681378, 0.00018298222, 0.00017922926, 0.00017555326, 0.00017195266, 0.00016842591, 0.00016497149,
+          0.00016158792, 0.00015827375, 0.00015502756, 0.00015184794, 0.00014873354, 0.00014568301, 0.00014269505, 0.00013976837, 0.00013690172, 0.00013409386,
+          0.00013134360, 0.00012864974, 0.00012601113, 0.00012342664, 0.00012089516, 0.00011841560, 0.00011598689, 0.00011360800, 0.00011127790, 0.00010899558,
+          0.00010676008, 0.00010457043, 0.00010242569, 0.00010032494, 9.8267273e-05, 9.6251810e-05, 9.4277684e-05, 9.2344047e-05, 9.0450069e-05, 8.8594937e-05,
+          8.6777853e-05, 8.4998038e-05, 8.3254727e-05, 8.1547172e-05, 7.9874638e-05, 7.8236408e-05, 7.6631778e-05, 7.5060059e-05, 7.3520576e-05, 7.2012668e-05,
+          7.0535687e-05, 6.9088999e-05, 6.7671983e-05, 6.6284030e-05, 6.4924543e-05, 6.3592940e-05, 6.2288648e-05, 6.1011107e-05, 5.9759768e-05, 5.8534094e-05,
+          5.7333559e-05, 5.6157647e-05, 5.5005853e-05, 5.3877682e-05, 5.2772650e-05, 5.1690282e-05, 5.0630114e-05, 4.9591689e-05, 4.8574563e-05, 4.7578298e-05,
+          4.6602467e-05, 4.5646649e-05, 4.4710436e-05, 4.3793424e-05, 4.2895220e-05, 4.2015439e-05, 4.1153701e-05, 4.0309638e-05, 3.9482887e-05, 3.8673093e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3b1c281e26b03a4e294a97c4b3ebc8f366eb229a
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv
@@ -0,0 +1,2 @@
+lon,lat,rate
+TODO
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..0ee0f41188c47f0cc8c9424a8bee7535af38367b
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson
@@ -0,0 +1,107 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "Polygon",
+    "coordinates": [[
+      [-122.000, 38.901],
+      [-121.920, 38.899],
+      [-121.840, 38.892],
+      [-121.760, 38.881],
+      [-121.682, 38.866],
+      [-121.606, 38.846],
+      [-121.532, 38.822],
+      [-121.460, 38.794],
+      [-121.390, 38.762],
+      [-121.324, 38.727],
+      [-121.261, 38.688],
+      [-121.202, 38.645],
+      [-121.147, 38.600],
+      [-121.096, 38.551],
+      [-121.050, 38.500],
+      [-121.008, 38.446],
+      [-120.971, 38.390],
+      [-120.940, 38.333],
+      [-120.913, 38.273],
+      [-120.892, 38.213],
+      [-120.876, 38.151],
+      [-120.866, 38.089],
+      [-120.862, 38.026],
+      [-120.863, 37.963],
+      [-120.869, 37.900],
+      [-120.881, 37.838],
+      [-120.899, 37.777],
+      [-120.921, 37.717],
+      [-120.949, 37.658],
+      [-120.982, 37.601],
+      [-121.020, 37.545],
+      [-121.063, 37.492],
+      [-121.110, 37.442],
+      [-121.161, 37.394],
+      [-121.216, 37.349],
+      [-121.275, 37.308],
+      [-121.337, 37.269],
+      [-121.403, 37.234],
+      [-121.471, 37.203],
+      [-121.542, 37.176],
+      [-121.615, 37.153],
+      [-121.690, 37.133],
+      [-121.766, 37.118],
+      [-121.843, 37.108],
+      [-121.922, 37.101],
+      [-122.000, 37.099],
+      [-122.078, 37.101],
+      [-122.157, 37.108],
+      [-122.234, 37.118],
+      [-122.310, 37.133],
+      [-122.385, 37.153],
+      [-122.458, 37.176],
+      [-122.529, 37.203],
+      [-122.597, 37.234],
+      [-122.663, 37.269],
+      [-122.725, 37.308],
+      [-122.784, 37.349],
+      [-122.839, 37.394],
+      [-122.890, 37.442],
+      [-122.937, 37.492],
+      [-122.980, 37.545],
+      [-123.018, 37.601],
+      [-123.051, 37.658],
+      [-123.079, 37.717],
+      [-123.101, 37.777],
+      [-123.119, 37.838],
+      [-123.131, 37.900],
+      [-123.137, 37.963],
+      [-123.138, 38.026],
+      [-123.134, 38.089],
+      [-123.124, 38.151],
+      [-123.108, 38.213],
+      [-123.087, 38.273],
+      [-123.060, 38.333],
+      [-123.029, 38.390],
+      [-122.992, 38.446],
+      [-122.950, 38.500],
+      [-122.904, 38.551],
+      [-122.853, 38.600],
+      [-122.798, 38.645],
+      [-122.739, 38.688],
+      [-122.676, 38.727],
+      [-122.610, 38.762],
+      [-122.540, 38.794],
+      [-122.468, 38.822],
+      [-122.394, 38.846],
+      [-122.318, 38.866],
+      [-122.240, 38.881],
+      [-122.160, 38.892],
+      [-122.080, 38.899],
+      [-122.000, 38.901]
+    ]]
+  },
+  "properties": {
+    "name": "Set1-Case11 zone",
+    "state": "CA",
+    "rate": "set1-case11.csv",
+    "strike": null,
+    "mfd-tree": "set1-case11-mfd"
+  }
+}
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json b/etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2a9e330c4adfa1152e8cfcccfdb2ee4b0b5468b
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set1-case11",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case11/active-crust/zone/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case11/active-crust/zone/tree-info.json
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..d1e925cd546d3c349e6b0cc31445c92e34acf1a6
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json
@@ -0,0 +1,26 @@
+{
+  "grid-spacing": 0.02,
+  "smoothing-density": null,
+  "smoothing-limit": null,
+  "opt-distance-bin": null,
+  "point-source-type": "POINT",
+  "rupture-scaling": "PEER",
+  "max-depth": 30.0,
+  "focal-mech-tree": [
+    { "id": "STRIKE_SLIP", "weight": 1.0 }
+  ],
+  "grid-depth-map": {
+    "all": {
+      "mMin": 4.5,
+      "mMax": 10.0,
+      "depth-tree": [
+        { "id": "5 km", "weight": 0.1667, "value": 5.0 },
+        { "id": "6 km", "weight": 0.1666, "value": 6.0 },
+        { "id": "7 km", "weight": 0.1667, "value": 7.0 },
+        { "id": "8 km", "weight": 0.1667, "value": 8.0 },
+        { "id": "9 km", "weight": 0.1666, "value": 9.0 },
+        { "id": "10 km", "weight": 0.1667, "value": 10.0 }
+      ]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case11/calc-config.json b/etc/peer/models/Set1-Case11/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set1-Case11/model-info.json b/etc/peer/models/Set1-Case11/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..409dfa0b57238c2dcb29a9c0579000e7d637ac88
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set1-Case11",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set1-Case11/sites.csv b/etc/peer/models/Set1-Case11/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ca911de79e3428e02b68783fde8f5911cb5bc9ff
--- /dev/null
+++ b/etc/peer/models/Set1-Case11/sites.csv
@@ -0,0 +1,5 @@
+name, lon, lat
+PEER S1-Area-Site1, -122.0, 38.0
+PEER S1-Area-Site2, -122.0, 37.550
+PEER S1-Area-Site3, -122.0, 37.099
+PEER S1-Area-Site4, -122.0, 36.874
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/features/set1-case2.geojson b/etc/peer/models/Set1-Case2-fast/active-crust/fault/features/set1-case2.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/features/set1-case2.geojson
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/features/set1-case2.geojson
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/set1-case2/rupture-set.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/set1-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/set1-case2/rupture-set.json
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/set1-case2/rupture-set.json
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case2-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case2-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case2/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case2/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/features/set1-case2.geojson b/etc/peer/models/Set1-Case2/active-crust/fault/features/set1-case2.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/features/set1-case2.geojson
rename to etc/peer/models/Set1-Case2/active-crust/fault/features/set1-case2.geojson
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case2/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case2/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case2/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case2/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/set1-case2/rupture-set.json b/etc/peer/models/Set1-Case2/active-crust/fault/set1-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/set1-case2/rupture-set.json
rename to etc/peer/models/Set1-Case2/active-crust/fault/set1-case2/rupture-set.json
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case2/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case2/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case2/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case2/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/features/set1-case3.geojson b/etc/peer/models/Set1-Case3-fast/active-crust/fault/features/set1-case3.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/features/set1-case3.geojson
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/features/set1-case3.geojson
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/set1-case3/rupture-set.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/set1-case3/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/set1-case3/rupture-set.json
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/set1-case3/rupture-set.json
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case3-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case3-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case3/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case3/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/features/set1-case3.geojson b/etc/peer/models/Set1-Case3/active-crust/fault/features/set1-case3.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/features/set1-case3.geojson
rename to etc/peer/models/Set1-Case3/active-crust/fault/features/set1-case3.geojson
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case3/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case3/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case3/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case3/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/set1-case3/rupture-set.json b/etc/peer/models/Set1-Case3/active-crust/fault/set1-case3/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/set1-case3/rupture-set.json
rename to etc/peer/models/Set1-Case3/active-crust/fault/set1-case3/rupture-set.json
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case3/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case3/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case3/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case3/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/features/set1-case4.geojson b/etc/peer/models/Set1-Case4-fast/active-crust/fault/features/set1-case4.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/features/set1-case4.geojson
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/features/set1-case4.geojson
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/set1-case4/rupture-set.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/set1-case4/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/set1-case4/rupture-set.json
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/set1-case4/rupture-set.json
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case4-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case4-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case4/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case4/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/features/set1-case4.geojson b/etc/peer/models/Set1-Case4/active-crust/fault/features/set1-case4.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/features/set1-case4.geojson
rename to etc/peer/models/Set1-Case4/active-crust/fault/features/set1-case4.geojson
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case4/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case4/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case4/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case4/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/set1-case4/rupture-set.json b/etc/peer/models/Set1-Case4/active-crust/fault/set1-case4/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/set1-case4/rupture-set.json
rename to etc/peer/models/Set1-Case4/active-crust/fault/set1-case4/rupture-set.json
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case4/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case4/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case4/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case4/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/features/set1-case5.geojson b/etc/peer/models/Set1-Case5-fast/active-crust/fault/features/set1-case5.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/features/set1-case5.geojson
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/features/set1-case5.geojson
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/set1-case5/rupture-set.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/set1-case5/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/set1-case5/rupture-set.json
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/set1-case5/rupture-set.json
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case5-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case5-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case5/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case5/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/features/set1-case5.geojson b/etc/peer/models/Set1-Case5/active-crust/fault/features/set1-case5.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/features/set1-case5.geojson
rename to etc/peer/models/Set1-Case5/active-crust/fault/features/set1-case5.geojson
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case5/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case5/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case5/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case5/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/set1-case5/rupture-set.json b/etc/peer/models/Set1-Case5/active-crust/fault/set1-case5/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/set1-case5/rupture-set.json
rename to etc/peer/models/Set1-Case5/active-crust/fault/set1-case5/rupture-set.json
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case5/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case5/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case5/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case5/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/features/set1-case6.geojson b/etc/peer/models/Set1-Case6-fast/active-crust/fault/features/set1-case6.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/features/set1-case6.geojson
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/features/set1-case6.geojson
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/set1-case6/rupture-set.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/set1-case6/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/set1-case6/rupture-set.json
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/set1-case6/rupture-set.json
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case6-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case6-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case6/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case6/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/features/set1-case6.geojson b/etc/peer/models/Set1-Case6/active-crust/fault/features/set1-case6.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/features/set1-case6.geojson
rename to etc/peer/models/Set1-Case6/active-crust/fault/features/set1-case6.geojson
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case6/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case6/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case6/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case6/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/set1-case6/rupture-set.json b/etc/peer/models/Set1-Case6/active-crust/fault/set1-case6/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/set1-case6/rupture-set.json
rename to etc/peer/models/Set1-Case6/active-crust/fault/set1-case6/rupture-set.json
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case6/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case6/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case6/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case6/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/features/set1-case7.geojson b/etc/peer/models/Set1-Case7-fast/active-crust/fault/features/set1-case7.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/features/set1-case7.geojson
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/features/set1-case7.geojson
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/set1-case7/rupture-set.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/set1-case7/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/set1-case7/rupture-set.json
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/set1-case7/rupture-set.json
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set1-Case7-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set1-Case7-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case7/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case7/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/features/set1-case7.geojson b/etc/peer/models/Set1-Case7/active-crust/fault/features/set1-case7.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/features/set1-case7.geojson
rename to etc/peer/models/Set1-Case7/active-crust/fault/features/set1-case7.geojson
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case7/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case7/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case7/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case7/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/set1-case7/rupture-set.json b/etc/peer/models/Set1-Case7/active-crust/fault/set1-case7/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/set1-case7/rupture-set.json
rename to etc/peer/models/Set1-Case7/active-crust/fault/set1-case7/rupture-set.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case7/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case7/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault/tree-info.json b/etc/peer/models/Set1-Case7/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set1-Case7/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8a/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case8a/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/features/set1-case8a.geojson b/etc/peer/models/Set1-Case8a/active-crust/fault/features/set1-case8a.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/features/set1-case8a.geojson
rename to etc/peer/models/Set1-Case8a/active-crust/fault/features/set1-case8a.geojson
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8a/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case8a/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/set1-case8a/rupture-set.json b/etc/peer/models/Set1-Case8a/active-crust/fault/set1-case8a/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/set1-case8a/rupture-set.json
rename to etc/peer/models/Set1-Case8a/active-crust/fault/set1-case8a/rupture-set.json
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8a/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case8a/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault/tree-info.json b/etc/peer/models/Set1-Case8a/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set1-Case8a/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8b/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case8b/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/features/set1-case8b.geojson b/etc/peer/models/Set1-Case8b/active-crust/fault/features/set1-case8b.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/features/set1-case8b.geojson
rename to etc/peer/models/Set1-Case8b/active-crust/fault/features/set1-case8b.geojson
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8b/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case8b/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/set1-case8b/rupture-set.json b/etc/peer/models/Set1-Case8b/active-crust/fault/set1-case8b/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/set1-case8b/rupture-set.json
rename to etc/peer/models/Set1-Case8b/active-crust/fault/set1-case8b/rupture-set.json
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8b/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case8b/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault/tree-info.json b/etc/peer/models/Set1-Case8b/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set1-Case8b/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set1-Case8c/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set1-Case8c/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/features/set1-case8c.geojson b/etc/peer/models/Set1-Case8c/active-crust/fault/features/set1-case8c.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/features/set1-case8c.geojson
rename to etc/peer/models/Set1-Case8c/active-crust/fault/features/set1-case8c.geojson
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-config.json b/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..b570906164a8ee6d9bba84309e7c872afd4a15b3
--- /dev/null
+++ b/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": false
+}
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set1-Case8c/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set1-Case8c/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/set1-case8c/rupture-set.json b/etc/peer/models/Set1-Case8c/active-crust/fault/set1-case8c/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/set1-case8c/rupture-set.json
rename to etc/peer/models/Set1-Case8c/active-crust/fault/set1-case8c/rupture-set.json
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set1-Case8c/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set1-Case8c/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault/tree-info.json b/etc/peer/models/Set1-Case8c/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set1-Case8c/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case1/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3425f0a5a3a608d9800b9d92761c45123a173e31
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2a-fast/calc-config.json b/etc/peer/models/Set2-Case2a-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/model-info.json b/etc/peer/models/Set2-Case2a-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..8cc0e12f4d8c1ebd2010ac401a5ef0ae684b9c4b
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2a-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2a-fast/sites.csv b/etc/peer/models/Set2-Case2a-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..db249965d9662308b2b03ef0d89ae7063cf91015
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.25,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case2-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2a/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2a/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3425f0a5a3a608d9800b9d92761c45123a173e31
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2a/calc-config.json b/etc/peer/models/Set2-Case2a/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2a/model-info.json b/etc/peer/models/Set2-Case2a/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..43538f814b659dad721afae06c3908f2e933cbfa
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2a/sites.csv b/etc/peer/models/Set2-Case2a/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2a/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case2/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee2e3c885c33d20b58fd04f32dd54eaa3a4053a7
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2b-fast/calc-config.json b/etc/peer/models/Set2-Case2b-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/model-info.json b/etc/peer/models/Set2-Case2b-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..f6794d3c6f1f7e6a4829d6ab3067b0cc8fa99235
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2b-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2b-fast/sites.csv b/etc/peer/models/Set2-Case2b-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case3-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2b/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2b/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee2e3c885c33d20b58fd04f32dd54eaa3a4053a7
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2b/calc-config.json b/etc/peer/models/Set2-Case2b/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2b/model-info.json b/etc/peer/models/Set2-Case2b/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..f6794d3c6f1f7e6a4829d6ab3067b0cc8fa99235
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2b-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2b/sites.csv b/etc/peer/models/Set2-Case2b/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2b/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case3/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..79923131feb4c073e0292d4f961e3b8328151792
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2c-fast/calc-config.json b/etc/peer/models/Set2-Case2c-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/model-info.json b/etc/peer/models/Set2-Case2c-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..fb52af86627159752d45eea41d2f1427cc793e4f
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2c-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2c-fast/sites.csv b/etc/peer/models/Set2-Case2c-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case4-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2c/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2c/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2c/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2c/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..79923131feb4c073e0292d4f961e3b8328151792
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2c/calc-config.json b/etc/peer/models/Set2-Case2c/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2c/model-info.json b/etc/peer/models/Set2-Case2c/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..fb52af86627159752d45eea41d2f1427cc793e4f
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2c-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2c/sites.csv b/etc/peer/models/Set2-Case2c/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2c/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case4/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2d-fast/calc-config.json b/etc/peer/models/Set2-Case2d-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/model-info.json b/etc/peer/models/Set2-Case2d-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..3bba48c392296f1d2973a36b2a410224083c3339
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2d-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2d-fast/sites.csv b/etc/peer/models/Set2-Case2d-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2704c6ecfd8b70c76b0a63db41b42e8938ea122
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 1.0,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson b/etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..4034ef91b817ec188ea5d0a09baf80682aae1b17
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 3",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case5-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..9ce645a9b2ea735fed4a996d5808403f0f3cefeb
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json
@@ -0,0 +1,53 @@
+{
+  "set2-case2-mfd": [
+    {
+      "id": "set2-case2-fast",
+      "weight": 1.0,
+      "value": {
+        "type": "INCR",
+        "magnitudes": [
+          5.005, 5.015, 5.025, 5.035, 5.045, 5.055, 5.065, 5.075, 5.085, 5.095,
+          5.105, 5.115, 5.125, 5.135, 5.145, 5.155, 5.165, 5.175, 5.185, 5.195,
+          5.205, 5.215, 5.225, 5.235, 5.245, 5.255, 5.265, 5.275, 5.285, 5.295,
+          5.305, 5.315, 5.325, 5.335, 5.345, 5.355, 5.365, 5.375, 5.385, 5.395,
+          5.405, 5.415, 5.425, 5.435, 5.445, 5.455, 5.465, 5.475, 5.485, 5.495,
+          5.505, 5.515, 5.525, 5.535, 5.545, 5.555, 5.565, 5.575, 5.585, 5.595,
+          5.605, 5.615, 5.625, 5.635, 5.645, 5.655, 5.665, 5.675, 5.685, 5.695,
+          5.705, 5.715, 5.725, 5.735, 5.745, 5.755, 5.765, 5.775, 5.785, 5.795,
+          5.805, 5.815, 5.825, 5.835, 5.845, 5.855, 5.865, 5.875, 5.885, 5.895,
+          5.905, 5.915, 5.925, 5.935, 5.945, 5.955, 5.965, 5.975, 5.985, 5.995,
+          6.005, 6.015, 6.025, 6.035, 6.045, 6.055, 6.065, 6.075, 6.085, 6.095,
+          6.105, 6.115, 6.125, 6.135, 6.145, 6.155, 6.165, 6.175, 6.185, 6.195,
+          6.205, 6.215, 6.225, 6.235, 6.245, 6.255, 6.265, 6.275, 6.285, 6.295,
+          6.305, 6.315, 6.325, 6.335, 6.345, 6.355, 6.365, 6.375, 6.385, 6.395,
+          6.405, 6.415, 6.425, 6.435, 6.445, 6.455, 6.465, 6.475, 6.485, 6.495,
+          6.505, 6.515, 6.525, 6.535, 6.545, 6.555, 6.565, 6.575, 6.585, 6.595,
+          6.605, 6.615, 6.625, 6.635, 6.645, 6.655, 6.665, 6.675, 6.685, 6.695,
+          6.705, 6.715, 6.725, 6.735, 6.745, 6.755, 6.765, 6.775, 6.785, 6.795,
+          6.805, 6.815, 6.825, 6.835, 6.845, 6.855, 6.865, 6.875, 6.885, 6.895,
+          6.905, 6.915, 6.925, 6.935, 6.945, 6.955, 6.965, 6.975, 6.985, 6.995], 
+        "rates": [
+          0.0014881586, 0.0014576364, 0.0014277403, 0.0013984573, 0.0013697749, 0.0013416808, 0.0013141629, 0.0012872094, 0.0012608088, 0.0012349496,
+          0.0012096207, 0.0011848114, 0.0011605109, 0.0011367088, 0.0011133949, 0.0010905591, 0.0010681917, 0.0010462831, 0.0010248238, 0.0010038047,
+          0.00098321664, 0.00096305085, 0.00094329866, 0.00092395159, 0.00090500133, 0.00088643974, 0.00086825885, 0.00085045085, 0.00083300809, 0.00081592308,
+          0.00079918849, 0.00078279712, 0.00076674194, 0.00075101605, 0.00073561270, 0.00072052527, 0.00070574729, 0.00069127240, 0.00067709439, 0.00066320718,
+          0.00064960479, 0.00063628139, 0.00062323125, 0.00061044876, 0.00059792845, 0.00058566493, 0.00057365293, 0.00056188730, 0.00055036299, 0.00053907503,
+          0.00052801860, 0.00051718893, 0.00050658137, 0.00049619138, 0.00048601449, 0.00047604633, 0.00046628261, 0.00045671915, 0.00044735183, 0.00043817664,
+          0.00042918963, 0.00042038694, 0.00041176480, 0.00040331950, 0.00039504741, 0.00038694498, 0.00037900873, 0.00037123526, 0.00036362122, 0.00035616334,
+          0.00034885843, 0.00034170334, 0.00033469500, 0.00032783040, 0.00032110659, 0.00031452069, 0.00030806986, 0.00030175135, 0.00029556242, 0.00028950043,
+          0.00028356278, 0.00027774690, 0.00027205031, 0.00026647055, 0.00026100523, 0.00025565201, 0.00025040859, 0.00024527270, 0.00024024216, 0.00023531479,
+          0.00023048848, 0.00022576115, 0.00022113079, 0.00021659539, 0.00021215302, 0.00020780176, 0.00020353974, 0.00019936514, 0.00019527616, 0.00019127104,
+          0.00018734807, 0.00018350556, 0.00017974185, 0.00017605535, 0.00017244445, 0.00016890761, 0.00016544331, 0.00016205007, 0.00015872642, 0.00015547094,
+          0.00015228223, 0.00014915892, 0.00014609966, 0.00014310316, 0.00014016811, 0.00013729326, 0.00013447737, 0.00013171924, 0.00012901768, 0.00012637152,
+          0.00012377964, 0.00012124092, 0.00011875427, 0.00011631861, 0.00011393292, 0.00011159615, 0.00010930731, 0.00010706542, 0.00010486951, 0.00010271863,
+          0.00010061187, 9.8548318e-05, 9.6527091e-05, 9.4547319e-05, 9.2608152e-05, 9.0708757e-05, 8.8848320e-05, 8.7026039e-05, 8.5241134e-05, 8.3492837e-05,
+          8.1780398e-05, 8.0103081e-05, 7.8460165e-05, 7.6850946e-05, 7.5274732e-05, 7.3730846e-05, 7.2218625e-05, 7.0737420e-05, 6.9286595e-05, 6.7865526e-05,
+          6.6473603e-05, 6.5110228e-05, 6.3774817e-05, 6.2466794e-05, 6.1185599e-05, 5.9930682e-05, 5.8701503e-05, 5.7497534e-05, 5.6318259e-05, 5.5163170e-05,
+          5.4031773e-05, 5.2923580e-05, 5.1838117e-05, 5.0774917e-05, 4.9733522e-05, 4.8713487e-05, 4.7714373e-05, 4.6735750e-05, 4.5777199e-05, 4.4838308e-05,
+          4.3918674e-05, 4.3017901e-05, 4.2135603e-05, 4.1271402e-05, 4.0424925e-05, 3.9595809e-05, 3.8783698e-05, 3.7988244e-05, 3.7209104e-05, 3.6445945e-05,
+          3.5698438e-05, 3.4966263e-05, 3.4249104e-05, 3.3546655e-05, 3.2858612e-05, 3.2184682e-05, 3.1524573e-05, 3.0878004e-05, 3.0244696e-05, 2.9624376e-05,
+          2.9016780e-05, 2.8421645e-05, 2.7838717e-05, 2.7267745e-05, 2.6708483e-05, 2.6160691e-05, 2.5624135e-05, 2.5098584e-05, 2.4583812e-05, 2.4079597e-05]
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..dc1480ba85dd0df56e2a58c53b2bb50e46ca7ed3
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case2",
+  "id": 1,
+  "mfd-tree": "set2-case2-mfd"
+}
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..527559034991d2cba86c4e43eb60fe6b8bf8c4c6
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "set2-case2",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case2d/active-crust/gmm-config.json b/etc/peer/models/Set2-Case2d/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case2d/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case2d/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case2d/calc-config.json b/etc/peer/models/Set2-Case2d/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a337705d0acad883ad5a8c700a2b74f155fc3d0d
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "TRUNCATION_OFF",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case2d/model-info.json b/etc/peer/models/Set2-Case2d/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..3bba48c392296f1d2973a36b2a410224083c3339
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case2d-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case2d/sites.csv b/etc/peer/models/Set2-Case2d/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case2d/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9f7a3125bd0b51e451edf2ad4e8ff51ea9b1d27
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case5/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3425f0a5a3a608d9800b9d92761c45123a173e31
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3a-fast/calc-config.json b/etc/peer/models/Set2-Case3a-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/model-info.json b/etc/peer/models/Set2-Case3a-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..07da7d081f527bcddbb86afad8bce6d35a732d8a
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3a-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3a-fast/sites.csv b/etc/peer/models/Set2-Case3a-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case6-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..3425f0a5a3a608d9800b9d92761c45123a173e31
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "ASK_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3a/calc-config.json b/etc/peer/models/Set2-Case3a/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3a/model-info.json b/etc/peer/models/Set2-Case3a/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..42cd89f3572129d5036a59c69f9a99bb9e1fcea2
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3a/sites.csv b/etc/peer/models/Set2-Case3a/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3a/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9f7a3125bd0b51e451edf2ad4e8ff51ea9b1d27
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case6/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee2e3c885c33d20b58fd04f32dd54eaa3a4053a7
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3b-fast/calc-config.json b/etc/peer/models/Set2-Case3b-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/model-info.json b/etc/peer/models/Set2-Case3b-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..bb0c7e5e1656ec429f3a33c96e571e979e697218
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3b-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3b-fast/sites.csv b/etc/peer/models/Set2-Case3b-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case7-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..ee2e3c885c33d20b58fd04f32dd54eaa3a4053a7
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "BSSA_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3b/calc-config.json b/etc/peer/models/Set2-Case3b/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3b/model-info.json b/etc/peer/models/Set2-Case3b/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..f5443c8314ff7f48069ada7ae4c5276e3e66acdb
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3b",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3b/sites.csv b/etc/peer/models/Set2-Case3b/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3b/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9f7a3125bd0b51e451edf2ad4e8ff51ea9b1d27
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case7/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..79923131feb4c073e0292d4f961e3b8328151792
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3c-fast/calc-config.json b/etc/peer/models/Set2-Case3c-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/model-info.json b/etc/peer/models/Set2-Case3c-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..21c15e1b383847efd844db9c68e2eb947e066eb0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3c-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3c-fast/sites.csv b/etc/peer/models/Set2-Case3c-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8a/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..79923131feb4c073e0292d4f961e3b8328151792
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CB_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3c/calc-config.json b/etc/peer/models/Set2-Case3c/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3c/model-info.json b/etc/peer/models/Set2-Case3c/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..13a04b53aee8d984dbb0a0960f4430fbd76a00b4
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3c",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3c/sites.csv b/etc/peer/models/Set2-Case3c/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3c/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9f7a3125bd0b51e451edf2ad4e8ff51ea9b1d27
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8b/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3d-fast/calc-config.json b/etc/peer/models/Set2-Case3d-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/model-info.json b/etc/peer/models/Set2-Case3d-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ef2a77cee30d46af9abd639bf8359e9e8e15da1
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3d-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3d-fast/sites.csv b/etc/peer/models/Set2-Case3d-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d-fast/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..392e8898181396f3d6658c229aa4b74ac1864417
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.38221],
+      [-65.00000, -0.38221]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 4",
+    "state": "CA",
+    "upper-depth": 1.0,
+    "lower-depth": 12.0,
+    "dip": 45.0,
+    "rake": 90.0,
+    "rate-type": "RECURRENCE",
+    "length": 85.0
+  }
+}
diff --git a/etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case8c/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c625227e4abda6962fb0bcae656fc0f8d11bd02
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case3-mfd": [
+    {
+      "id": "set2-case3",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 7.0,
+        "rate": 0.0022360312
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559252bccab1142ba0725d609a9c14285ef95f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case3",
+  "id": 1,
+  "mfd-tree": "set2-case3-mfd"
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json b/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case3d/calc-config.json b/etc/peer/models/Set2-Case3d/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case3d/model-info.json b/etc/peer/models/Set2-Case3d/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..72e9a02e53a9e22be04fc1ee7bf6bf96b7143f92
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case3d",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case3d/sites.csv b/etc/peer/models/Set2-Case3d/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f87b4f6c4dcbcc3c5e7fa1083ab095689856a276
--- /dev/null
+++ b/etc/peer/models/Set2-Case3d/sites.csv
@@ -0,0 +1,7 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault3-Site1,-64.91005, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site2,-65.04497, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site3,-65.08995, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site4,-65.13490, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site5,-65.22483, 0.00000,760,false,0.048,0.607
+PEER S2-Fault3-Site6,-65.00900,-0.42718,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a9f7a3125bd0b51e451edf2ad4e8ff51ea9b1d27
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a86f3841618f3668690beef9b0f1b80401805
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 5",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 30.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ba780b53ace4376b48a635fa82c9a5ff3b81a04
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case4",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.040106292
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case4a-fast/calc-config.json b/etc/peer/models/Set2-Case4a-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/model-info.json b/etc/peer/models/Set2-Case4a-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..b5430f610d32672ea45f7b77bf0d2ad1a2c8e66c
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case4a-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case4a-fast/sites.csv b/etc/peer/models/Set2-Case4a-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..37f17e6637586ca5384a572aaf78a4731ec480f6
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a-fast/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault5-Site1,-65.00900, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a86f3841618f3668690beef9b0f1b80401805
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 5",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 30.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ba780b53ace4376b48a635fa82c9a5ff3b81a04
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case4",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.040106292
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case4a/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case4a/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case4a/calc-config.json b/etc/peer/models/Set2-Case4a/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case4a/model-info.json b/etc/peer/models/Set2-Case4a/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..06323a365edd947ce2fa39e605598b44676e6999
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case4a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case4a/sites.csv b/etc/peer/models/Set2-Case4a/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..37f17e6637586ca5384a572aaf78a4731ec480f6
--- /dev/null
+++ b/etc/peer/models/Set2-Case4a/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault5-Site1,-65.00900, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..330a6c8d7b0e0cdb00151fd1905513b89544214a
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.1,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "TRIANGULAR",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a86f3841618f3668690beef9b0f1b80401805
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 5",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 30.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ba780b53ace4376b48a635fa82c9a5ff3b81a04
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case4",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.040106292
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a13b46fd427ef13901cc18fe5e36b81a83aad6c
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 200.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case4b-fast/calc-config.json b/etc/peer/models/Set2-Case4b-fast/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/model-info.json b/etc/peer/models/Set2-Case4b-fast/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..76594bccbb5f30831790bedbcb14515cbd7746d1
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case4b-fast",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case4b-fast/sites.csv b/etc/peer/models/Set2-Case4b-fast/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..37f17e6637586ca5384a572aaf78a4731ec480f6
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b-fast/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault5-Site1,-65.00900, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..1ef6c874849fcee39486aa4e740b1f2690a5719a
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "TRIANGULAR",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a86f3841618f3668690beef9b0f1b80401805
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 5",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 30.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..2ba780b53ace4376b48a635fa82c9a5ff3b81a04
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case4",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.040106292
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case4b/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case4b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case4b/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case4b/calc-config.json b/etc/peer/models/Set2-Case4b/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..6172c806383b96ef371ddae1d043f64142024638
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "NONE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35,
+        0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case4b/model-info.json b/etc/peer/models/Set2-Case4b/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..67785f30573f4741f608bee6ffb550961047d531
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case4b",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case4b/sites.csv b/etc/peer/models/Set2-Case4b/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..37f17e6637586ca5384a572aaf78a4731ec480f6
--- /dev/null
+++ b/etc/peer/models/Set2-Case4b/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault5-Site1,-65.00900, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..243dd30785bdb831d983ced301e1721d3d1658d6
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 6",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..a73986cc0228f42c40bd93f41e92352d9fd47180
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case5",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.016042517
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json b/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case5a/calc-config.json b/etc/peer/models/Set2-Case5a/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbf6ba9e846ef2bff8ba85ee2331553def9dd2f0
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "PEER_MIXTURE_REFERENCE",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0,
+        1.25, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case5a/model-info.json b/etc/peer/models/Set2-Case5a/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..b802ee2bdd5ebde3cea1591308347a07dcc95440
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case5a",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case5a/sites.csv b/etc/peer/models/Set2-Case5a/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a89656bccce20189ff44b4224bc46e1010589184
--- /dev/null
+++ b/etc/peer/models/Set2-Case5a/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault6-Site1,-65.13490, 0.00000,760,false,0.048,0.607
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d731d0b5e27c6f4a3cd2dc4a5dfda9b68eaaefa
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json
@@ -0,0 +1,7 @@
+{
+  "surface-spacing": 0.05,
+  "rupture-scaling": "PEER",
+  "rupture-floating": "ON",
+  "dip-slip-model": null,
+  "dip-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson b/etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson
new file mode 100644
index 0000000000000000000000000000000000000000..243dd30785bdb831d983ced301e1721d3d1658d6
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson
@@ -0,0 +1,21 @@
+{
+  "type": "Feature",
+  "id": 1,
+  "geometry": {
+    "type": "LineString",
+    "coordinates": [
+      [-65.00000,  0.11240],
+      [-65.00000, -0.11240]
+    ]
+  },
+  "properties": {
+    "name": "Set2 Fault 6",
+    "state": "CA",
+    "upper-depth": 0.0,
+    "lower-depth": 12.0,
+    "dip": 90.0,
+    "rake": 0.0,
+    "rate-type": "RECURRENCE",
+    "length": 25.0
+  }
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0def60f99a8bcba9a16458e10af5bef3facaa92
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json
@@ -0,0 +1,6 @@
+{
+  "epistemic-tree": null,
+  "aleatory-properties": null,
+  "minimum-magnitude": 5.0,
+  "nshm-bin-model": true
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json
new file mode 100644
index 0000000000000000000000000000000000000000..a73986cc0228f42c40bd93f41e92352d9fd47180
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json
@@ -0,0 +1,13 @@
+{
+  "set2-case4-mfd": [
+    {
+      "id": "set2-case5",
+      "weight": 1.0,
+      "value": {
+        "type": "SINGLE",
+        "m": 6.0,
+        "rate": 0.016042517
+      }
+    }
+  ]
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..266c40bc677b85ba01188f95b9ae1f67324d0618
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json
@@ -0,0 +1,6 @@
+[
+  {
+    "id": "source1",
+    "weight": 1.0
+  }
+]
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json
new file mode 100644
index 0000000000000000000000000000000000000000..8862312f5526e683e63374711b58a4f92c2fc421
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json
@@ -0,0 +1,5 @@
+{
+  "name": "PEER Set2-Case4",
+  "id": 1,
+  "mfd-tree": "set2-case4-mfd"
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json b/etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..18ee12cf40f0cba8a8107798a74577822f713f8d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json
@@ -0,0 +1,3 @@
+{
+  "id": 2
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json b/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..dfe80f5535a5d8001d7091b5d2f5f443a0feae47
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/gmm-config.json
@@ -0,0 +1,5 @@
+{
+  "max-distance": 500.0,
+  "epistemic-model": null,
+  "epistemic-tree": null
+}
diff --git a/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json b/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json
new file mode 100644
index 0000000000000000000000000000000000000000..621c1ab1d988df52a31b7e0c0f55c6cf41de9d6d
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/active-crust/gmm-tree.json
@@ -0,0 +1,3 @@
+[
+  { "id": "CY_14_BASE", "weight": 1.0 }
+]
diff --git a/etc/peer/models/Set2-Case5b/calc-config.json b/etc/peer/models/Set2-Case5b/calc-config.json
new file mode 100644
index 0000000000000000000000000000000000000000..205538ec8fd30df0c48029cc7e34bf4d87e28952
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/calc-config.json
@@ -0,0 +1,12 @@
+{
+  "hazard": {
+    "exceedanceModel": "PEER_MIXTURE_MODEL",
+    "valueFormat": "POISSON_PROBABILITY",
+    "imts": ["PGA"],
+    "customImls": {
+      "PGA": [
+        0.001, 0.01, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0,
+        1.25, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0]
+    }
+  }
+}
diff --git a/etc/peer/models/Set2-Case5b/model-info.json b/etc/peer/models/Set2-Case5b/model-info.json
new file mode 100644
index 0000000000000000000000000000000000000000..a452ae4494b6d8fc08d7027dd95ea43ac9c4f550
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/model-info.json
@@ -0,0 +1,4 @@
+{
+  "name": "PEER Set2-Case5b",
+  "site-class-vs30": { "BC": 760 }
+}
diff --git a/etc/peer/models/Set2-Case5b/sites.csv b/etc/peer/models/Set2-Case5b/sites.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a89656bccce20189ff44b4224bc46e1010589184
--- /dev/null
+++ b/etc/peer/models/Set2-Case5b/sites.csv
@@ -0,0 +1,2 @@
+name,lon,lat,vs30,vsInf,z1p0,z2p5
+PEER S2-Fault6-Site1,-65.13490, 0.00000,760,false,0.048,0.607
diff --git a/gradle.properties b/gradle.properties
index 28363e0ff0c243fa49dbd8c87cc2ab8a4a73f4b1..ebd77a7e18d5ddf40d398189369608f02503d2e5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -4,13 +4,14 @@ awsLambdaVersion = 1.11.461
 awsS3Version = 1.11.579
 githooksVersion = 1.2.0
 jacksonVersion = 2.9.0
-junitVersion = 5.5.2
+junitVersion = 5.8.2
 micronautVersion = 2.4.1
 mnPluginVersion = 1.4.2
-nodeVersion = 3.0.1
-nshmpLibVersion = 0.7.6
-nshmpWsUtilsVersion = 0.1.2
-shadowVersion = 5.2.0
-spotbugsVersion = 4.2.4
-spotlessVersion = 4.1.0
+nodePluginVersion = 3.0.1
+nodeVersion = 16.3.0
+nshmpLibVersion = 0.8.2
+nshmpWsUtilsVersion = 0.1.3
+shadowVersion = 7.1.1
+spotbugsVersion = 4.7.0
+spotlessVersion = 6.0.4
 swaggerVersion = 2.1.7
diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 5eeb91e808770e15746f972e2ce535c23a18c2e0..8ec554bae75525d3c8e22e85ab8e6aa0a0fd7dde 100644
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -1,8 +1,8 @@
 
 dependencies {
+  // NSHMP
   implementation "ghsc:nshmp-lib:${nshmpLibVersion}"
   implementation "ghsc:nshmp-ws-utils:${nshmpWsUtilsVersion}"
-  nshmp "ghsc:nshmp-lib:${nshmpLibVersion}@zip"
 
   // AWS
   implementation "com.amazonaws:aws-lambda-java-core:${awsLambdaCoreVersion}"
diff --git a/gradle/ext.gradle b/gradle/ext.gradle
index 3cc94336dfbc62250d267f263b530fcc1095c49f..9e56816220d28aca57fff3b38ba9a908070d282f 100644
--- a/gradle/ext.gradle
+++ b/gradle/ext.gradle
@@ -4,8 +4,6 @@
 ext {
   projectName = 'nshmp-haz'
 
-  propsPath = '/classes/java/main/service.properties'
-
   libsDir = "libs"
   nshmpLib = "${libsDir}/nshmp-lib-artifacts"
   nshmpLibGradleDir = "${nshmpLib}/gradle"
@@ -55,7 +53,8 @@ ext {
     ],
     [
       model_wus_2014b,
-      'models/wus/2014b' ]
+      'models/wus/2014b'
+    ]
   ]
 
   /* Development models */
@@ -70,30 +69,7 @@ ext {
     ],
     [
       model_hi_2020,
-      'models/hi/2020' ]
+      'models/hi/2020'
+    ]
   ]
-
-  getGitTag = { gitDir ->
-    def cmd = 'git --git-dir=' + gitDir + '/.git describe --tags'
-    return cmd.execute().text.replace('\n', '') ?: 'unknown'
-  }
-
-  /*
-   * The git-dir option gets the correct tag when
-   * build is called from nshmp-haz-ws.
-   */
-  gitCommand = 'git --git-dir=../nshmp-haz/.git describe --tags'
-  gitTag = gitCommand.execute().text.replace('\n', '') ?: 'unknown'
-  gitLink = '<a href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz">' + gitTag +'</a>'
-  propsPath = '/resources/main/app.properties'
-  docTitle = projectName + ': ' + gitLink
-  docFooter = '<div style="float: left; font-size: 16px; text-align: right; ' +
-      'padding: 10px; width: 100%; box-sizing: border-box; background-color: #f9f9f9">' +
-      '<b><a href="https://www.usgs.gov" target="_top">U.S. Geological Survey</a></b> ' +
-      '– National Seismic Hazard Model Project ' +
-      '(<a href="https://earthquake.usgs.gov/hazards/" target="_top">NSHMP</a>) ' +
-      '– <a href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/LICENSE.md" ' +
-      'target="_top">License</a> | <b>' + gitLink + '</b></div>'
-  docOut = findProperty('javadoc_loc')
-  thinJar = false
 }
diff --git a/gradle/git-hooks.gradle b/gradle/git-hooks.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..15c974ecbae549b8a4fe98098f5b538122ab4d7c
--- /dev/null
+++ b/gradle/git-hooks.gradle
@@ -0,0 +1,16 @@
+apply plugin: "com.star-zero.gradle.githook"
+
+/**
+ * Add Git hooks on pre commit and pre push.
+ *
+ * See https://github.com/STAR-ZERO/gradle-githook
+ */
+githook {
+  createHooksDirIfNotExist = true
+
+  hooks {
+    "pre-push" {
+      task = "markdownlint yamllint spotlessCheck spotbugsMain spotbugsTest"
+    }
+  }
+}
diff --git a/gradle/jar.gradle b/gradle/jar.gradle
index be5167f454a5f783b5b1f544814b43d1d118ecb1..25102ef15a760cee50997bb161c6a634ee99d61d 100644
--- a/gradle/jar.gradle
+++ b/gradle/jar.gradle
@@ -1,44 +1,16 @@
 apply plugin: "com.github.johnrengelman.shadow"
 
 /*
- * Possibly record app version. The creation of this file
- * on each build causes the classpath to appear changed so
- * Gradle reruns tests, even though no code has changed.
- *
- * Note that 'git describe' only works when running gradle from the command
- * line so version values in eclipse builds will empty. Use thinJar
- * task to skip dependencies.
- */
-tasks.register("propertyFile") {
-  description = "Create a property file with application version"
-  doFirst {
-    def props = new Properties()
-    def propsFile = new File(project.buildDir.toString() + propsPath)
-    if (propsFile.exists()) {
-      props.load(propsFile.newReader())
-    } else {
-      propsFile.createNewFile()
-    }
-    if (!gitTag.equals(props.getProperty('app.version'))) {
-      props.setProperty('app.version', gitTag)
-      props.store(propsFile.newWriter(), null)
-    }
-  }
-}
-
-/*
- * Build a thin jar and add a properties file with the application version.
+ * Build a thin jar.
  */
 jar {
   archiveBaseName = "${projectName}-thin"
-  dependsOn propertyFile
 }
 
 /*
  * Build a fat jar to be used for running programs and Micronaut services.
  */
 shadowJar {
-  dependsOn propertyFile
   baseName = projectName
   classifier = ''
   archiveVersion = ''
diff --git a/gradle/javadoc.gradle b/gradle/javadoc.gradle
deleted file mode 100644
index f60205c977e1122f9d98537ab696005e2be41035..0000000000000000000000000000000000000000
--- a/gradle/javadoc.gradle
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * JavaDoc config
- */
-javadoc {
-  options.setUse(true)
-  options.author(true)
-  options.version(true)
-  options.windowTitle(projectName)
-  options.docTitle(docTitle)
-  options.encoding('UTF-8')
-  options.docEncoding('UTF-8')
-  options.charSet('UTF-8')
-  options.bottom(docFooter)
-  options.addStringOption('Xdoclint:none', '-quiet')
-  options.links(
-      'https://docs.oracle.com/javase/8/docs/api/',
-      'https://google.github.io/guava/releases/23.0/api/docs/',
-      'https://google.github.io/gson/apidocs/')
-  include 'gov/usgs/earthquake/nshmp/**'
-  exclude 'gov/usgs/earthquake/nshmp/www/**'
-  exclude 'gov/usgs/earthquake/nshmp/aws/**'
-  exclude 'gov/usgs/earthquake/nshmp/etc/**'
-  exclude 'gov/usgs/earthquake/nshmp/internal/**'
-  exclude '**/Scratch*'
-  doLast {
-    if (docOut) {
-      delete docOut
-      copy {
-        from 'build/docs/javadoc'
-        into docOut
-      }
-      copy {
-        from 'etc/resources/docs'
-        into docOut + '/resources'
-      }
-    }
-  }
-}
diff --git a/gradle/node.gradle b/gradle/node.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..147caa205eca024368f2e71d634ce8d928388d61
--- /dev/null
+++ b/gradle/node.gradle
@@ -0,0 +1,50 @@
+apply plugin: "com.github.node-gradle.node"
+
+node {
+  download = true
+  version = "${nodeVersion}"
+}
+
+/* Install markdownlint-cli with NPM */
+task nodeInstall(type: NpmTask) {
+  description "Install markdownlint-clia and yamllint with NPM"
+  args = [
+    "install",
+    "markdownlint-cli",
+    "yaml-lint",
+    "--save-dev",
+    "--loglevel",
+    "error"
+  ]
+}
+
+/* Run markdownlint */
+task markdownlint(type: NpxTask) {
+  description "Run markdownlint"
+  dependsOn nodeInstall
+  command = "markdownlint"
+  args = ["**/*.md"]
+}
+
+/* Apply markdownlint fixes */
+task markdownlintApply(type: NpxTask) {
+  description "Apply markdownlint fixes"
+  dependsOn nodeInstall
+  command = "markdownlint"
+  args = [
+    "**/*.md",
+    "--fix",
+  ]
+}
+
+/* Run yamllint */
+task yamllint(type: NpxTask) {
+  description "Run yamllint"
+  dependsOn nodeInstall
+  command = "yamllint"
+  args = [
+    "**/*.yml",
+    "--ignore=.gradle/**",
+    "--ignore=node_modules/**",
+  ]
+}
diff --git a/gradle/spotbugs-filter.xml b/gradle/spotbugs-filter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44b91fc4931bd5c49db60b9824c535fb63e0b2ae
--- /dev/null
+++ b/gradle/spotbugs-filter.xml
@@ -0,0 +1,27 @@
+<FindBugsFilter>
+
+  <!-- Caused by Java 11 generating a null check on try with resources. This
+    passed on Java 8 -->
+  <Match>
+    <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE" />
+  </Match>
+
+  <!-- StringConverter.INSTANCE.convert(this) will never be null -->
+  <Match>
+    <Class name="gov.usgs.earthquake.nshmp.geo.Location" />
+    <Method name="toString" />
+    <Bug code="NP" />
+  </Match>
+
+  <!-- https://spotbugs.readthedocs.io/en/stable/filter.html#rank -->
+  <!-- TODO can we change this to higher rank or remove all together? -->
+  <Match>
+    <Rank value="16" />
+  </Match>
+
+  <!-- Example exclude class -->
+  <!-- <Match> -->
+  <!-- <Class name="gov.usgs.earthquake.nshmp.eq.fault.Faults" /> -->
+  <!-- </Match> -->
+
+</FindBugsFilter>
diff --git a/gradle/spotbugs.gradle b/gradle/spotbugs.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..51f1a63a2462892bd53bd2c7ebb05a6a6636653e
--- /dev/null
+++ b/gradle/spotbugs.gradle
@@ -0,0 +1,11 @@
+apply plugin: "com.github.spotbugs"
+
+/*
+ * Configure SpotBugs (FindBugs successor).
+ *
+ * See https://spotbugs.readthedocs.io
+ */
+spotbugs {
+  excludeFilter = file("${projectDir}/gradle/spotbugs-filter.xml")
+  effort = "max"
+}
diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..2d827774b345380999def6ebdea39fc7ad5f838e
--- /dev/null
+++ b/gradle/spotless.gradle
@@ -0,0 +1,69 @@
+apply plugin: "com.diffplug.spotless"
+
+/*
+ * Configure Spotless for code formatting checks based on the
+ * nshmp eclispe formatter (src/resources/nshmp.eclipse-format.xml).
+ *
+ * Spotless formatting check (spotlessCheck) is automatically
+ * ran on the pre-commit and pre-push git hooks.
+ *
+ * To fix any formatting issues run ./gradlew spotlessApply.
+ *
+ * See https://github.com/diffplug/spotless/tree/master/plugin-gradle
+ */
+spotless {
+
+  /* Java formatting */
+  java {
+    targetExclude "**/build", "bin", "**/Scratch*.java", "tmp", "libs"
+
+    removeUnusedImports()
+
+    custom "Refuse wildcard imports", {
+      if (it =~ /\nimport .*\*;/) {
+        throw new Error("Do not use wildcard imports. 'spotlessApply' cannot resolve this issue.");
+      }
+    }
+
+    importOrderFile "${projectDir}/src/main/resources/eclipse.importorder"
+    eclipse().configFile "${projectDir}/src/main/resources/nshmp.eclipse-format.xml"
+
+    trimTrailingWhitespace()
+    indentWithSpaces(2)
+    endWithNewline()
+  }
+
+  /* Gradle file formatting */
+  groovyGradle {
+    target "**/*.gradle"
+    targetExclude "**/build", ".gradle", "bin", "tmp"
+    greclipse()
+    trimTrailingWhitespace()
+    indentWithSpaces(2)
+    endWithNewline()
+  }
+
+  /* .gitignore, Bash, and Dockerfile formatting */
+  format "misc", {
+    target "**/.gitgnore", "**/*.sh", "**/*Dockerfile"
+    targetExclude "**/build", ".gradle/**", ".settings", "tmp/**",
+        "libs/**", "node_modules"
+    trimTrailingWhitespace()
+    indentWithSpaces(2)
+    endWithNewline()
+    replaceRegex "Too many blank lines", "^\\n\\n+", "\n"
+  }
+
+  /* XML formatting */
+  format "xml", {
+    target fileTree(".") {
+      include "**/*.xml"
+      exclude "**/build", ".settings", ".classpath", ".project",
+          "tmp/**", ".gradle/**", "libs/**", "node_modules"
+    }
+    eclipseWtp("xml")
+    trimTrailingWhitespace()
+    indentWithSpaces(2)
+    endWithNewline()
+  }
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index cc4fdc293d0e50b0ad9b65c16e7ddd1db2f6025b..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index be52383ef49cdf484098989f96738b3d82d7810d..84d1f85fd658134f7e982ae908fd537188f20bfe 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3..4f906e0c811fc9e230eb44819f509cd0627f2600 100755
--- a/gradlew
+++ b/gradlew
@@ -82,6 +82,7 @@ esac
 
 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 
+
 # Determine the Java command to use to start the JVM.
 if [ -n "$JAVA_HOME" ] ; then
     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -129,6 +130,7 @@ fi
 if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
     JAVACMD=`cygpath --unix "$JAVACMD"`
 
     # We build the pattern for arguments to be converted via cygpath
diff --git a/gradlew.bat b/gradlew.bat
index 24467a141f791695fc1009c78d913b2c849d1412..ac1b06f93825db68fb0c0b5150917f340eaa5d02 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
 @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 
@@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 
 set JAVA_EXE=java.exe
 %JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if "%ERRORLEVEL%" == "0" goto execute
 
 echo.
 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -51,7 +54,7 @@ goto fail
 set JAVA_HOME=%JAVA_HOME:"=%
 set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
 
 echo.
 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -61,28 +64,14 @@ echo location of your Java installation.
 
 goto fail
 
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
 :execute
 @rem Setup the command line
 
 set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 
+
 @rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 
 :end
 @rem End local scope for the variables with windows NT shell
diff --git a/settings.gradle b/settings.gradle
index 79726b62291ba2732224150d97a1c5b4558681f7..90c2faad1fbd25d62f6b46e92c5d1c0eaf72b53d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,5 +1,5 @@
 plugins {
-  id "com.alexvasilkov.git-dependencies" version "2.0.1"
+  id "com.alexvasilkov.git-dependencies" version "2.0.3"
 }
 
 rootProject.name = "nshmp-haz"
@@ -19,7 +19,7 @@ git {
   if (user && pass) {
     fetch("https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii.git", {
       name "nshmp-haz-dep--nshm-hi-2021"
-      tag "main"
+      tag "2.0.0"
     })
   }
 }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java b/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java
deleted file mode 100644
index e711d2ac0ede643c9be77f3db0a3394439d67e2f..0000000000000000000000000000000000000000
--- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggIml.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package gov.usgs.earthquake.nshmp;
-
-import static gov.usgs.earthquake.nshmp.Text.NEWLINE;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.logging.FileHandler;
-import java.util.logging.Logger;
-
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.MoreExecutors;
-
-import gov.usgs.earthquake.nshmp.calc.CalcConfig;
-import gov.usgs.earthquake.nshmp.calc.Disaggregation;
-import gov.usgs.earthquake.nshmp.calc.Hazard;
-import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
-import gov.usgs.earthquake.nshmp.calc.HazardExport;
-import gov.usgs.earthquake.nshmp.calc.Site;
-import gov.usgs.earthquake.nshmp.calc.Sites;
-import gov.usgs.earthquake.nshmp.calc.ThreadCount;
-import gov.usgs.earthquake.nshmp.internal.Logging;
-import gov.usgs.earthquake.nshmp.model.HazardModel;
-
-/**
- * Deaggregate probabilisitic seismic hazard at an intesity measure level of
- * interest.
- *
- * @author U.S. Geological Survey
- */
-public class DeaggIml {
-
-  /**
-   * Entry point for the deaggregation of probabilisitic seismic hazard.
-   *
-   * <p>Deaggregating siesmic hazard is largeley identical to a hazard
-   * calculation except that an intensity measure level (in units of g) must be
-   * supplied as an additional argument after the 'site(s)' argument. See the
-   * {@link HazardCalc#main(String[]) HazardCalc program} for more information
-   * on required parameters.
-   *
-   * <p>Please refer to the nshmp-haz <a
-   * href="https://github.com/usgs/nshmp-haz/wiki" target="_top">wiki</a> for
-   * comprehensive descriptions of source models, configuration files, site
-   * files, and hazard calculations.
-   *
-   * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"
-   *      target="_top"> nshmp-haz Building & Running</a>
-   * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"
-   *      target="_top"> example calculations</a>
-   */
-  public static void main(String[] args) {
-
-    /* Delegate to run which has a return value for testing. */
-
-    Optional<String> status = run(args);
-    if (status.isPresent()) {
-      System.err.print(status.get());
-      System.exit(1);
-    }
-    System.exit(0);
-  }
-
-  static Optional<String> run(String[] args) {
-    int argCount = args.length;
-
-    if (argCount < 3 || argCount > 4) {
-      return Optional.of(USAGE);
-    }
-
-    Logging.init();
-    Logger log = Logger.getLogger(DeaggIml.class.getName());
-    Path tmpLog = HazardCalc.createTempLog();
-
-    try {
-      FileHandler fh = new FileHandler(Preconditions.checkNotNull(tmpLog.getFileName()).toString());
-      fh.setFormatter(new Logging.ConsoleFormatter());
-      log.getParent().addHandler(fh);
-
-      log.info(PROGRAM + ": " + HazardCalc.VERSION);
-      Path modelPath = Paths.get(args[0]);
-      HazardModel model = HazardModel.load(modelPath);
-
-      CalcConfig config = model.config();
-      if (argCount == 4) {
-        Path userConfigPath = Paths.get(args[3]);
-        config = CalcConfig.copyOf(model.config())
-            .extend(CalcConfig.from(userConfigPath))
-            .build();
-      }
-      log.info(config.toString());
-
-      log.info("");
-      Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
-      log.info("Sites: " + sites);
-
-      double iml = Double.valueOf(args[2]);
-
-      Path out = calc(model, config, sites, iml, log);
-      log.info(PROGRAM + ": finished");
-
-      /* Transfer log and write config, windows requires fh.close() */
-      fh.close();
-      Files.move(tmpLog, out.resolve(PROGRAM + ".log"));
-      config.write(out);
-
-      return Optional.empty();
-
-    } catch (Exception e) {
-      return HazardCalc.handleError(e, log, tmpLog, args, PROGRAM, USAGE);
-    }
-  }
-
-  /*
-   * Compute hazard curves using the supplied model, config, and sites. Method
-   * returns the path to the directory where results were written.
-   *
-   * TODO consider refactoring to supply an Optional<Double> return period to
-   * HazardCalc.calc() that will trigger deaggregations if the value is present.
-   */
-  private static Path calc(
-      HazardModel model,
-      CalcConfig config,
-      Sites sites,
-      double iml,
-      Logger log) throws IOException {
-
-    ExecutorService exec = null;
-    ThreadCount threadCount = config.performance.threadCount;
-    if (threadCount == ThreadCount.ONE) {
-      exec = MoreExecutors.newDirectExecutorService();
-      log.info("Threads: Running on calling thread");
-    } else {
-      exec = Executors.newFixedThreadPool(threadCount.value());
-      log.info("Threads: " + ((ThreadPoolExecutor) exec).getCorePoolSize());
-    }
-
-    log.info(PROGRAM + ": calculating ...");
-
-    HazardExport handler = HazardExport.create(model, config, sites, log);
-
-    for (Site site : sites) {
-      Hazard hazard = HazardCalcs.hazard(model, config, site, exec);
-      Disaggregation disagg = HazardCalcs.disaggIml(hazard, iml, exec);
-      handler.write(hazard, Optional.of(disagg));
-      log.fine(hazard.toString());
-    }
-    handler.expire();
-
-    log.info(String.format(
-        PROGRAM + ": %s sites completed in %s",
-        handler.resultCount(), handler.elapsedTime()));
-
-    exec.shutdown();
-    return handler.outputDir();
-  }
-
-  private static final String PROGRAM = DeaggIml.class.getSimpleName();
-  private static final String USAGE_COMMAND =
-      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggIml model sites iml [config]";
-  private static final String USAGE_URL1 =
-      "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs";
-  private static final String USAGE_URL2 =
-      "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples";
-  private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]";
-
-  private static final String USAGE = new StringBuilder()
-      .append(NEWLINE)
-      .append(PROGRAM).append(" [").append(HazardCalc.VERSION).append("]").append(NEWLINE)
-      .append(NEWLINE)
-      .append("Usage:").append(NEWLINE)
-      .append("  ").append(USAGE_COMMAND).append(NEWLINE)
-      .append(NEWLINE)
-      .append("Where:").append(NEWLINE)
-      .append("  'model' is a model directory")
-      .append(NEWLINE)
-      .append("  'sites' is either:")
-      .append(NEWLINE)
-      .append("     - a string, e.g. ").append(SITE_STRING)
-      .append(NEWLINE)
-      .append("       (site class and basin terms are optional)")
-      .append(NEWLINE)
-      .append("       (escape any spaces or enclose string in double-quotes)")
-      .append(NEWLINE)
-      .append("     - or a *.csv file or *.geojson file of site data")
-      .append(NEWLINE)
-      .append("  'iml', in units of g, is an intensity measure level of interest")
-      .append(NEWLINE)
-      .append("  'config' (optional) supplies a calculation configuration")
-      .append(NEWLINE)
-      .append(NEWLINE)
-      .append("For more information, see:").append(NEWLINE)
-      .append("  ").append(USAGE_URL1).append(NEWLINE)
-      .append("  ").append(USAGE_URL2).append(NEWLINE)
-      .append(NEWLINE)
-      .toString();
-
-}
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
similarity index 74%
rename from src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java
rename to src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
index 7f516914a0e690acaaa846687837ee3f492ce548..3719b73010ae7dd9f28c8ac8db3fbb32c28b93a8 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
@@ -6,6 +6,7 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -28,32 +29,32 @@ import gov.usgs.earthquake.nshmp.internal.Logging;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 
 /**
- * Deaggregate probabilisitic seismic hazard at a return period of interest.
+ * Disaggregate probabilisitic seismic hazard at a return period of interest.
  *
  * @author U.S. Geological Survey
  */
-public class DeaggCalc {
+public class DisaggCalc {
 
   /**
-   * Entry point for the deaggregation of probabilisitic seismic hazard.
+   * Entry point for the disaggregation of probabilisitic seismic hazard.
    *
-   * <p>Deaggregating siesmic hazard is largeley identical to a hazard
+   * <p>Disaggregating siesmic hazard is largeley identical to a hazard
    * calculation except that a return period (in years) must be supplied as an
    * additional argument after the 'site(s)' argument. See the
    * {@link HazardCalc#main(String[]) HazardCalc program} for more information
    * on required parameters.
    *
    * <p>Please refer to the nshmp-haz <a
-   * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs"
-   * target="_top">docs</a> for comprehensive descriptions of source models,
-   * configuration files, site files, and hazard calculations.
+   * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs">
+   * docs</a> for comprehensive descriptions of source models, configuration
+   * files, site files, and hazard calculations.
    *
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"
-   *      target="_top"> nshmp-haz Building & Running</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md">
+   *      nshmp-haz Building & Running</a>
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"
-   *      target="_top"> example calculations</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples">
+   *      example calculations</a>
    */
   public static void main(String[] args) {
 
@@ -70,12 +71,12 @@ public class DeaggCalc {
   static Optional<String> run(String[] args) {
     int argCount = args.length;
 
-    if (argCount < 3 || argCount > 4) {
+    if (argCount < 2 || argCount > 3) {
       return Optional.of(USAGE);
     }
 
     Logging.init();
-    Logger log = Logger.getLogger(DeaggCalc.class.getName());
+    Logger log = Logger.getLogger(DisaggCalc.class.getName());
     Path tmpLog = HazardCalc.createTempLog();
 
     try {
@@ -88,8 +89,8 @@ public class DeaggCalc {
       HazardModel model = HazardModel.load(modelPath);
 
       CalcConfig config = model.config();
-      if (argCount == 4) {
-        Path userConfigPath = Paths.get(args[3]);
+      if (argCount == 3) {
+        Path userConfigPath = Paths.get(args[2]);
         config = CalcConfig.copyOf(model.config())
             .extend(CalcConfig.from(userConfigPath))
             .build();
@@ -97,10 +98,10 @@ public class DeaggCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
-      log.info("Sites: " + sites);
+      List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
+      log.info("Sites: " + Sites.toString(sites));
 
-      double returnPeriod = Double.valueOf(args[2]);
+      double returnPeriod = config.disagg.returnPeriod;
 
       Path out = calc(model, config, sites, returnPeriod, log);
       log.info(PROGRAM + ": finished");
@@ -122,12 +123,13 @@ public class DeaggCalc {
    * returns the path to the directory where results were written.
    *
    * TODO consider refactoring to supply an Optional<Double> return period to
-   * HazardCalc.calc() that will trigger deaggregations if the value is present.
+   * HazardCalc.calc() that will trigger disaggregations if the value is
+   * present.
    */
   private static Path calc(
       HazardModel model,
       CalcConfig config,
-      Sites sites,
+      List<Site> sites,
       double returnPeriod,
       Logger log) throws IOException {
 
@@ -161,14 +163,13 @@ public class DeaggCalc {
     return handler.outputDir();
   }
 
-  private static final String PROGRAM = DeaggCalc.class.getSimpleName();
+  private static final String PROGRAM = DisaggCalc.class.getSimpleName();
   private static final String USAGE_COMMAND =
-      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggCalc model sites returnPeriod [config]";
+      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggCalc model sites [config]";
   private static final String USAGE_URL1 =
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs";
   private static final String USAGE_URL2 =
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples";
-  private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]";
 
   private static final String USAGE = new StringBuilder()
       .append(NEWLINE)
@@ -180,19 +181,9 @@ public class DeaggCalc {
       .append("Where:").append(NEWLINE)
       .append("  'model' is a model directory")
       .append(NEWLINE)
-      .append("  'sites' is either:")
+      .append("  'sites' is a *.csv file or *.geojson file of sites and data")
       .append(NEWLINE)
-      .append("     - a string, e.g. ").append(SITE_STRING)
-      .append(NEWLINE)
-      .append("       (site class and basin terms are optional)")
-      .append(NEWLINE)
-      .append("       (escape any spaces or enclose string in double-quotes)")
-      .append(NEWLINE)
-      .append("     - or a *.csv file or *.geojson file of site data")
-      .append(NEWLINE)
-      .append("  'returnPeriod', in years, is a time horizon of interest")
-      .append(NEWLINE)
-      .append("     - e.g. one might enter 2475 to represent a 2% in 50 year probability")
+      .append("     - site class and basin terms are optional")
       .append(NEWLINE)
       .append("  'config' (optional) supplies a calculation configuration")
       .append(NEWLINE)
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java
similarity index 79%
rename from src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java
rename to src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java
index c208ec73b130fccdfee8e29b51b6f1417f2e2ef7..066a6fca23ea3a14413174a8f95692d5c76f6067 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java
@@ -42,15 +42,12 @@ import gov.usgs.earthquake.nshmp.internal.Logging;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 
 /**
- * Custom application to support 2018 integration into building codes.
- * Application will process a list of sites for which the risk-targetd response
- * spectra is supplied, deaggregating the hazard at each spectral period at the
- * supplied ground motion. The set of IMTs processed is dictated by the set
- * defined in the sites file.
+ * Disaggregate probabilistic seismic hazard at a return period of interest or
+ * at specific ground motion levels.
  *
  * @author U.S. Geological Survey
  */
-public class DeaggEpsilon {
+public class DisaggEpsilon {
 
   private static final Gson GSON = new GsonBuilder()
       .serializeSpecialFloatingPointValues()
@@ -58,7 +55,37 @@ public class DeaggEpsilon {
       .create();
 
   /**
-   * Entry point for the application.
+   * Entry point for the disaggregation of probabilisitic seismic hazard.
+   *
+   * <p>Two approaches to disaggregation of seimic hazard are possible with this
+   * application. In the first approach, the 'sites' file is the same as it
+   * would be for a hazard calculation, and disaggregation is performed for all
+   * configured intensity measures at the 'returnPeriod' (in years) of interest
+   * specified in the config file (default = 2475 years).
+   *
+   * <p>In the second approach, the sites file includes columns for each
+   * spectral period and the target ground motion level to disaggregate for
+   * each. For example, the target values could be a risk-targeted response
+   * spectrum, or they could be ground motion levels precomputed for a specific
+   * return period.
+   *
+   * <p>It is important to note that the first approach will do the full hazard
+   * calculation and compute hazard curves from which the target disaggregation
+   * ground motion level will be determined. In the second approach, the ground
+   * motion targets are known and the time consuming hazard curve calculation
+   * can be avoided.
+   *
+   * <p>Please refer to the nshmp-haz <a
+   * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs">
+   * docs</a> for comprehensive descriptions of source models, configuration
+   * files, site files, and hazard calculations.
+   *
+   * @see <a
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md">
+   *      nshmp-haz Building & Running</a>
+   * @see <a
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples">
+   *      example calculations</a>
    */
   public static void main(String[] args) {
 
@@ -80,7 +107,7 @@ public class DeaggEpsilon {
     }
 
     Logging.init();
-    Logger log = Logger.getLogger(DeaggCalc.class.getName());
+    Logger log = Logger.getLogger(DisaggCalc.class.getName());
     Path tmpLog = HazardCalc.createTempLog();
 
     try {
@@ -192,7 +219,8 @@ public class DeaggEpsilon {
    * returns the path to the directory where results were written.
    *
    * TODO consider refactoring to supply an Optional<Double> return period to
-   * HazardCalc.calc() that will trigger deaggregations if the value is present.
+   * HazardCalc.calc() that will trigger disaggregations if the value is
+   * present.
    */
   private static Path calc(
       HazardModel model,
@@ -213,7 +241,7 @@ public class DeaggEpsilon {
 
     log.info(PROGRAM + ": calculating ...");
     Path outDir = createOutputDir(config.output.directory);
-    Path siteDir = outDir.resolve("vs30-" + (int) sites.get(0).vs30);
+    Path siteDir = outDir.resolve("vs30-" + (int) sites.get(0).vs30());
     Files.createDirectory(siteDir);
 
     Stopwatch stopwatch = Stopwatch.createStarted();
@@ -239,9 +267,9 @@ public class DeaggEpsilon {
       Result result = new Result(responses);
 
       String filename = String.format(
-          "edeagg_%.2f_%.2f.json",
-          site.location.longitude,
-          site.location.latitude);
+          "edisagg_%.2f_%.2f.json",
+          site.location().longitude,
+          site.location().latitude);
 
       Path resultPath = siteDir.resolve(filename);
       Writer writer = Files.newBufferedWriter(resultPath);
@@ -276,11 +304,11 @@ public class DeaggEpsilon {
 
     ResponseData(List<String> models, Site site, Imt imt, double iml) {
       this.models = models;
-      this.longitude = site.location.longitude;
-      this.latitude = site.location.latitude;
+      this.longitude = site.location().longitude;
+      this.latitude = site.location().latitude;
       this.imt = imt.toString();
       this.iml = iml;
-      this.vs30 = site.vs30;
+      this.vs30 = site.vs30();
     }
   }
 
@@ -306,9 +334,9 @@ public class DeaggEpsilon {
     return incrementedDir;
   }
 
-  private static final String PROGRAM = DeaggEpsilon.class.getSimpleName();
+  private static final String PROGRAM = DisaggEpsilon.class.getSimpleName();
   private static final String USAGE_COMMAND =
-      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DeaggEpsilon model sites-spectra [config]";
+      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggEpsilon model sites [config]";
 
   private static final String USAGE = new StringBuilder()
       .append(NEWLINE)
@@ -320,7 +348,8 @@ public class DeaggEpsilon {
       .append("Where:").append(NEWLINE)
       .append("  'model' is a model directory")
       .append(NEWLINE)
-      .append("  'sites-spectra' is a *.csv file of locations and risk-targeted response spectra")
+      .append(
+          "  'sites' is a *.csv file of locations, site parameters and (optional) target ground motion levels")
       .append(NEWLINE)
       .append("     - Header: lon,lat,PGA,SA0P01,SA0P02,...")
       .append(NEWLINE)
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
index c3c0270c0dd693c03434f917ef8eeb6757357e3a..9773931f415fab98e6e6f85bf92bebe5ac51b129 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/HazardCalc.java
@@ -4,16 +4,13 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static gov.usgs.earthquake.nshmp.Text.NEWLINE;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Optional;
-import java.util.Properties;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
@@ -58,16 +55,16 @@ public class HazardCalc {
    * the path to a configuration file as a third argument.
    *
    * <p>Refer to the nshmp-haz <a
-   * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/README.md"
-   * target="_top">documentation</a> for comprehensive descriptions of source
-   * models, configuration files, site files, and hazard calculations.
+   * href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/README.md">
+   * documentation</a> for comprehensive descriptions of source models,
+   * configuration files, site files, and hazard calculations.
    *
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"
-   *      target="_top"> nshmp-haz Building & Running</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md">
+   *      nshmp-haz Building & Running</a>
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"
-   *      target="_top"> example calculations</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples">
+   *      example calculations</a>
    */
   public static void main(String[] args) {
 
@@ -111,8 +108,8 @@ public class HazardCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = readSites(args[1], config, model.siteData(), log);
-      log.info("Sites: " + sites);
+      List<Site> sites = readSites(args[1], config, model.siteData(), log);
+      log.info("Sites: " + Sites.toString(sites));
 
       Path out = calc(model, config, sites, log);
 
@@ -134,7 +131,7 @@ public class HazardCalc {
     }
   }
 
-  static Sites readSites(
+  static List<Site> readSites(
       String arg,
       CalcConfig defaults,
       SiteData siteData,
@@ -143,13 +140,13 @@ public class HazardCalc {
     Path path = Paths.get(arg);
     log.info("Sites file: " + path.toAbsolutePath().normalize());
     String fname = arg.toLowerCase();
-    checkArgument(fname.endsWith(".csv") || fname.endsWith(".json"),
+    checkArgument(fname.endsWith(".csv") || fname.endsWith(".geojson"),
         "Sites file [%s] must be a path to a *.csv or *.geojson file", arg);
 
     try {
       return fname.endsWith(".csv")
           ? Sites.fromCsv(path, defaults, siteData)
-          : Sites.fromJson(path, defaults, siteData);
+          : Sites.fromGeoJson(path, defaults, siteData);
     } catch (IOException ioe) {
       throw new IllegalArgumentException(
           "Error parsing sites file [%s]; see sites file documentation");
@@ -163,7 +160,7 @@ public class HazardCalc {
   private static Path calc(
       HazardModel model,
       CalcConfig config,
-      Sites sites,
+      List<Site> sites,
       Logger log) throws IOException, InterruptedException, ExecutionException {
 
     int threadCount = config.performance.threadCount.value();
@@ -313,11 +310,8 @@ public class HazardCalc {
     return Optional.of(sb.toString());
   }
 
-  /**
-   * The Git application version. This version string applies to all other
-   * nshnmp-haz applications.
-   */
-  public static final String VERSION = version();
+  /** The Git application version. */
+  public static final String VERSION = "TODO get version from resource";
 
   private static final String PROGRAM = HazardCalc.class.getSimpleName();
   private static final String USAGE_COMMAND =
@@ -326,33 +320,6 @@ public class HazardCalc {
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs";
   private static final String USAGE_URL2 =
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples";
-  private static final String SITE_STRING = "name,lon,lat[,vs30,vsInf[,z1p0,z2p5]]";
-
-  @Deprecated
-  private static String version() {
-    String version = "unknown";
-    /* Assume we're running from a jar. */
-    try {
-      InputStream is = HazardCalc.class.getResourceAsStream("/app.properties");
-      Properties props = new Properties();
-      props.load(is);
-      is.close();
-      version = props.getProperty("app.version");
-    } catch (Exception e1) {
-      /* Otherwise check for a repository. */
-      Path gitDir = Paths.get(".git");
-      if (Files.exists(gitDir)) {
-        try {
-          Process pr = Runtime.getRuntime().exec("git describe --tags");
-          BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
-          version = br.readLine();
-          br.close();
-          /* Detached from repository. */
-        } catch (Exception e2) {}
-      }
-    }
-    return version;
-  }
 
   private static final String USAGE = new StringBuilder()
       .append(NEWLINE)
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java
index 3709e22e7b49bb1e3b8904e9aec2222c43585ba2..8c59131d9327b57f5e3abd2f40e2d08085f4e4e9 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java
@@ -54,16 +54,16 @@ public class RateCalc {
    * argument.
    *
    * <p>Please refer to the nshmp-haz <a
-   * href="https://github.com/usgs/nshmp-haz/wiki" target="_top">wiki</a> for
-   * comprehensive descriptions of source models, configuration files, site
-   * files, and earthquake rate calculations.
+   * href="https://github.com/usgs/nshmp-haz/wiki">wiki</a> for comprehensive
+   * descriptions of source models, configuration files, site files, and
+   * earthquake rate calculations.
    *
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md"
-   *      target="_top"> nshmp-haz Building & Running</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/blob/main/docs/pages/Building-&-Running.md">
+   *      nshmp-haz Building & Running</a>
    * @see <a
-   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples"
-   *      target="_top"> example calculations</a>
+   *      href="https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples">
+   *      example calculations</a>
    */
   public static void main(String[] args) {
 
@@ -107,8 +107,8 @@ public class RateCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
-      log.info("Sites: " + sites);
+      List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
+      log.info("Sites: " + Sites.toString(sites));
 
       Path out = calc(model, config, sites, log);
       log.info(PROGRAM + ": finished");
@@ -137,7 +137,7 @@ public class RateCalc {
   private static Path calc(
       HazardModel model,
       CalcConfig config,
-      Sites sites,
+      List<Site> sites,
       Logger log) throws IOException, ExecutionException, InterruptedException {
 
     ThreadCount threadCount = config.performance.threadCount;
@@ -170,7 +170,7 @@ public class RateCalc {
   private static EqRateExport concurrentCalc(
       HazardModel model,
       CalcConfig config,
-      Sites sites,
+      List<Site> sites,
       Logger log,
       ListeningExecutorService executor)
       throws InterruptedException, ExecutionException, IOException {
@@ -218,7 +218,6 @@ public class RateCalc {
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/docs";
   private static final String USAGE_URL2 =
       "https://code.usgs.gov/ghsc/nshmp/nshmp-haz/-/tree/main/etc/examples";
-  private static final String SITE_STRING = "name,lon,lat";
 
   private static final String USAGE = new StringBuilder()
       .append(NEWLINE)
@@ -230,13 +229,7 @@ public class RateCalc {
       .append("Where:").append(NEWLINE)
       .append("  'model' is a model directory")
       .append(NEWLINE)
-      .append("  'sites' is either:")
-      .append(NEWLINE)
-      .append("     - a string, e.g. ").append(SITE_STRING)
-      .append(NEWLINE)
-      .append("       (escape any spaces or enclose string in double-quotes)")
-      .append(NEWLINE)
-      .append("     - or a *.csv file or *.geojson file of site data")
+      .append("  'sites' is a *.csv file or *.geojson file of sites and data")
       .append(NEWLINE)
       .append("  'config' (optional) supplies a calculation configuration")
       .append(NEWLINE)
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java
deleted file mode 100644
index f498983b24ffdc19a60625e9ab685feaf7ad2277..0000000000000000000000000000000000000000
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/DeaggEpsilonController.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package gov.usgs.earthquake.nshmp.www;
-
-import java.util.EnumMap;
-
-import javax.inject.Inject;
-
-import gov.usgs.earthquake.nshmp.gmm.Imt;
-import gov.usgs.earthquake.nshmp.www.services.DeaggEpsilonService;
-import gov.usgs.earthquake.nshmp.www.services.DeaggEpsilonService.Query;
-import gov.usgs.earthquake.nshmp.www.services.HazardService;
-
-import io.micronaut.core.annotation.Nullable;
-import io.micronaut.http.HttpRequest;
-import io.micronaut.http.HttpResponse;
-import io.micronaut.http.MediaType;
-import io.micronaut.http.annotation.Controller;
-import io.micronaut.http.annotation.Get;
-import io.micronaut.http.annotation.PathVariable;
-import io.micronaut.http.annotation.QueryValue;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.Schema;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import io.swagger.v3.oas.annotations.tags.Tag;
-
-@Tag(name = "Epsilon Deaggregation Service (experimental)")
-@Controller("/deagg-epsilon")
-public class DeaggEpsilonController {
-
-  @Inject
-  private NshmpMicronautServlet servlet;
-
-  @Get(uri = "/usage", produces = MediaType.APPLICATION_JSON)
-  public HttpResponse<String> doGetUsage(HttpRequest<?> request) {
-    return HazardService.handleDoGetMetadata(request);
-  }
-
-  /**
-   * GET method to return usage or hazard curves, query based.
-   *
-   * @param request The HTTP request
-   * @param longitude Longitude (in decimal degrees) ([-360, 360])
-   * @param latitude Latitude (in decimal degrees) ([-90, 90])
-   * @param vs30 The site soil class
-   * @param basin Whether to use basin service
-   */
-  @Operation(
-      summary = "Compute epsilon deaggregation",
-      description = "Compute epsilon deaggregation given longitude, latitude, Vs30 and IMT-IML map",
-      operationId = "deaggEpsilon_doGetDeaggEpsilon")
-  @ApiResponse(
-      description = "Epsilon deaggregations",
-      responseCode = "200")
-  @Get(uri = "{?longitude,latitude,vs30,basin}")
-  public HttpResponse<String> doGetDeaggEpsilon(
-      HttpRequest<?> request,
-      @Schema(
-          required = true,
-          minimum = "-360",
-          maximum = "360") @QueryValue @Nullable Double longitude,
-      @Schema(
-          required = true,
-          minimum = "-90",
-          maximum = "90") @QueryValue @Nullable Double latitude,
-      @Schema(required = true) @QueryValue @Nullable Integer vs30,
-      @Schema(defaultValue = "false") @QueryValue @Nullable Boolean basin,
-      @Schema(
-          defaultValue = "{\"SA0P01\": 0.01}",
-          required = true) @QueryValue @Nullable EnumMap<Imt, Double> imtImls) {
-    var query = new Query(request, longitude, latitude, vs30, basin);
-    return DeaggEpsilonService.handleDoGetDeaggEpsilon(request, query);
-  }
-
-  /**
-   * GET method to return usage or hazard curves, slash based.
-   *
-   * @param request The HTTP request
-   * @param longitude Longitude (in decimal degrees) ([-360, 360])
-   * @param latitude Latitude (in decimal degrees) ([-90, 90])
-   * @param vs30 The site soil class
-   * @param basin Whether to use basin service
-   */
-  @Operation(
-      summary = "Compute epsilon deaggregation",
-      description = "Compute epsilon deaggregation given longitude, latitude, Vs30 and IMT-IML map",
-      operationId = "deaggEpsilon_doGetDeaggEpsilonSlash")
-  @ApiResponse(
-      description = "Epsilon deaggregations",
-      responseCode = "200")
-  @Get(uri = "{/longitude}{/latitude}{/vs30}{/basin}")
-  public HttpResponse<String> doGetDeaggEpsilonSlash(
-      HttpRequest<?> request,
-      @Schema(
-          required = true,
-          minimum = "-360",
-          maximum = "360") @PathVariable @Nullable Double longitude,
-      @Schema(
-          required = true,
-          minimum = "-90",
-          maximum = "90") @PathVariable @Nullable Double latitude,
-      @Schema(required = true) @PathVariable @Nullable Integer vs30,
-      @Schema(defaultValue = "false") @PathVariable @Nullable Boolean basin,
-      @Schema(
-          defaultValue = "{\"SA0P01\": 0.01}",
-          required = true) @QueryValue @Nullable EnumMap<Imt, Double> imtImls) {
-    return doGetDeaggEpsilon(request, longitude, latitude, vs30, basin, null);
-  }
-
-}
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/HazardController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/HazardController.java
index e85229e1c50df0ef7ab43ef43c1bb82c492ed657..a655b9fa49e768556e09d7f94ed31805ec4215cc 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/HazardController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/HazardController.java
@@ -5,7 +5,6 @@ import javax.inject.Inject;
 import gov.usgs.earthquake.nshmp.www.services.HazardService;
 import gov.usgs.earthquake.nshmp.www.services.HazardService.QueryParameters;
 
-import io.micronaut.core.annotation.Nullable;
 import io.micronaut.http.HttpRequest;
 import io.micronaut.http.HttpResponse;
 import io.micronaut.http.annotation.Controller;
@@ -61,11 +60,16 @@ public class HazardController {
   @Get(uri = "/{longitude}/{latitude}/{vs30}{?truncate,maxdir}")
   public HttpResponse<String> doGetHazard(
       HttpRequest<?> request,
+
       @Schema(minimum = "-360", maximum = "360") @PathVariable double longitude,
+
       @Schema(minimum = "-90", maximum = "90") @PathVariable double latitude,
+
       @Schema(minimum = "150", maximum = "3000") @PathVariable int vs30,
-      @QueryValue(defaultValue = "false") @Nullable boolean truncate,
-      @QueryValue(defaultValue = "false") @Nullable boolean maxdir) {
+
+      @QueryValue(defaultValue = "false") boolean truncate,
+
+      @QueryValue(defaultValue = "false") boolean maxdir) {
 
     /*
      * @Schema annotation parameter constraints only affect Swagger service
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java
index b2153504dd1ad6b66d1c6eff1eb124d511d58f50..74c7c7ab48943d014553be9d53d8046790d38701 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/meta/MetaUtil.java
@@ -33,15 +33,15 @@ public final class MetaUtil {
     public JsonElement serialize(Site site, Type typeOfSrc, JsonSerializationContext context) {
       JsonObject loc = new JsonObject();
 
-      loc.addProperty("latitude", Maths.round(site.location.latitude, 3));
-      loc.addProperty("longitude", Maths.round(site.location.longitude, 3));
+      loc.addProperty("latitude", Maths.round(site.location().latitude, 3));
+      loc.addProperty("longitude", Maths.round(site.location().longitude, 3));
 
       JsonObject json = new JsonObject();
       json.add("location", loc);
-      json.addProperty("vs30", site.vs30);
-      json.addProperty("vsInfered", site.vsInferred);
-      json.addProperty("z1p0", Double.isNaN(site.z1p0) ? null : site.z1p0);
-      json.addProperty("z2p5", Double.isNaN(site.z2p5) ? null : site.z2p5);
+      json.addProperty("vs30", site.vs30());
+      json.addProperty("vsInfered", site.vsInferred());
+      json.addProperty("z1p0", Double.isNaN(site.z1p0()) ? null : site.z1p0());
+      json.addProperty("z2p5", Double.isNaN(site.z2p5()) ? null : site.z2p5());
 
       return json;
     }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java
deleted file mode 100644
index 9b2e0af50f69769a68b7f66925dad91a6df76c53..0000000000000000000000000000000000000000
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/DeaggEpsilonService.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package gov.usgs.earthquake.nshmp.www.services;
-
-import java.net.URL;
-import java.util.EnumMap;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutionException;
-import java.util.function.Function;
-
-import javax.inject.Singleton;
-
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.ImmutableList;
-
-import gov.usgs.earthquake.nshmp.calc.CalcConfig;
-import gov.usgs.earthquake.nshmp.calc.Disaggregation;
-import gov.usgs.earthquake.nshmp.calc.Site;
-import gov.usgs.earthquake.nshmp.geo.Location;
-import gov.usgs.earthquake.nshmp.gmm.Imt;
-import gov.usgs.earthquake.nshmp.model.HazardModel;
-import gov.usgs.earthquake.nshmp.www.DeaggEpsilonController;
-import gov.usgs.earthquake.nshmp.www.Response;
-import gov.usgs.earthquake.nshmp.www.WsUtils;
-import gov.usgs.earthquake.nshmp.www.meta.Metadata;
-import gov.usgs.earthquake.nshmp.www.meta.Status;
-import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.Key;
-import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel;
-
-import io.micronaut.context.annotation.Value;
-import io.micronaut.http.HttpRequest;
-import io.micronaut.http.HttpResponse;
-
-/**
- * Hazard deaggregation handler for {@link DeaggEpsilonController}.
- *
- * @author U.S. Geological Survey
- */
-@Singleton
-public final class DeaggEpsilonService {
-
-  /* Developer notes: See HazardService. */
-
-  private static final String NAME = "Epsilon Deaggregation";
-
-  @Value("${nshmp-haz.basin-service-url}")
-  private static URL basinUrl;
-
-  /**
-   * Handler for {@link DeaggEpsilonController#doGetDeaggEpsilon}. Returns the
-   * usage or the deagg result.
-   *
-   * @param query The query
-   * @param urlHelper The URL helper
-   */
-  public static HttpResponse<String> handleDoGetDeaggEpsilon(HttpRequest<?> request, Query query) {
-    try {
-      var timer = ServletUtil.timer();
-
-      if (query.isNull()) {
-        return HazardService.handleDoGetMetadata(request);
-      }
-
-      query.checkValues();
-      var data = new RequestData(query, query.vs30);
-      var response = process(request, data);
-      var svcResponse = ServletUtil.GSON.toJson(response);
-      return HttpResponse.ok(svcResponse);
-    } catch (Exception e) {
-      return ServicesUtil.handleError(e, NAME, request.getUri().getPath());
-    }
-  }
-
-  /* Create map of IMT to deagg IML. */
-  private static EnumMap<Imt, Double> readImtsFromQuery(HttpRequest<?> request) {
-    var imtImls = new EnumMap<Imt, Double>(Imt.class);
-    for (var param : request.getParameters().asMap().entrySet()) {
-      if (isImtParam(param.getKey())) {
-        imtImls.put(
-            Imt.valueOf(param.getKey()),
-            Double.valueOf(param.getValue().get(0)));
-      }
-    }
-    return imtImls;
-  }
-
-  private static boolean isImtParam(String key) {
-    return key.equals("PGA") || key.startsWith("SA");
-  }
-
-  private static Response<RequestData, ResponseData> process(
-      HttpRequest<?> request,
-      RequestData data)
-      throws InterruptedException, ExecutionException {
-    var configFunction = new ConfigFunction();
-    var siteFunction = new SiteFunction(data);
-    var timer = Stopwatch.createStarted();
-    var hazard = ServicesUtil.calcHazard(configFunction, siteFunction);
-    var deagg = Disaggregation.atImls(hazard, data.imtImls, ServletUtil.CALC_EXECUTOR);
-    return new ResultBuilder()
-        .deagg(deagg)
-        .requestData(data)
-        .timer(timer)
-        .url(request)
-        .build();
-  }
-
-  public static class Query extends HazardService.Query {
-    final EnumMap<Imt, Double> imtImls;
-    final Boolean basin;
-
-    public Query(
-        HttpRequest<?> request,
-        Double longitude,
-        Double latitude,
-        Integer vs30,
-        Boolean basin) {
-      super(longitude, latitude, vs30);
-      imtImls = readImtsFromQuery(request);
-      this.basin = basin == null ? false : basin;
-    }
-
-    @Override
-    public boolean isNull() {
-      return super.isNull() && vs30 == null;
-    }
-
-    @Override
-    public void checkValues() {
-      super.checkValues();
-      WsUtils.checkValue(Key.BASIN, basin);
-    }
-  }
-
-  static class ConfigFunction implements Function<HazardModel, CalcConfig> {
-    @Override
-    public CalcConfig apply(HazardModel model) {
-      var configBuilder = CalcConfig.copyOf(model.config());
-      return configBuilder.build();
-    }
-  }
-
-  /*
-   * Developer notes:
-   *
-   * We're opting here to fetch basin terms ourselves. If we were to set the
-   * basin provider in the config, which requires additions to config, the URL
-   * is tested every time a site is created for a servlet request. While this
-   * worked for maps it's not good here.
-   *
-   * Site has logic for parsing the basin service response, which perhaps it
-   * shouldn't. TODO is it worth decomposing data objects and services
-   */
-  static class SiteFunction implements Function<CalcConfig, Site> {
-    final RequestData data;
-
-    private SiteFunction(RequestData data) {
-      this.data = data;
-    }
-
-    @Override
-    public Site apply(CalcConfig config) {
-      return Site.builder()
-          .location(Location.create(data.longitude, data.latitude))
-          .dataService(data.basin ? Optional.of(basinUrl) : Optional.empty())
-          .vs30(data.vs30)
-          .build();
-    }
-  }
-
-  static final class RequestData extends HazardService.RequestDataOld {
-    final EnumMap<Imt, Double> imtImls;
-    final boolean basin;
-
-    RequestData(Query query, double vs30) {
-      super(query, vs30);
-      imtImls = query.imtImls;
-      basin = query.basin;
-    }
-  }
-
-  private static final class ResponseMetadata {
-    final SourceModel models;
-    final double longitude;
-    final double latitude;
-    final String imt;
-    final double iml;
-    final double vs30;
-    final String rlabel = "Closest Distance, rRup (km)";
-    final String mlabel = "Magnitude (Mw)";
-    final String εlabel = "% Contribution to Hazard";
-    final Object εbins;
-
-    ResponseMetadata(Disaggregation deagg, RequestData request, Imt imt) {
-      this.models = new SourceModel(ServletUtil.model());
-      this.longitude = request.longitude;
-      this.latitude = request.latitude;
-      this.imt = imt.toString();
-      this.iml = imt.period();
-      this.vs30 = request.vs30;
-      this.εbins = deagg.εBins();
-    }
-  }
-
-  private static final class ResponseData {
-    final Object server;
-    final List<DeaggResponse> deaggs;
-
-    ResponseData(Object server, List<DeaggResponse> deaggs) {
-      this.server = server;
-      this.deaggs = deaggs;
-    }
-  }
-
-  private static final class DeaggResponse {
-    final ResponseMetadata metadata;
-    final Object data;
-
-    DeaggResponse(ResponseMetadata metadata, Object data) {
-      this.metadata = metadata;
-      this.data = data;
-    }
-  }
-
-  static final class ResultBuilder {
-    String url;
-    Stopwatch timer;
-    RequestData request;
-    Disaggregation deagg;
-
-    ResultBuilder deagg(Disaggregation deagg) {
-      this.deagg = deagg;
-      return this;
-    }
-
-    ResultBuilder url(HttpRequest<?> request) {
-      url = request.getUri().getPath();
-      return this;
-    }
-
-    ResultBuilder timer(Stopwatch timer) {
-      this.timer = timer;
-      return this;
-    }
-
-    ResultBuilder requestData(RequestData request) {
-      this.request = request;
-      return this;
-    }
-
-    Response<RequestData, ResponseData> build() {
-      ImmutableList.Builder<DeaggResponse> responseListBuilder = ImmutableList.builder();
-
-      for (Imt imt : request.imtImls.keySet()) {
-        ResponseMetadata responseData = new ResponseMetadata(deagg, request, imt);
-        Object deaggs = deagg.toJsonCompact(imt);
-        DeaggResponse response = new DeaggResponse(responseData, deaggs);
-        responseListBuilder.add(response);
-      }
-
-      List<DeaggResponse> responseList = responseListBuilder.build();
-      Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer);
-      var response = new ResponseData(server, responseList);
-
-      return new Response<>(Status.SUCCESS, NAME, request, response, url);
-    }
-  }
-
-}
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java
index 10261bbffe6db054e24d8defe30fd7d1c0d05c94..356b1ff6f83a02479b551e42adf4dc650c6adeb5 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService.java
@@ -116,10 +116,9 @@ public final class HazardService {
       this.data = data;
     }
 
-    @Override
+    @Override // TODO this needs to pick up SiteData
     public Site apply(CalcConfig config) {
       return Site.builder()
-          .dataService(config.siteData.service)
           .location(Location.create(data.longitude, data.latitude))
           .vs30(data.vs30)
           .build();
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca235f7f9d0657cfe8be5715bdcdd7c76343cae5
--- /dev/null
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/HazardService2.java
@@ -0,0 +1,444 @@
+package gov.usgs.earthquake.nshmp.www.services;
+
+import static com.google.common.base.Preconditions.checkState;
+import static gov.usgs.earthquake.nshmp.calc.HazardExport.curvesBySource;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.function.Function;
+
+import javax.inject.Singleton;
+
+import com.google.common.base.Stopwatch;
+
+import gov.usgs.earthquake.nshmp.calc.CalcConfig;
+import gov.usgs.earthquake.nshmp.calc.Hazard;
+import gov.usgs.earthquake.nshmp.calc.Site;
+import gov.usgs.earthquake.nshmp.data.MutableXySequence;
+import gov.usgs.earthquake.nshmp.data.XySequence;
+import gov.usgs.earthquake.nshmp.geo.Coordinates;
+import gov.usgs.earthquake.nshmp.geo.Location;
+import gov.usgs.earthquake.nshmp.gmm.Imt;
+import gov.usgs.earthquake.nshmp.model.HazardModel;
+import gov.usgs.earthquake.nshmp.model.SourceType;
+import gov.usgs.earthquake.nshmp.www.HazardController;
+import gov.usgs.earthquake.nshmp.www.Response;
+import gov.usgs.earthquake.nshmp.www.WsUtils;
+import gov.usgs.earthquake.nshmp.www.meta.DoubleParameter;
+import gov.usgs.earthquake.nshmp.www.meta.Metadata;
+import gov.usgs.earthquake.nshmp.www.meta.Parameter;
+import gov.usgs.earthquake.nshmp.www.meta.Status;
+import gov.usgs.earthquake.nshmp.www.services.ServicesUtil.ServiceQueryData;
+import gov.usgs.earthquake.nshmp.www.services.SourceServices.SourceModel;
+
+import io.micronaut.http.HttpRequest;
+import io.micronaut.http.HttpResponse;
+
+/**
+ * Probabilistic seismic hazard calculation handler for
+ * {@link HazardController}.
+ *
+ * @author U.S. Geological Survey
+ */
+@Singleton
+public final class HazardService2 {
+
+  private static final String NAME = "Hazard Service";
+
+  /** HazardController.doGetUsage() handler. */
+  public static HttpResponse<String> handleDoGetMetadata(HttpRequest<?> request) {
+    var url = request.getUri().getPath();
+    try {
+      var usage = new RequestMetadata(ServletUtil.model());// SourceServices.ResponseData();
+      var response = new Response(Status.USAGE, NAME, url, usage, url);
+      var svcResponse = ServletUtil.GSON.toJson(response);
+      return HttpResponse.ok(svcResponse);
+    } catch (Exception e) {
+      return ServicesUtil.handleError(e, NAME, url);
+    }
+  }
+
+  /** HazardController.doGetHazard() handler. */
+  public static HttpResponse<String> handleDoGetHazard(
+      HttpRequest<?> request,
+      RequestData args) {
+
+    try {
+      // TODO still need to validate
+      // if (query.isEmpty()) {
+      // return handleDoGetUsage(urlHelper);
+      // }
+      // query.checkParameters();
+
+      // var data = new RequestData(query);
+
+      Response<RequestData, ResponseData> response = process(request, args);
+      String svcResponse = ServletUtil.GSON.toJson(response);
+      return HttpResponse.ok(svcResponse);
+
+    } catch (Exception e) {
+      return ServicesUtil.handleError(e, NAME, request.getUri().getPath());
+    }
+  }
+
+  static Response<RequestData, ResponseData> process(
+      HttpRequest<?> request,
+      RequestData data) throws InterruptedException, ExecutionException {
+
+    var configFunction = new ConfigFunction();
+    var siteFunction = new SiteFunction(data);
+    var stopwatch = Stopwatch.createStarted();
+    var hazard = ServicesUtil.calcHazard(configFunction, siteFunction);
+
+    return new ResultBuilder()
+        .hazard(hazard)
+        .requestData(data)
+        .timer(stopwatch)
+        .url(request)
+        .build();
+  }
+
+  static class ConfigFunction implements Function<HazardModel, CalcConfig> {
+    @Override
+    public CalcConfig apply(HazardModel model) {
+      var configBuilder = CalcConfig.copyOf(model.config());
+      return configBuilder.build();
+    }
+  }
+
+  static class SiteFunction implements Function<CalcConfig, Site> {
+    final RequestData data;
+
+    private SiteFunction(RequestData data) {
+      this.data = data;
+    }
+
+    @Override // TODO this needs to pick up SiteData
+    public Site apply(CalcConfig config) {
+      return Site.builder()
+          .location(Location.create(data.longitude, data.latitude))
+          .vs30(data.vs30)
+          .build();
+    }
+  }
+
+  // public static class QueryParameters {
+  //
+  // final double longitude;
+  // final double latitude;
+  // final int vs30;
+  // final boolean truncate;
+  // final boolean maxdir;
+  //
+  // public QueryParameters(
+  // double longitude,
+  // double latitude,
+  // int vs30,
+  // boolean truncate,
+  // boolean maxdir) {
+  //
+  // this.longitude = longitude;
+  // this.latitude = latitude;
+  // this.vs30 = vs30;
+  // this.truncate = truncate;
+  // this.maxdir = maxdir;
+  // }
+  //
+  // // void checkParameters() {
+  // // checkParameter(longitude, "longitude");
+  // // checkParameter(latitude, "latitude");
+  // // checkParameter(vs30, "vs30");
+  // // }
+  // }
+
+  // private static void checkParameter(Object param, String id) {
+  // checkNotNull(param, "Missing parameter: %s", id);
+  // // TODO check range here
+  // }
+
+  /* Service request and model metadata */
+  static class RequestMetadata {
+
+    final SourceModel model;
+    final DoubleParameter longitude;
+    final DoubleParameter latitude;
+    final DoubleParameter vs30;
+
+    RequestMetadata(HazardModel model) {
+      this.model = new SourceModel(model);
+      // TODO need min max from model
+      longitude = new DoubleParameter(
+          "Longitude",
+          "°",
+          Coordinates.LON_RANGE.lowerEndpoint(),
+          Coordinates.LON_RANGE.upperEndpoint());
+
+      latitude = new DoubleParameter(
+          "Latitude",
+          "°",
+          Coordinates.LAT_RANGE.lowerEndpoint(),
+          Coordinates.LAT_RANGE.upperEndpoint());
+
+      vs30 = new DoubleParameter(
+          "Latitude",
+          "m/s",
+          150,
+          1500);
+    }
+  }
+
+  // static class RequestData {
+  //
+  // final double longitude;
+  // final double latitude;
+  // final double vs30;
+  // final boolean truncate;
+  // final boolean maxdir;
+  //
+  // RequestData(QueryParameters query) {
+  // this.longitude = query.longitude;
+  // this.latitude = query.latitude;
+  // this.vs30 = query.vs30;
+  // this.truncate = query.truncate;
+  // this.maxdir = query.maxdir;
+  // }
+  // }
+
+  private static final class ResponseMetadata {
+    final String xlabel = "Ground Motion (g)";
+    final String ylabel = "Annual Frequency of Exceedence";
+    final Object server;
+
+    ResponseMetadata(Object server) {
+      this.server = server;
+    }
+  }
+
+  private static String imtShortLabel(Imt imt) {
+    if (imt.equals(Imt.PGA) || imt.equals(Imt.PGV)) {
+      return imt.name();
+    } else if (imt.isSA()) {
+      return imt.period() + " s";
+    }
+    return imt.toString();
+  }
+
+  // @Deprecated
+  // static class RequestDataOld extends ServiceRequestData {
+  // final double vs30;
+  //
+  // RequestDataOld(Query query, double vs30) {
+  // super(query);
+  // this.vs30 = vs30;
+  // }
+  // }
+
+  private static final class ResponseData {
+    final ResponseMetadata metadata;
+    final List<HazardResponse> hazardCurves;
+
+    ResponseData(ResponseMetadata metadata, List<HazardResponse> hazardCurves) {
+      this.metadata = metadata;
+      this.hazardCurves = hazardCurves;
+    }
+  }
+
+  private static final class HazardResponse {
+    final Parameter imt;
+    final List<Curve> data;
+
+    HazardResponse(Imt imt, List<Curve> data) {
+      this.imt = new Parameter(imtShortLabel(imt), imt.name());
+      this.data = data;
+    }
+  }
+
+  private static final class Curve {
+    final String component;
+    final XySequence values;
+
+    Curve(String component, XySequence values) {
+      this.component = component;
+      this.values = values;
+    }
+  }
+
+  private static final String TOTAL_KEY = "Total";
+
+  private static final class ResultBuilder {
+
+    String url;
+    Stopwatch timer;
+    RequestData request;
+
+    Map<Imt, Map<SourceType, MutableXySequence>> componentMaps;
+    Map<Imt, MutableXySequence> totalMap;
+
+    ResultBuilder hazard(Hazard hazardResult) {
+      // TODO necessary??
+      checkState(totalMap == null, "Hazard has already been added to this builder");
+
+      componentMaps = new EnumMap<>(Imt.class);
+      totalMap = new EnumMap<>(Imt.class);
+
+      var typeTotalMaps = curvesBySource(hazardResult);
+
+      for (var imt : hazardResult.curves().keySet()) {
+
+        /* Total curve for IMT. */
+        XySequence.addToMap(imt, totalMap, hazardResult.curves().get(imt));
+
+        /* Source component curves for IMT. */
+        var typeTotalMap = typeTotalMaps.get(imt);
+        var componentMap = componentMaps.get(imt);
+
+        if (componentMap == null) {
+          componentMap = new EnumMap<>(SourceType.class);
+          componentMaps.put(imt, componentMap);
+        }
+
+        for (var type : typeTotalMap.keySet()) {
+          XySequence.addToMap(type, componentMap, typeTotalMap.get(type));
+        }
+      }
+
+      return this;
+    }
+
+    ResultBuilder url(HttpRequest<?> request) {
+      url = request.getUri().getPath();
+      return this;
+    }
+
+    ResultBuilder timer(Stopwatch timer) {
+      this.timer = timer;
+      return this;
+    }
+
+    ResultBuilder requestData(RequestData request) {
+      this.request = request;
+      return this;
+    }
+
+    Response<RequestData, ResponseData> build() {
+      var hazards = new ArrayList<HazardResponse>();
+
+      for (Imt imt : totalMap.keySet()) {
+        var curves = new ArrayList<Curve>();
+
+        // total curve
+        curves.add(new Curve(
+            TOTAL_KEY,
+            updateCurve(request, totalMap.get(imt), imt)));
+
+        // component curves
+        var typeMap = componentMaps.get(imt);
+        for (SourceType type : typeMap.keySet()) {
+          curves.add(new Curve(
+              type.toString(),
+              updateCurve(request, typeMap.get(type), imt)));
+        }
+
+        hazards.add(new HazardResponse(imt, List.copyOf(curves)));
+      }
+
+      Object server = Metadata.serverData(ServletUtil.THREAD_COUNT, timer);
+      var response = new ResponseData(new ResponseMetadata(server), List.copyOf(hazards));
+
+      return new Response<>(Status.SUCCESS, NAME, request, response, url);
+    }
+  }
+
+  private static final double TRUNCATION_LIMIT = 1e-4;
+
+  /* Convert to linear and possibly truncate and scale to max-direction. */
+  private static XySequence updateCurve(
+      RequestData request,
+      XySequence curve,
+      Imt imt) {
+
+    /*
+     * If entire curve is <1e-4, this method will return a curve consisting of
+     * just the first point in the supplied curve.
+     *
+     * TODO We probably want to move the TRUNCATION_LIMIT out to a config.
+     */
+
+    double[] yValues = curve.yValues().toArray();
+    int limit = request.truncate ? truncationLimit(yValues) : yValues.length;
+    yValues = Arrays.copyOf(yValues, limit);
+
+    double scale = request.maxdir ? MaxDirection.FACTORS.get(imt) : 1.0;
+    double[] xValues = curve.xValues()
+        .limit(yValues.length)
+        .map(Math::exp)
+        .map(x -> x * scale)
+        .toArray();
+
+    return XySequence.create(xValues, yValues);
+  }
+
+  private static int truncationLimit(double[] yValues) {
+    int limit = 1;
+    double y = yValues[0];
+    while (y > TRUNCATION_LIMIT && limit < yValues.length) {
+      y = yValues[limit++];
+    }
+    return limit;
+  }
+
+  @Deprecated
+  public static class Query extends ServiceQueryData {
+    Integer vs30;
+
+    public Query(Double longitude, Double latitude, Integer vs30) {
+      super(longitude, latitude);
+      this.vs30 = vs30;
+    }
+
+    @Override
+    public boolean isNull() {
+      return super.isNull() && vs30 == null;
+    }
+
+    @Override
+    public void checkValues() {
+      super.checkValues();
+      WsUtils.checkValue(ServicesUtil.Key.VS30, vs30);
+    }
+  }
+
+  public static final class RequestData {
+
+    final double longitude;
+    final double latitude;
+    final int vs30;
+    final boolean truncate;
+    final boolean maxdir;
+
+    public RequestData(
+        double longitude,
+        double latitude,
+        int vs30,
+        boolean truncate,
+        boolean maxdir) {
+
+      this.longitude = longitude;
+      this.latitude = latitude;
+      this.vs30 = vs30;
+      this.truncate = truncate;
+      this.maxdir = maxdir;
+    }
+
+    // void checkParameters() {
+    // checkParameter(longitude, "longitude");
+    // checkParameter(latitude, "latitude");
+    // checkParameter(vs30, "vs30");
+    // }
+  }
+
+}
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
index 54656ceb7a1f6dad3ffec5433a3e1a5dc994c378..ee29e210b48f1ad7fd0f5c1d5f08fe57cae0568f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/RateService.java
@@ -82,7 +82,6 @@ public final class RateService {
     var service = query.service;
 
     try {
-      var timer = ServletUtil.timer();
 
       if (query.isNull()) {
         return handleDoGetUsage(request, service);
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
index 064864558a000d76a6e8749f568d31e116f04aee..a3e6d6a37efc79187c2629651abfd3abc419bfcb 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java
@@ -3,8 +3,6 @@ package gov.usgs.earthquake.nshmp.www.services;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import com.google.gson.GsonBuilder;
 
@@ -36,25 +34,12 @@ public class ServicesUtil {
   static Hazard calcHazard(
       Function<HazardModel, CalcConfig> configFunction,
       Function<CalcConfig, Site> siteFunction) throws InterruptedException, ExecutionException {
-    // TODO reduce for singleton model
-    var futuresList = Stream.of(ServletUtil.model())
-        .map(model -> {
-          var config = configFunction.apply(model);
-          var site = siteFunction.apply(config);
-          return calcHazard(model, config, site);
-        })
-        .collect(Collectors.toList());
-
-    var hazardsFuture = CompletableFuture
-        .allOf(futuresList.toArray(new CompletableFuture[futuresList.size()]))
-        .thenApply(v -> {
-          return futuresList.stream()
-              .map(future -> future.join())
-              .collect(Collectors.toList());
-        });
-
-    var hazards = hazardsFuture.get().toArray(new Hazard[] {});
-    return Hazard.merge(hazards);
+
+    HazardModel model = ServletUtil.model();
+    CalcConfig config = configFunction.apply(model);
+    Site site = siteFunction.apply(config);
+    CompletableFuture<Hazard> future = calcHazard(model, config, site);
+    return future.get();
   }
 
   @Deprecated
@@ -129,11 +114,10 @@ public class ServicesUtil {
       HazardModel model,
       CalcConfig config,
       Site site) {
-    return CompletableFuture
-        .supplyAsync(
-            () -> HazardCalcs.hazard(
-                model, config, site, ServletUtil.CALC_EXECUTOR),
-            ServletUtil.TASK_EXECUTOR);
+
+    return CompletableFuture.supplyAsync(
+        () -> HazardCalcs.hazard(model, config, site, ServletUtil.CALC_EXECUTOR),
+        ServletUtil.TASK_EXECUTOR);
   }
 
 }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
index 2c4c8951ba37afa7118abe57aa267b25614dd6cf..23e824d2ce62ef78d19989cdb7ac6adfee7bf914 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
@@ -10,14 +10,12 @@ import java.nio.file.FileSystemNotFoundException;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import javax.inject.Singleton;
 
-import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.gson.Gson;
@@ -48,28 +46,19 @@ import io.micronaut.runtime.event.annotation.EventListener;
 public class ServletUtil {
 
   public static final Gson GSON;
-  public static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern(
-      "yyyy-MM-dd'T'HH:mm:ssXXX");
 
   static final ListeningExecutorService CALC_EXECUTOR;
   static final ExecutorService TASK_EXECUTOR;
 
   static final int THREAD_COUNT;
 
-  /* Stateful flag to reject requests while a result is pending. */
-  static boolean uhtBusy = false;
-  static long hitCount = 0;
-  static long missCount = 0;
-
   @Value("${nshmp-haz.model-path}")
   private Path modelPath;
 
-  // private static List<HazardModel> HAZARD_MODELS = new ArrayList<>();
-
   private static HazardModel HAZARD_MODEL;
 
   static {
-    /* TODO modified for deagg-epsilon branch; should be context var */
+    /* TODO modified for disagg-epsilon branch; should be context var */
     THREAD_COUNT = getRuntime().availableProcessors();
     CALC_EXECUTOR = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(THREAD_COUNT));
     TASK_EXECUTOR = Executors.newSingleThreadExecutor();
@@ -143,33 +132,6 @@ public class ServletUtil {
     }
   }
 
-  public static Timer timer() {
-    return new Timer();
-  }
-
-  /*
-   * Simple timer object. The servlet timer just runs. The calculation timer can
-   * be started later.
-   */
-  @Deprecated
-  public static final class Timer {
-    Stopwatch servlet = Stopwatch.createStarted();
-    Stopwatch calc = Stopwatch.createUnstarted();
-
-    public Timer start() {
-      calc.start();
-      return this;
-    }
-
-    public String servletTime() {
-      return servlet.toString();
-    }
-
-    public String calcTime() {
-      return calc.toString();
-    }
-  }
-
   private static class PathConverter implements JsonSerializer<Path> {
     @Override
     public JsonElement serialize(
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5be042a97e071be871a87e1f252a5c5323c4dc10..08e17650b93dbaa71573a7e6b0d1913645bbd10e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,13 +9,18 @@ micronaut:
         enabled: true
         paths: classpath:swagger
         mapping: /**
+  server:
+    netty:
+      access-logger:
+        enabled: true
+        logger-name: http
 
 nshmp-haz:
   ##
   # The basin service url
   # To specify the url to use:
   #     java -jar build/libs/nshmp-haz.jar --basin-service-url=
-  basin-service-url: ${basin-service-url:https://staging-earthquake.usgs.gov/nshmp/ws/data/basin}
+  basin-service-url: ${basin-service-url:https://earthquake.usgs.gov/ws/nshmp/data/basin}
 
   ##
   # The path to the models.
diff --git a/src/main/resources/eclipse.importorder b/src/main/resources/eclipse.importorder
new file mode 100644
index 0000000000000000000000000000000000000000..2ef1b480f52563e1089abcb404d3476e8a89931b
--- /dev/null
+++ b/src/main/resources/eclipse.importorder
@@ -0,0 +1,7 @@
+#Organize Import Order
+0=java
+1=javax
+2=org
+3=com
+4=gov
+5=ucar
diff --git a/src/main/resources/nshmp.eclipse-format.xml b/src/main/resources/nshmp.eclipse-format.xml
new file mode 100644
index 0000000000000000000000000000000000000000..181dbd16d380cb5688372df1ca124177b8c583f0
--- /dev/null
+++ b/src/main/resources/nshmp.eclipse-format.xml
@@ -0,0 +1,916 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="13">
+  <profile kind="CodeFormatterProfile" name="nshmp" version="13">
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_after_imports"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments"
+      value="true" />
+    <setting id="org.eclipse.jdt.core.formatter.indentation.size"
+      value="2" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for"
+      value="insert" />
+    <setting id="org.eclipse.jdt.core.formatter.disabling_tag"
+      value="@formatter:off" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.continuation_indentation"
+      value="2" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants"
+      value="81" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_imports"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_after_package"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.indent_root_tags"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch"
+      value="true" />
+    <setting id="org.eclipse.jdt.core.formatter.enabling_tag"
+      value="@formatter:on" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations"
+      value="2" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.compiler.problem.enumIdentifier"
+      value="error" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.line_length" value="80" />
+    <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_block"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body"
+      value="end_of_line" />
+    <setting id="org.eclipse.jdt.core.formatter.compact_else_if"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.compiler.problem.assertIdentifier"
+      value="error" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer"
+      value="32" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_line_comments"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.align_type_members_on_columns"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_assignment"
+      value="80" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration"
+      value="80" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_header"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
+      value="enabled" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines"
+      value="2147483647" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try"
+      value="80" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column"
+      value="false" />
+    <setting id="org.eclipse.jdt.core.compiler.source" value="1.8" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws"
+      value="insert" />
+    <setting id="org.eclipse.jdt.core.formatter.tabulation.size"
+      value="2" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_source_code"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_field"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer"
+      value="2" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_method"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration"
+      value="80" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration"
+      value="80" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_switch"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_html" value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_compact_if"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_label"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type"
+      value="1" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.format_block_comments"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields"
+      value="16" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch"
+      value="do not insert" />
+    <setting id="org.eclipse.jdt.core.compiler.compliance"
+      value="1.8" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration"
+      value="common_lines" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration"
+      value="end_of_line" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_before_package"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header"
+      value="0" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.join_lines_in_comments"
+      value="true" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional"
+      value="insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description"
+      value="false" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement"
+      value="do not insert" />
+    <setting id="org.eclipse.jdt.core.formatter.tabulation.char"
+      value="space" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups"
+      value="1" />
+    <setting id="org.eclipse.jdt.core.formatter.lineSplit"
+      value="100" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation"
+      value="do not insert" />
+    <setting
+      id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch"
+      value="insert" />
+  </profile>
+</profiles>
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsLarge.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsLarge.java
index 930edebdcfe70c3e5c552a7a03ddbfb5b08f4cdc..4427652acbde1ff8bc6bb4beb87c3db14d98f9a5 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsLarge.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsLarge.java
@@ -1,234 +1,255 @@
 package gov.usgs.earthquake.nshmp.model;
 
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.BOSTON_MA;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.CHICAGO_IL;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.LOS_ANGELES_CA;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_MADRID_MO;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_ORLEANS_LA;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_YORK_NY;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.RENO_NV;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.SALT_LAKE_CITY_UT;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.SAN_FRANCISCO_CA;
-// import static gov.usgs.earthquake.nshmp.site.NshmpSite.SEATTLE_WA;
-// import static org.junit.Assert.assertEquals;
-//
-// import java.nio.file.Files;
-// import java.nio.file.Path;
-// import java.nio.file.Paths;
-// import java.util.List;
-// import java.util.Map;
-// import java.util.concurrent.ExecutorService;
-// import java.util.concurrent.Executors;
-//
-// import org.junit.AfterClass;
-// import org.junit.BeforeClass;
-// import org.junit.Test;
-//
-// import com.google.common.collect.ImmutableList;
-// import com.google.common.collect.ImmutableMap;
-// import com.google.gson.Gson;
-// import com.google.gson.GsonBuilder;
-//
-// import gov.usgs.earthquake.nshmp.calc.Hazard;
-// import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
-// import gov.usgs.earthquake.nshmp.calc.Site;
-// import gov.usgs.earthquake.nshmp.eq.model.HazardModel;
-// import gov.usgs.earthquake.nshmp.eq.model.Loader;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.BOSTON_MA;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.CHICAGO_IL;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.LOS_ANGELES_CA;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_MADRID_MO;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.NEW_YORK_NY;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.RENO_NV;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.SALT_LAKE_CITY_UT;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.SAN_FRANCISCO_CA;
+import static gov.usgs.earthquake.nshmp.site.NshmpSite.SEATTLE_WA;
+import static java.lang.Math.abs;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import gov.usgs.earthquake.nshmp.NamedLocation;
+import gov.usgs.earthquake.nshmp.calc.Hazard;
+import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
+import gov.usgs.earthquake.nshmp.calc.Site;
+import gov.usgs.earthquake.nshmp.data.XySequence;
 
 /**
  * Class for end-to-end tests of hazard calculations. These tests require
  * significant system resources to load source models, and source models are
  * required to be in adjacent repositories. These tests should be run
  * frequently, but not as part of continuous integration. Consider nightlies.
+ * Needs parameterization and additional regions.
  *
- * @see NshmTestsSmall
  * @author U.S. Geological Survey
  */
-public class NshmTestsLarge {
-
-  // private static final List<String> COUS_REGION_IDS = ImmutableList.of("wus",
-  // "ceus");
-  //
-  // private static final Map<String, String> COUS_REGION_NAMES =
-  // ImmutableMap.of(
-  // COUS_REGION_IDS.get(0), "Western US",
-  // COUS_REGION_IDS.get(1), "Central & Eastern US");
-  //
-  // private static final List<NamedLocation> WUS_SITES = ImmutableList.of(
-  // LOS_ANGELES_CA,
-  // SAN_FRANCISCO_CA,
-  // SEATTLE_WA,
-  // SALT_LAKE_CITY_UT,
-  // RENO_NV);
-  //
-  // private static final List<NamedLocation> CEUS_SITES = ImmutableList.of(
-  // NEW_MADRID_MO,
-  // BOSTON_MA,
-  // NEW_YORK_NY,
-  // CHICAGO_IL,
-  // NEW_ORLEANS_LA);
-  //
-  // /*
-  // * These tests use project relative file paths to read/write directly
-  // to/from
-  // * the source tree.
-  // */
-  // private static final Gson GSON = new GsonBuilder()
-  // .setPrettyPrinting()
-  // .create();
-  //
-  // private static ExecutorService EXEC;
-  //
-  // @BeforeClass
-  // public static void setUpBeforeClass() throws Exception {
-  // int cores = Runtime.getRuntime().availableProcessors();
-  // EXEC = Executors.newFixedThreadPool(cores);
-  // }
-  //
-  // @AfterClass
-  // public static void tearDownAfterClass() throws Exception {
-  // EXEC.shutdown();
-  // }
-  //
-  // private static final Path MODEL_PATH = Paths.get("../");
-  // private static final String MODEL_ROOT = "nshm-";
-  // private static final Path DATA_PATH =
-  // Paths.get("test/gov/usgs/earthquake/nshmp/eq/model/data");
-  //
-  // @Test
-  // public void testCeus2008() throws Exception {
-  // testModel("ceus", 2008, CEUS_SITES);
-  // }
-  //
-  // @Test
-  // public void testCeus2014() throws Exception {
-  // testModel("ceus", 2014, CEUS_SITES);
-  // }
-  //
-  // @Test
-  // public void testCeus2018() throws Exception {
-  // testModel("ceus", 2018, CEUS_SITES);
-  // }
-  //
-  // @Test
-  // public void testWus2008() throws Exception {
-  // testModel("wus", 2008, WUS_SITES);
-  // }
-  //
-  // @Test
-  // public void testWus2014() throws Exception {
-  // testModel("wus", 2014, WUS_SITES);
-  // }
-  //
-  // @Test
-  // public void testWus2018() throws Exception {
-  // testModel("wus", 2018, WUS_SITES);
-  // }
-  //
-  // private static void testModel(
-  // String region,
-  // int year,
-  // List<NamedLocation> locations) throws Exception {
-  //
-  // HazardModel model = loadModel(region, year);
-  // for (NamedLocation location : locations) {
-  // compareCurves(region, year, model, location);
-  // }
-  // }
-  //
-  // private static void compareCurves(
-  // String region,
-  // int year,
-  // HazardModel model,
-  // NamedLocation location) throws Exception {
-  //
-  // String actual = generateActual(model, location);
-  // String expected = readExpected(region, year, location);
-  // assertEquals(expected, actual);
-  // }
-  //
-  // private static String generateActual(
-  // HazardModel model,
-  // NamedLocation location) {
-  //
-  // Hazard hazard = HazardCalcs.hazard(
-  // model,
-  // model.config(),
-  // Site.builder().location(location).build(),
-  // EXEC);
-  //
-  // return GSON.toJson(hazard.curves());
-  // }
-  //
-  // /* Load model handling cous = wus + ceus */
-  // private static HazardModel loadModel(String region, int year)
-  // throws Exception {
-  //
-  // Path modelPath;
-  // if (COUS_REGION_IDS.contains(region)) {
-  // modelPath = MODEL_PATH.resolve(MODEL_ROOT + "cous-" + year)
-  // .resolve(COUS_REGION_NAMES.get(region));
-  // } else {
-  // modelPath = MODEL_PATH.resolve(MODEL_ROOT + region + "-" + year);
-  // }
-  // return Loader.load(modelPath);
-  // }
-  //
-  // private static String resultFilename(
-  // String region,
-  // int year,
-  // NamedLocation loc) {
-  //
-  // return "e2e-" + region + "-" + year + "-" + loc.name() + ".json";
-  // }
-  //
-  // private static String readExpected(
-  // String region,
-  // int year,
-  // NamedLocation loc) throws Exception {
-  //
-  // String filename = resultFilename(region, year, loc);
-  // Path resultPath = DATA_PATH.resolve(filename);
-  // return new String(Files.readAllBytes(resultPath));
-  // }
-  //
-  // private static void writeExpected(
-  // String region,
-  // int year,
-  // NamedLocation loc,
-  // String json) throws Exception {
-  //
-  // String filename = resultFilename(region, year, loc);
-  // Path resultPath = DATA_PATH.resolve(filename);
-  // Files.write(resultPath, json.getBytes());
-  // }
-  //
-  // private static void writeExpecteds(
-  // String region,
-  // int year,
-  // List<NamedLocation> locations) throws Exception {
-  //
-  // HazardModel model = loadModel(region, year);
-  // for (NamedLocation location : locations) {
-  // String json = generateActual(model, location);
-  // writeExpected(region, year, location, json);
-  // }
-  // }
-  //
-  // public static void main(String[] args) throws Exception {
-  //
-  // /* Initialize and shut down executor to generate results. */
-  // setUpBeforeClass();
-  //
-  // // writeExpecteds("ceus", 2008, CEUS_SITES);
-  // // writeExpecteds("ceus", 2014, CEUS_SITES);
-  // // writeExpecteds("ceus", 2018, CEUS_SITES);
-  //
-  // // writeExpecteds("wus", 2008, WUS_SITES);
-  // // writeExpecteds("wus", 2014, WUS_SITES);
-  // writeExpecteds("wus", 2018, WUS_SITES);
-  //
-  // tearDownAfterClass();
-  // }
+class NshmTestsLarge {
+
+  private static final double TOLERANCE = 1e-12;
+
+  private static final List<NamedLocation> CONUS_SITES = List.of(
+      LOS_ANGELES_CA,
+      SAN_FRANCISCO_CA,
+      SEATTLE_WA,
+      SALT_LAKE_CITY_UT,
+      RENO_NV,
+      NEW_MADRID_MO,
+      BOSTON_MA,
+      NEW_YORK_NY,
+      CHICAGO_IL);
+
+  /*
+   * These tests use project relative file paths to read/write directly to/from
+   * the source tree.
+   */
+  private static final Gson GSON = new GsonBuilder()
+      .setPrettyPrinting()
+      .create();
+
+  private static ExecutorService EXEC;
+
+  @BeforeAll
+  static void setUpBeforeClass() {
+    int cores = Runtime.getRuntime().availableProcessors();
+    EXEC = Executors.newFixedThreadPool(cores);
+  }
+
+  @AfterAll
+  static void tearDownAfterClass() {
+    EXEC.shutdown();
+  }
+
+  private static final Path MODEL_PATH = Paths.get("../");
+  private static final Path DATA_PATH = Paths.get("src/test/resources/e2e");
+
+  @Test
+  public void testConus2018() {
+    testModel("nshm-conus", 2018, CONUS_SITES);
+  }
+
+  private static void testModel(
+      String modelName,
+      int year,
+      List<NamedLocation> locations) {
+
+    Path modelPath = MODEL_PATH.resolve(modelName);
+    HazardModel model = ModelLoader.load(modelPath);
+    for (NamedLocation location : locations) {
+      compareCurves(modelName, year, model, location);
+    }
+  }
+
+  private static void compareCurves(
+      String modelName,
+      int year,
+      HazardModel model,
+      NamedLocation location) {
+
+    // String actual = generateActual(model, location);
+    Map<String, XySequence> actual = generateActual(model, location);
+    // String expected = readExpected(modelName, year, location);
+    Map<String, XySequence> expected = readExpected(modelName, year, location);
+    // assertEquals(expected, actual);
+
+    assertEquals(expected.keySet(), actual.keySet());
+    for (String key : expected.keySet()) {
+      assertCurveEquals(expected.get(key), actual.get(key), TOLERANCE);
+    }
+  }
+
+  private static void assertCurveEquals(XySequence expected, XySequence actual, double tol) {
+
+    // IMLs close but not exact due to exp() transform
+    assertArrayEquals(
+        expected.xValues().toArray(),
+        actual.xValues().toArray());
+
+    double[] expectedYs = expected.yValues().toArray();
+    double[] actualYs = actual.yValues().toArray();
+
+    // absolute y-value difference relative to tolerance
+    assertArrayEquals(expectedYs, actualYs, tol);
+
+    // relative y-value difference relative to tolerance
+    for (int i = 0; i < expectedYs.length; i++) {
+      String message = String.format(
+          "arrays differ at [%s] expected:<[%s]> but was:<[%s]>",
+          i, expectedYs[i], actualYs[i]);
+      assertTrue(compare(expectedYs[i], actualYs[i], tol), message);
+    }
+  }
+
+  private static boolean compare(double expected, double actual, double tolerance) {
+    return abs(actual - expected) / expected < tolerance ||
+        Double.valueOf(expected).equals(Double.valueOf(actual));
+  }
+
+  private static Map<String, XySequence> generateActual(
+      HazardModel model,
+      NamedLocation location) {
+
+    Site site = Site.builder().location(location.location()).build();
+
+    Hazard hazard = HazardCalcs.hazard(
+        model,
+        model.config(),
+        site,
+        EXEC);
+
+    Map<String, XySequence> xyMap = hazard.curves().entrySet().stream()
+        .collect(Collectors.toMap(
+            e -> e.getKey().toString(),
+            Entry::getValue));
+
+    return xyMap;
+    // return GSON.toJson(hazard.curves());
+  }
+
+  private static String resultFilename(
+      String modelName,
+      int year,
+      NamedLocation loc) {
+
+    return modelName + "-" + year + "-" + loc.name() + ".json";
+  }
+
+  private static Map<String, XySequence> readExpected(
+      String modelName,
+      int year,
+      NamedLocation loc) {
+
+    String filename = resultFilename(modelName, year, loc);
+    Path resultPath = DATA_PATH.resolve(filename);
+
+    JsonObject obj = null;
+    try (BufferedReader br = Files.newBufferedReader(resultPath)) {
+      obj = JsonParser.parseReader(br).getAsJsonObject();
+    } catch (IOException ioe) {
+      throw new RuntimeException(ioe);
+    }
+
+    Type curveDataType = new TypeToken<Map<String, Curve>>() {}.getType();
+    Map<String, Curve> curveMap = GSON.fromJson(obj, curveDataType);
+    Map<String, XySequence> xyMap = curveMap.entrySet().stream()
+        .collect(Collectors.toMap(
+            Entry::getKey,
+            e -> XySequence.create(e.getValue().xs, e.getValue().ys)));
+    return xyMap;
+  }
+
+  private static class Curve {
+    double[] xs;
+    double[] ys;
+
+    Curve(double[] xs, double[] ys) {
+      this.xs = xs;
+      this.ys = ys;
+    }
+  }
+
+  private static void writeExpecteds(
+      String modelName,
+      int year,
+      List<NamedLocation> locations) throws IOException {
+
+    Path modelPath = MODEL_PATH.resolve(modelName);
+    HazardModel model = ModelLoader.load(modelPath);
+    for (NamedLocation location : locations) {
+      // String json = generateActual(model, location);
+      Map<String, XySequence> xyMap = generateActual(model, location);
+      String json = GSON.toJson(xyMap);
+      writeExpected(modelName, year, location, json);
+    }
+  }
+
+  private static void writeExpected(
+      String modelName,
+      int year,
+      NamedLocation loc,
+      String json) throws IOException {
+
+    String filename = resultFilename(modelName, year, loc);
+    Path resultPath = DATA_PATH.resolve(filename);
+    Files.write(resultPath, json.getBytes());
+  }
+
+  public static void main(String[] args) throws IOException {
+
+    /* Initialize and shut down executor to generate results. */
+    setUpBeforeClass();
+
+    writeExpecteds("nshm-conus", 2018, CONUS_SITES);
+
+    tearDownAfterClass();
+  }
 
 }
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsSmall.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsSmall.java
deleted file mode 100644
index 76d5363d3f2abb355992dc6324fd34f116110304..0000000000000000000000000000000000000000
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTestsSmall.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package gov.usgs.earthquake.nshmp.model;
-
-// import static org.junit.Assert.assertEquals;
-//
-// import java.nio.file.Files;
-// import java.nio.file.Path;
-// import java.nio.file.Paths;
-// import java.util.concurrent.ExecutorService;
-// import java.util.concurrent.Executors;
-//
-// import org.junit.Test;
-//
-// import com.google.gson.Gson;
-// import com.google.gson.GsonBuilder;
-//
-// import gov.usgs.earthquake.nshmp.calc.Hazard;
-// import gov.usgs.earthquake.nshmp.calc.HazardCalcs;
-// import gov.usgs.earthquake.nshmp.calc.Site;
-// import gov.usgs.earthquake.nshmp.eq.model.HazardModel;
-// import gov.usgs.earthquake.nshmp.eq.model.Loader;
-// import gov.usgs.earthquake.nshmp.site.NshmpSite;
-
-/**
- * Class for scaled down tests that exercise the primary hazard calculation
- * packages and pipeline without incurring the overhead of loading national
- * scale models.
- *
- * @author U.S. Geological Survey
- */
-public class NshmTestsSmall {
-
-  // /*
-  // * These tests use project relative file paths to read/write directly
-  // to/from
-  // * the source tree.
-  // */
-  // private static Gson GSON = new GsonBuilder()
-  // .setPrettyPrinting()
-  // .create();
-  //
-  // private static final Path DATA_PATH =
-  // Paths.get("test/gov/usgs/earthquake/nshmp/eq/model/data");
-  //
-  // @Test
-  // public void testFault() throws Exception {
-  // compareCurves("fault-wus", NshmpSite.SALT_LAKE_CITY_UT);
-  // }
-  //
-  // private static void compareCurves(String id, NamedLocation loc) throws
-  // Exception {
-  // String expected = readExpected(id, loc);
-  // String actual = generateActual(id, loc);
-  // assertEquals(expected, actual);
-  // }
-  //
-  // private static final String MODEL_SUFFIX = "-model";
-  // private static final String RESULT_SUFFIX = "-result.txt";
-  //
-  // private static String generateActual(String id, NamedLocation loc) throws
-  // Exception {
-  // Path modelPath = DATA_PATH.resolve(id + MODEL_SUFFIX);
-  // System.out.println(modelPath.toAbsolutePath());
-  // HazardModel model = Loader.load(modelPath);
-  // ExecutorService exec = Executors.newSingleThreadExecutor();
-  // Site site = Site.builder()
-  // .location(loc)
-  // .build();
-  // Hazard hazard = HazardCalcs.hazard(
-  // model,
-  // model.config(),
-  // site,
-  // exec);
-  // exec.shutdown();
-  // return GSON.toJson(hazard.curves());
-  // }
-  //
-  // private static String readExpected(String id, NamedLocation loc) throws
-  // Exception {
-  // Path resultPath = DATA_PATH.resolve(id + RESULT_SUFFIX);
-  // return new String(Files.readAllBytes(resultPath));
-  // }
-  //
-  // private static void writeExpected(String id, NamedLocation loc) throws
-  // Exception {
-  // Path resultPath = DATA_PATH.resolve(id + RESULT_SUFFIX);
-  // String result = generateActual(id, loc);
-  // Files.write(resultPath, result.getBytes());
-  // }
-  //
-  // public static void main(String[] args) throws Exception {
-  // writeExpected("fault-wus", NshmpSite.SALT_LAKE_CITY_UT);
-  // /*
-  // * TODO currently have NaN problem with z serialization in config. It would
-  // * be nice if config could be serialized by default without having to use
-  // * it's own GSON instance (which handles NaN and urls)
-  // */
-  //
-  // }
-
-}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java
index e42265fc38e7444fb0eacc4e10c42692343f2e7c..a6de60423ee7ab90bd07b04cb46a9441581f24c5 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTest.java
@@ -94,8 +94,6 @@ class PeerTest {
   static final String S3_C4 = "Set3-Case4";
 
   private static final Path PEER_DIR = Paths.get("etc", "peer");
-  // private static final Path PEER_DIR = Paths.get("..", "nshmp-model-dev",
-  // "models", "PEER");
   private static final Path MODEL_DIR = PEER_DIR.resolve("models");
   private static final Path RESULT_DIR = PEER_DIR.resolve("results");
 
@@ -117,11 +115,9 @@ class PeerTest {
             .toList());
     checkArgument(actual.length == expected.length);
 
-    // tests difference relative to tolerance
-    // TODO maybe just decrease this tolerance and
-    // do away with ratio test below
+    // test difference relative to tolerance
     assertArrayEquals(expected, actual, tolerance);
-    // tests ratio relative to tolerance
+    // test ratio relative to tolerance
     for (int i = 0; i < expected.length; i++) {
       String message = String.format("arrays differ at [%s] expected:<[%s]> but was:<[%s]>",
           i, expected[i], actual[i]);
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTestArgumentProviders.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTestArgumentProviders.java
index d0b492c79063a8bab23f8b26a5fcf1bd8c7892d9..2ca90d43e378c2cd3ee75b0504b352d4d9959175 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTestArgumentProviders.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTestArgumentProviders.java
@@ -137,6 +137,20 @@ class PeerTestArgumentProviders {
     }
   }
 
+  static class Set1Case11 implements ArgumentsProvider {
+    @Override
+    public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
+      return PeerTest.load(PeerTest.S1_C11);
+    }
+  }
+
+  static class Set1Case11_Fast implements ArgumentsProvider {
+    @Override
+    public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
+      return PeerTest.load(PeerTest.S1_C11_F);
+    }
+  }
+
   static class Set2Case2a implements ArgumentsProvider {
     @Override
     public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
index 7569f4907eff8a6d399a06ca067722d77fe6a8e2..a29b7fb77b92f7a4f0667cbfe55bd05fb19d8d6f 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/peer/PeerTests.java
@@ -14,6 +14,10 @@ import org.junit.jupiter.params.provider.ArgumentsSource;
 import gov.usgs.earthquake.nshmp.calc.Site;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case1;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case10;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case10_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case11;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case11_Fast;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case2;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case2_Fast;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case3;
@@ -29,6 +33,28 @@ import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case7_
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case8a;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case8b;
 import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set1Case8c;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2a_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2b;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2b_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2c;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2c_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2d;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case2d_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3a_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3b;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3b_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3c_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case3d_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4a_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4b;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case4b_Fast;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case5a;
+import gov.usgs.earthquake.nshmp.model.peer.PeerTestArgumentProviders.Set2Case5b;
 
 class PeerTests {
 
@@ -66,8 +92,7 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case1.class)
   @DisplayName("Set1 Case1")
-  final void set1Case1(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case1(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -75,16 +100,14 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case2.class)
   @DisplayName("Set1 Case2")
-  final void set1Case2(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case2(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case2_Fast.class)
   @DisplayName("Set1 Case2 Fast")
-  final void set1Case2F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case2F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -92,16 +115,14 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case3.class)
   @DisplayName("Set1 Case3")
-  final void set1Case3(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case3(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case3_Fast.class)
   @DisplayName("Set1 Case3 Fast")
-  final void set1Case3F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case3F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -109,16 +130,14 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case4.class)
   @DisplayName("Set1 Case4")
-  final void set1Case4(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case4(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case4_Fast.class)
   @DisplayName("Set1 Case4 Fast")
-  final void set1Case4F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case4F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -126,16 +145,14 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case5.class)
   @DisplayName("Set1 Case5")
-  final void set1Case5(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case5(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case5_Fast.class)
   @DisplayName("Set1 Case5 Fast")
-  final void set1Case5F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case5F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -143,16 +160,14 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case6.class)
   @DisplayName("Set1 Case6")
-  final void set1Case6(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case6(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case6_Fast.class)
   @DisplayName("Set1 Case6 Fast")
-  final void set1Case6F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case6F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -160,32 +175,28 @@ class PeerTests {
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case7.class)
   @DisplayName("Set1 Case7")
-  final void set1Case7(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case7(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case7_Fast.class)
   @DisplayName("Set1 Case7 Fast")
-  final void set1Case7F(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case7F(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case8a.class)
   @DisplayName("Set1 Case8a")
-  final void set1Case8a(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case8a(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
   @ParameterizedTest(name = "{0}, Site={index}")
   @ArgumentsSource(Set1Case8b.class)
   @DisplayName("Set1 Case8b")
-  final void set1Case8b(String modelName, HazardModel model, Site site,
-      double[] expected) {
+  final void set1Case8b(String modelName, HazardModel model, Site site, double[] expected) {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
@@ -196,207 +207,200 @@ class PeerTests {
     PeerTest.test(modelName, model, site, expected, TOL, EXEC);
   }
 
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set1Case10.class)
-  // @DisplayName("Set1 Case10")
-  // final void set1Case10(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set1Case10_Fast.class)
-  // @DisplayName("Set1 Case10 Fast")
-  // final void set1Case10F(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2a.class)
-  // @DisplayName("Set2 Case2a")
-  // final void set2Case2a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2a_Fast.class)
-  // @DisplayName("Set2 Case2a Fast")
-  // final void set2Case2aF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2b.class)
-  // @DisplayName("Set2 Case2b")
-  // final void set2Case2b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2b_Fast.class)
-  // @DisplayName("Set2 Caseb2 Fast")
-  // final void set2Case2bF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2c.class)
-  // @DisplayName("Set2 Case2c")
-  // final void set2Case2c(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2c_Fast.class)
-  // @DisplayName("Set2 Case2c Fast")
-  // final void set2Case2cF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2d.class)
-  // @DisplayName("Se2 Case2d")
-  // final void set2Case2d(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case2d_Fast.class)
-  // @DisplayName("Set2 Case2d Fast")
-  // final void set2Case2dF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3a.class)
-  // @DisplayName("Set2 Case3a")
-  // final void set2Case3a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3a_Fast.class)
-  // @DisplayName("Set2 Case3a Fast")
-  // final void set2Case3aF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3b.class)
-  // @DisplayName("Set2 Case3b")
-  // final void set2Case3b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3b_Fast.class)
-  // @DisplayName("Set2 Case3b Fast")
-  // final void set2Case3bF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3c.class)
-  // @DisplayName("Set2 Case3c")
-  // final void set2Case3c(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3c_Fast.class)
-  // @DisplayName("Set2 Case3c Fast")
-  // final void set2Case3cF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3d.class)
-  // @DisplayName("Set2 Case3d")
-  // final void set2Case3d(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case3d_Fast.class)
-  // @DisplayName("Set2 Case3d Fast")
-  // final void set2Case3dF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4a.class)
-  // @DisplayName("Set2 Case4a")
-  // final void set2Case4a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4a_Fast.class)
-  // @DisplayName("Set2 Case4a Fast")
-  // final void set2Case4aF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @Disabled
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4b.class)
-  // @DisplayName("Set2 Case4b")
-  // final void set2Case4b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case4b_Fast.class)
-  // @DisplayName("Set2 Case4b Fast")
-  // final void set2Case4bF(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case5a.class)
-  // @DisplayName("Set2 Case5a")
-  // final void set2Case5a(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
-  //
-  // @ParameterizedTest(name = "{0}, Site={index}")
-  // @ArgumentsSource(Set2Case5b.class)
-  // @DisplayName("Set2 Case5b")
-  // final void set2Case5b(String modelName, HazardModel model, Site
-  // site, double[] expected) {
-  // PeerTest.test(modelName, model, site, expected, TOL, EXEC);
-  // }
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set1Case10.class)
+  @DisplayName("Set1 Case10")
+  final void set1Case10(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set1Case10_Fast.class)
+  @DisplayName("Set1 Case10 Fast")
+  final void set1Case10F(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set1Case11.class)
+  @DisplayName("Set1 Case11")
+  final void set1Case11(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set1Case11_Fast.class)
+  @DisplayName("Set1 Case11 Fast")
+  final void set1Case11F(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2a.class)
+  @DisplayName("Set2 Case2a")
+  final void set2Case2a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2a_Fast.class)
+  @DisplayName("Set2 Case2a Fast")
+  final void set2Case2aF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2b.class)
+  @DisplayName("Set2 Case2b")
+  final void set2Case2b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2b_Fast.class)
+  @DisplayName("Set2 Case2b Fast")
+  final void set2Case2bF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2c.class)
+  @DisplayName("Set2 Case2c")
+  final void set2Case2c(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2c_Fast.class)
+  @DisplayName("Set2 Case2c Fast")
+  final void set2Case2cF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2d.class)
+  @DisplayName("Se2 Case2d")
+  final void set2Case2d(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case2d_Fast.class)
+  @DisplayName("Set2 Case2d Fast")
+  final void set2Case2dF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3a.class)
+  @DisplayName("Set2 Case3a")
+  final void set2Case3a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3a_Fast.class)
+  @DisplayName("Set2 Case3a Fast")
+  final void set2Case3aF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3b.class)
+  @DisplayName("Set2 Case3b")
+  final void set2Case3b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3b_Fast.class)
+  @DisplayName("Set2 Case3b Fast")
+  final void set2Case3bF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3c.class)
+  @DisplayName("Set2 Case3c")
+  final void set2Case3c(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3c_Fast.class)
+  @DisplayName("Set2 Case3c Fast")
+  final void set2Case3cF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3d.class)
+  @DisplayName("Set2 Case3d")
+  final void set2Case3d(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case3d_Fast.class)
+  @DisplayName("Set2 Case3d Fast")
+  final void set2Case3dF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4a.class)
+  @DisplayName("Set2 Case4a")
+  final void set2Case4a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4a_Fast.class)
+  @DisplayName("Set2 Case4a Fast")
+  final void set2Case4aF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @Disabled
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4b.class)
+  @DisplayName("Set2 Case4b")
+  final void set2Case4b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case4b_Fast.class)
+  @DisplayName("Set2 Case4b Fast")
+  final void set2Case4bF(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case5a.class)
+  @DisplayName("Set2 Case5a")
+  final void set2Case5a(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
+
+  @ParameterizedTest(name = "{0}, Site={index}")
+  @ArgumentsSource(Set2Case5b.class)
+  @DisplayName("Set2 Case5b")
+  final void set2Case5b(String modelName, HazardModel model, Site site, double[] expected) {
+    PeerTest.test(modelName, model, site, expected, TOL, EXEC);
+  }
 
 }
diff --git a/src/test/resources/data/fault-wus-model/Fault/Wasatch.xml b/src/test/resources/data/fault-wus-model/Fault/Wasatch.xml
deleted file mode 100644
index 76e34dce832b7e9314b69f542d2e4cb4cf7c7ba0..0000000000000000000000000000000000000000
--- a/src/test/resources/data/fault-wus-model/Fault/Wasatch.xml
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<FaultSourceSet id="-1" name="Wasatch" weight="1.0">
-  <!-- This model is an example and for review purposes only -->
-  <!-- Original source file: wasatch_slc.noclu.in -->
-  <Settings>
-    <DefaultMfds>
-      <IncrementalMfd floats="false" m="6.5" rate="0.0"
-        type="SINGLE" weight="1.0" />
-    </DefaultMfds>
-    <MagUncertainty>
-      <Epistemic cutoff="6.5" deltas="[-0.2, 0.0, 0.2]"
-        weights="[0.2, 0.6, 0.2]" />
-      <Aleatory count="11" cutoff="6.5" moBalance="true"
-        sigma="0.12" />
-    </MagUncertainty>
-    <SourceProperties
-      ruptureScaling="NSHM_FAULT_WC94_LENGTH" />
-  </Settings>
-  <Source id="-1" name="Wasatch Flt">
-    <IncrementalMfd m="7.5" rate="0.00008" type="SINGLE"
-      weight="0.4" />
-    <IncrementalMfd a="2.0" b="1.0" dMag="0.1" mMax="7.45"
-      mMin="6.55" type="GR" weight="0.3" />
-    <IncrementalMfd mags="[6.55,6.65,6.75,6.85,6.95]"
-      rates="[1.9e-05,1.6e-05,1.3e-05,1.0e-05,9.0e-06]" type="INCR"
-      weight="0.3" />
-    <Geometry depth="0.0" dip="50.0" rake="-90.0"
-      width="19.58112">
-      <Trace>
-        -111.88703,40.84938,0.00000
-        -111.89871,40.84183,0.00000
-        -111.91354,40.83033,0.00000
-        -111.91794,40.81461,0.00000
-        -111.91292,40.80912,0.00000
-        -111.90028,40.79265,0.00000
-        -111.89137,40.78126,0.00000
-        -111.89108,40.78065,0.00000
-        -111.89083,40.78017,0.00000
-        -111.89065,40.77956,0.00000
-        -111.89034,40.77847,0.00000
-        -111.89017,40.77768,0.00000
-        -111.88998,40.77689,0.00000
-        -111.88980,40.77610,0.00000
-        -111.88974,40.77550,0.00000
-        -111.88968,40.77477,0.00000
-        -111.88974,40.77411,0.00000
-        -111.88980,40.77338,0.00000
-        -111.89005,40.77235,0.00000
-        -111.89034,40.77162,0.00000
-        -111.89059,40.77102,0.00000
-        -111.89077,40.77041,0.00000
-        -111.89083,40.77004,0.00000
-        -111.89131,40.76889,0.00000
-        -111.84132,40.77498,0.00000
-        -111.84270,40.77392,0.00000
-        -111.84419,40.77274,0.00000
-        -111.84632,40.77148,0.00000
-        -111.84756,40.77055,0.00000
-        -111.84875,40.76967,0.00000
-        -111.84975,40.76905,0.00000
-        -111.85050,40.76830,0.00000
-        -111.85150,40.76767,0.00000
-        -111.85269,40.76699,0.00000
-        -111.85463,40.76599,0.00000
-        -111.85638,40.76505,0.00000
-        -111.85769,40.76424,0.00000
-        -111.85887,40.76330,0.00000
-        -111.85956,40.76268,0.00000
-        -111.86094,40.76180,0.00000
-        -111.86187,40.76080,0.00000
-        -111.86275,40.75999,0.00000
-        -111.86343,40.75880,0.00000
-        -111.86369,40.75762,0.00000
-        -111.86362,40.75662,0.00000
-        -111.86343,40.75568,0.00000
-        -111.86294,40.75474,0.00000
-        -111.86225,40.75387,0.00000
-        -111.86175,40.75299,0.00000
-        -111.86075,40.75212,0.00000
-        -111.86012,40.75143,0.00000
-        -111.85950,40.75068,0.00000
-        -111.85900,40.75006,0.00000
-        -111.85744,40.74771,0.00000
-        -111.85692,40.74562,0.00000
-        -111.85639,40.74432,0.00000
-        -111.85587,40.74301,0.00000
-        -111.85483,40.74144,0.00000
-        -111.85457,40.73962,0.00000
-        -111.85457,40.73727,0.00000
-        -111.85561,40.73544,0.00000
-        -111.85744,40.73388,0.00000
-        -111.85874,40.73257,0.00000
-        -111.85979,40.73179,0.00000
-        -111.86031,40.73022,0.00000
-        -111.85979,40.72866,0.00000
-        -111.85979,40.72683,0.00000
-        -111.86005,40.72501,0.00000
-        -111.86005,40.72318,0.00000
-        -111.86005,40.72109,0.00000
-        -111.86022,40.71894,0.00000
-        -111.86108,40.71722,0.00000
-        -111.86195,40.71564,0.00000
-        -111.86237,40.71421,0.00000
-        -111.86237,40.71292,0.00000
-        -111.86208,40.71134,0.00000
-        -111.86137,40.71034,0.00000
-        -111.86066,40.70948,0.00000
-        -111.85950,40.70819,0.00000
-        -111.85836,40.70719,0.00000
-        -111.85735,40.70604,0.00000
-        -111.85635,40.70461,0.00000
-        -111.85549,40.70346,0.00000
-        -111.85378,40.70217,0.00000
-        -111.85220,40.70074,0.00000
-        -111.85120,40.69859,0.00000
-        -111.85091,40.69656,0.00000
-        -111.84883,40.69448,0.00000
-        -111.84753,40.69265,0.00000
-        -111.84570,40.69082,0.00000
-        -111.84518,40.68900,0.00000
-        -111.84413,40.68639,0.00000
-        -111.84309,40.68639,0.00000
-        -111.84178,40.68325,0.00000
-        -111.84074,40.68143,0.00000
-        -111.83943,40.67986,0.00000
-        -111.83813,40.67882,0.00000
-        -111.83682,40.67778,0.00000
-        -111.83604,40.67699,0.00000
-        -111.83526,40.67543,0.00000
-        -111.83421,40.67386,0.00000
-        -111.83145,40.67260,0.00000
-        -111.82910,40.67182,0.00000
-        -111.82649,40.67104,0.00000
-        -111.82414,40.67051,0.00000
-        -111.82180,40.66973,0.00000
-        -111.81997,40.66921,0.00000
-        -111.81789,40.66869,0.00000
-        -111.81580,40.66816,0.00000
-        -111.81371,40.66764,0.00000
-        -111.81188,40.66712,0.00000
-        -111.81032,40.66660,0.00000
-        -111.80927,40.66608,0.00000
-        -111.80771,40.66582,0.00000
-        -111.80718,40.66582,0.00000
-        -111.80666,40.66347,0.00000
-        -111.80640,40.66190,0.00000
-        -111.80640,40.66060,0.00000
-        -111.80666,40.65877,0.00000
-        -111.80718,40.65720,0.00000
-        -111.80745,40.65538,0.00000
-        -111.80823,40.65434,0.00000
-        -111.80849,40.65381,0.00000
-        -111.80849,40.65225,0.00000
-        -111.80849,40.65042,0.00000
-        -111.80692,40.64859,0.00000
-        -111.80588,40.64781,0.00000
-        -111.80484,40.64729,0.00000
-        -111.80353,40.64546,0.00000
-        -111.80222,40.64363,0.00000
-        -111.80066,40.64129,0.00000
-        -111.79935,40.63972,0.00000
-        -111.79858,40.63868,0.00000
-        -111.79935,40.63581,0.00000
-        -111.79961,40.63398,0.00000
-        -111.79910,40.63189,0.00000
-        -111.79779,40.62981,0.00000
-        -111.79649,40.62850,0.00000
-        -111.79544,40.62667,0.00000
-        -111.79440,40.62563,0.00000
-        -111.79388,40.62433,0.00000
-        -111.79362,40.62198,0.00000
-        -111.79205,40.62067,0.00000
-        -111.79075,40.61963,0.00000
-        -111.78944,40.61911,0.00000
-        -111.78787,40.61832,0.00000
-        -111.78709,40.61624,0.00000
-        -111.78761,40.61441,0.00000
-        -111.78892,40.61206,0.00000
-        -111.79048,40.60998,0.00000
-        -111.79127,40.60815,0.00000
-        -111.79257,40.60658,0.00000
-        -111.79309,40.60502,0.00000
-        -111.79309,40.60241,0.00000
-        -111.79362,40.60058,0.00000
-        -111.79362,40.59902,0.00000
-        -111.79283,40.59771,0.00000
-        -111.79205,40.59510,0.00000
-        -111.79101,40.59380,0.00000
-        -111.78996,40.59275,0.00000
-        -111.78918,40.59119,0.00000
-        -111.78892,40.58936,0.00000
-        -111.79022,40.58727,0.00000
-        -111.79179,40.58571,0.00000
-        -111.79336,40.58336,0.00000
-        -111.79492,40.58205,0.00000
-        -111.79533,40.57913,0.00000
-        -111.79533,40.57656,0.00000
-        -111.79559,40.57501,0.00000
-        -111.79559,40.57296,0.00000
-        -111.79585,40.57115,0.00000
-        -111.79585,40.56961,0.00000
-        -111.79507,40.56806,0.00000
-        -111.79430,40.56600,0.00000
-        -111.79430,40.56420,0.00000
-        -111.79482,40.56240,0.00000
-        -111.79765,40.56086,0.00000
-        -111.79816,40.55931,0.00000
-        -111.79816,40.55777,0.00000
-        -111.79945,40.55622,0.00000
-        -111.79945,40.55442,0.00000
-        -111.79971,40.55262,0.00000
-        -111.80074,40.55107,0.00000
-        -111.80202,40.54824,0.00000
-        -111.80383,40.54670,0.00000
-        -111.80614,40.54464,0.00000
-        -111.80769,40.54335,0.00000
-        -111.80923,40.54232,0.00000
-        -111.81078,40.54129,0.00000
-        -111.81232,40.53897,0.00000
-        -111.81361,40.53717,0.00000
-        -111.81490,40.53537,0.00000
-        -111.81902,40.53279,0.00000
-        -111.82108,40.53099,0.00000
-        -111.82417,40.52996,0.00000
-        -111.82648,40.52790,0.00000
-        -111.82906,40.52481,0.00000
-        -111.83163,40.52250,0.00000
-        -111.83369,40.52069,0.00000
-        -111.83549,40.51838,0.00000
-        -111.83652,40.51657,0.00000
-        -111.83781,40.51426,0.00000
-        -111.83910,40.51220,0.00000
-        -111.83884,40.50937,0.00000
-        -111.83884,40.50705,0.00000
-        -111.83807,40.50473,0.00000
-        -111.83730,40.50267,0.00000
-        -111.83627,40.50113,0.00000
-        -111.83524,40.50010,0.00000
-        -111.83362,40.49853,0.00000
-      </Trace>
-    </Geometry>
-  </Source>
-</FaultSourceSet>
diff --git a/src/test/resources/data/fault-wus-model/Fault/gmm.xml b/src/test/resources/data/fault-wus-model/Fault/gmm.xml
deleted file mode 100644
index bf0a2cf0c32dc2938a98a883e221dc071b1bfe3e..0000000000000000000000000000000000000000
--- a/src/test/resources/data/fault-wus-model/Fault/gmm.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<GroundMotionModels>
-  <!-- This model is an example and for review purposes only -->
-  <Uncertainty
-    values="[0.37, 0.25, 0.4, 0.22, 0.23, 0.36, 0.22, 0.23, 0.33]"
-    weights="[0.185, 0.63, 0.185]" />
-  <ModelSet maxDistance="300.0">
-    <Model id="ASK_14" weight="0.5" />
-    <Model id="BSSA_14" weight="0.5" />
-  </ModelSet>
-</GroundMotionModels>
diff --git a/src/test/resources/data/fault-wus-model/config.json b/src/test/resources/data/fault-wus-model/config.json
deleted file mode 100644
index 89fff8520b2d4848f0fd58819c59fedf8292eb0d..0000000000000000000000000000000000000000
--- a/src/test/resources/data/fault-wus-model/config.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "model": {
-    "name": "WUS Fault test - Wasatch",
-    "surfaceSpacing": 1.0,
-    "ruptureFloating": "NSHM",
-    "ruptureVariability": false,
-    "pointSourceType": "FINITE",
-    "areaGridScaling": "SCALED_SMALL"
-  },
-  "hazard": {
-    "exceedanceModel": "TRUNCATION_3SIGMA_UPPER",
-    "truncationLevel": 3.0,
-    "imts": ["PGA", "SA0P2", "SA1P0"],
-    "gmmUncertainty": true
-  }
-}
-
diff --git a/src/test/resources/data/fault-wus-result.txt b/src/test/resources/data/fault-wus-result.txt
deleted file mode 100644
index a36fd2a960ecc0bb6a4975c5ae08136f0965974a..0000000000000000000000000000000000000000
--- a/src/test/resources/data/fault-wus-result.txt
+++ /dev/null
@@ -1,140 +0,0 @@
-{
-  "Peak Ground Acceleration": {
-    "xs": [
-      -5.991464547107982,
-      -5.403677882205863,
-      -4.892852258439873,
-      -4.482952553263842,
-      -4.080441657053109,
-      -3.6769508832486624,
-      -3.270169119255751,
-      -2.864704011147587,
-      -2.460409178187613,
-      -2.05572501506252,
-      -1.6502599069543555,
-      -1.2447947988461912,
-      -0.8393296907380268,
-      -0.43232256227804705,
-      -0.027371196796132015,
-      0.37843643572024505,
-      0.7839015438284094,
-      1.1878434223960523,
-      1.5933085305042167,
-      1.998773638612381
-    ],
-    "ys": [
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867606584169703E-4,
-      7.86675863416563E-4,
-      7.85885276246499E-4,
-      7.810601705656871E-4,
-      7.606863535653204E-4,
-      7.01036072733739E-4,
-      5.795583523403312E-4,
-      4.057342674270078E-4,
-      2.2859194297806694E-4,
-      1.0045776049701153E-4,
-      3.307264686770001E-5,
-      7.611670476498426E-6,
-      1.0270771313423932E-6,
-      4.635180902558357E-8,
-      0.0
-    ]
-  },
-  "0.20 Second Spectral Acceleration": {
-    "xs": [
-      -5.991464547107982,
-      -5.403677882205863,
-      -4.892852258439873,
-      -4.482952553263842,
-      -4.080441657053109,
-      -3.6769508832486624,
-      -3.270169119255751,
-      -2.864704011147587,
-      -2.460409178187613,
-      -2.05572501506252,
-      -1.6502599069543555,
-      -1.2447947988461912,
-      -0.8393296907380268,
-      -0.43232256227804705,
-      -0.027371196796132015,
-      0.37843643572024505,
-      0.7839015438284094,
-      1.1878434223960523,
-      1.5933085305042167,
-      1.998773638612381
-    ],
-    "ys": [
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867604902860264E-4,
-      7.86673562289291E-4,
-      7.859035683901643E-4,
-      7.813661771361564E-4,
-      7.625961701375487E-4,
-      7.080724108237096E-4,
-      5.955361124500661E-4,
-      4.314471936867478E-4,
-      2.5753807806656035E-4,
-      1.2301472703178223E-4,
-      4.599755030005646E-5,
-      1.280464297110072E-5,
-      2.4215291739632534E-6
-    ]
-  },
-  "1.00 Second Spectral Acceleration": {
-    "xs": [
-      -5.991464547107982,
-      -5.403677882205863,
-      -4.892852258439873,
-      -4.482952553263842,
-      -4.080441657053109,
-      -3.6769508832486624,
-      -3.270169119255751,
-      -2.864704011147587,
-      -2.460409178187613,
-      -2.05572501506252,
-      -1.6502599069543555,
-      -1.2447947988461912,
-      -0.8393296907380268,
-      -0.43232256227804705,
-      -0.027371196796132015,
-      0.37843643572024505,
-      0.7839015438284094,
-      1.1878434223960523,
-      1.5933085305042167,
-      1.998773638612381
-    ],
-    "ys": [
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652574477288E-4,
-      7.867652345373754E-4,
-      7.867335771449808E-4,
-      7.864363790486857E-4,
-      7.846692543914508E-4,
-      7.768012862090144E-4,
-      7.508654491371535E-4,
-      6.870446997922514E-4,
-      5.697746494492765E-4,
-      4.092004155964778E-4,
-      2.4471627175877994E-4,
-      1.1787994153314983E-4,
-      4.488859032007427E-5,
-      1.28628015822202E-5,
-      2.36168828716727E-6,
-      1.889099420201926E-7,
-      1.3427562693232085E-10,
-      0.0
-    ]
-  }
-}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json b/src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json
new file mode 100644
index 0000000000000000000000000000000000000000..dab045429f2b34727ab034dc8fce97981ebcf175
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-BOSTON_MA.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03914233780797499,
+      0.02989016167425646,
+      0.022414738249816803,
+      0.016507976575887835,
+      0.011748674058483559,
+      0.008144348576472008,
+      0.005438400827601606,
+      0.0034864767292066977,
+      0.002157342689739229,
+      0.0012890832364940773,
+      7.479963578356696E-4,
+      4.2251815971585906E-4,
+      2.3212125774719244E-4,
+      1.2319600921334252E-4,
+      6.234822115513256E-5,
+      2.945030137482387E-5,
+      1.2745428815351975E-5,
+      4.920671648247059E-6,
+      1.6253730272271207E-6,
+      4.3897051492969254E-7
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.058466287208179896,
+      0.04523341775461499,
+      0.03417597057561101,
+      0.025272097457480932,
+      0.01803765138212007,
+      0.012536022222926064,
+      0.008386992947299686,
+      0.005375575135698241,
+      0.0033114741245990377,
+      0.0019573166567094596,
+      0.001114231841262589,
+      6.120099636414432E-4,
+      3.2480242410211894E-4,
+      1.6634094947720935E-4,
+      8.172543701921253E-5,
+      3.796490233181994E-5,
+      1.646814003518987E-5,
+      6.51772046503957E-6,
+      2.2644627932483934E-6,
+      6.663781564514834E-7
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.037847844507502025,
+      0.02567690634943678,
+      0.01676477231992802,
+      0.01057976558863212,
+      0.006330549015602008,
+      0.0036498803381026547,
+      0.001997668823959452,
+      0.001032467376372275,
+      5.074062115716712E-4,
+      2.37521115307631E-4,
+      1.0713945026682757E-4,
+      4.6855450646319724E-5,
+      1.9851758612293887E-5,
+      8.032351809898373E-6,
+      3.0231518915851564E-6,
+      1.0201548329668746E-6,
+      2.9905133617664697E-7,
+      7.269183491001854E-8,
+      1.3476747050691167E-8,
+      1.7163315396718482E-9
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.03993841227217027,
+      0.029596617356231945,
+      0.021565702316131204,
+      0.01531394203717907,
+      0.010538275414803904,
+      0.007003929679548266,
+      0.004493762511593919,
+      0.0027712357437226502,
+      0.0016563867296361461,
+      9.610058692678628E-4,
+      5.457252093485164E-4,
+      2.98337153461094E-4,
+      1.6018726984512102E-4,
+      8.192392042372969E-5,
+      3.984870060998225E-5,
+      1.7855820539659115E-5,
+      7.17256583291046E-6,
+      2.4769038804014534E-6,
+      7.180085034701538E-7,
+      1.5968077017980738E-7
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.0039199665489630196,
+      0.002649149078227514,
+      0.0017206197635287292,
+      0.0010440634779037084,
+      5.976452743309104E-4,
+      3.171633932505286E-4,
+      1.5491634128298503E-4,
+      7.004335140878154E-5,
+      2.9342884032691897E-5,
+      1.1559411521441675E-5,
+      4.333270761151019E-6,
+      1.569264584319706E-6,
+      5.521316204566823E-7,
+      1.8302867373558098E-7,
+      5.533079833213406E-8,
+      1.4666798232612092E-8,
+      3.2572331758927513E-9,
+      5.622061312117269E-10,
+      6.824583049417134E-11,
+      4.388036699884585E-12
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.046675606488895405,
+      0.03607066134828531,
+      0.02736964932277993,
+      0.02042619880128213,
+      0.014780981248096781,
+      0.010447354169273025,
+      0.007126056764967811,
+      0.004665296550987655,
+      0.002939789819244215,
+      0.0017806848020501314,
+      0.0010411628995626097,
+      5.889491591026346E-4,
+      3.226644159357472E-4,
+      1.7073199925009947E-4,
+      8.654429025671603E-5,
+      4.132828720704226E-5,
+      1.831735252128341E-5,
+      7.354381760974894E-6,
+      2.5725132051642086E-6,
+      7.542997622195249E-7
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.0038498347565120205,
+      0.002508009919606796,
+      0.001559899852827533,
+      9.157690814974519E-4,
+      5.002312895767906E-4,
+      2.547445040642949E-4,
+      1.194580788537864E-4,
+      5.2331959704405177E-5,
+      2.156347308445193E-5,
+      8.401435809805703E-6,
+      3.1474351872760277E-6,
+      1.1421463146502527E-6,
+      3.930455995731863E-7,
+      1.294631969514673E-7,
+      3.7175784900169275E-8,
+      9.320214406333003E-9,
+      1.876382487623761E-9,
+      2.843180508601313E-10,
+      2.6930321908185136E-11,
+      1.033591597992263E-12
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.025070620661269347,
+      0.01734289203959507,
+      0.01169546271370758,
+      0.007668582975933569,
+      0.00491102894397992,
+      0.0029894995253896503,
+      0.0017775708007900716,
+      0.0010057679491862004,
+      5.425792140007751E-4,
+      2.7706305303667545E-4,
+      1.3415391994167798E-4,
+      6.041781320291379E-5,
+      2.605276940138407E-5,
+      1.062482292083981E-5,
+      4.067143637411805E-6,
+      1.4563380812322368E-6,
+      4.5947389330854426E-7,
+      1.2520062734589536E-7,
+      2.8430671879404137E-8,
+      4.8808793521851725E-9
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.053558779349950326,
+      0.04163355152035621,
+      0.031683579450450534,
+      0.023651969817799573,
+      0.01708345688729975,
+      0.012034818471097865,
+      0.008173175891564247,
+      0.005322843945850345,
+      0.0033333551614215863,
+      0.0020039427017514463,
+      0.0011610707402965282,
+      6.49740228832071E-4,
+      3.5175567014812713E-4,
+      1.8397425673339883E-4,
+      9.239132241464239E-5,
+      4.389741055232046E-5,
+      1.947339735059552E-5,
+      7.882288436937665E-6,
+      2.8026538021315537E-6,
+      8.438866197483163E-7
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.03915434771147558,
+      0.028875023243624898,
+      0.020883665735936214,
+      0.014675236825061092,
+      0.009966568799918083,
+      0.006525459698203796,
+      0.004121976241620071,
+      0.002503344053915695,
+      0.0014752422558326327,
+      8.449328299236284E-4,
+      4.7415118882997295E-4,
+      2.5623392997021864E-4,
+      1.3610065105900684E-4,
+      6.889900480466749E-5,
+      3.3208700976362416E-5,
+      1.4756400551274348E-5,
+      5.880079101681966E-6,
+      2.0147203271706218E-6,
+      5.798093577971087E-7,
+      1.2826598279767695E-7
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.007212898253624169,
+      0.004676573300429593,
+      0.002920130799663904,
+      0.001731294461783224,
+      9.704446035645144E-4,
+      5.008402550065288E-4,
+      2.442489363995219E-4,
+      1.1019498177285702E-4,
+      4.732744738087531E-5,
+      1.9505110519212336E-5,
+      7.839375885942605E-6,
+      3.0809138289937545E-6,
+      1.1640471800423585E-6,
+      4.118123004124754E-7,
+      1.3155208253491514E-7,
+      3.705950411068419E-8,
+      8.50167164056051E-9,
+      1.524045047941097E-9,
+      1.812505385452416E-10,
+      7.648411305960565E-12
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.0605480105751499,
+      0.04501098005930879,
+      0.032384307769067484,
+      0.02260605326254201,
+      0.01506018704867334,
+      0.009690648275790322,
+      0.005956734794995151,
+      0.003489593411823374,
+      0.0019622113010085342,
+      0.0010595366783556544,
+      5.526864005182588E-4,
+      2.7897039818942953E-4,
+      1.3610824925137406E-4,
+      6.384228903168711E-5,
+      2.8460582385833015E-5,
+      1.180497237993753E-5,
+      4.465955435642237E-6,
+      1.49253037549434E-6,
+      4.1994805876545705E-7,
+      9.48348980480982E-8
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.031248205278516645,
+      0.021022831627778526,
+      0.013730084998235838,
+      0.008668451644582083,
+      0.005290636995637011,
+      0.0030493943200448166,
+      0.0016873599755561934,
+      8.730876144431824E-4,
+      4.277934376714163E-4,
+      1.981234833801192E-4,
+      8.781426215410185E-5,
+      3.769023604397422E-5,
+      1.5773148556275923E-5,
+      6.389189832832348E-6,
+      2.443165818385571E-6,
+      8.604689008662215E-7,
+      2.618941207020184E-7,
+      6.76910689298808E-8,
+      1.3856737386089236E-8,
+      2.052964708601786E-9
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.004260239917355343,
+      0.002747437951462869,
+      0.0016962495940869068,
+      9.90861525127217E-4,
+      5.387521682262966E-4,
+      2.7298743357773695E-4,
+      1.2732741837075774E-4,
+      5.5595999677880344E-5,
+      2.2928573337775342E-5,
+      8.926692861743784E-6,
+      3.360343370756821E-6,
+      1.2326581867341103E-6,
+      4.2734404702160673E-7,
+      1.3965580070780226E-7,
+      4.028870467937881E-8,
+      1.0015447259625218E-8,
+      2.0079161744639314E-9,
+      3.0444345288909135E-10,
+      2.7821682344262712E-11,
+      8.243538052237883E-13
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.03933021625154743,
+      0.02979012206255586,
+      0.022131406110143834,
+      0.01611749698230364,
+      0.01143744526948362,
+      0.007828560982051909,
+      0.005189302072845991,
+      0.0033120971270995552,
+      0.002040723617418319,
+      0.0012160681600583492,
+      7.096573150942213E-4,
+      4.0065580985596666E-4,
+      2.210303286111401E-4,
+      1.1736332009508205E-4,
+      5.957627357863399E-5,
+      2.8259993410035885E-5,
+      1.2294767842861585E-5,
+      4.766272396653292E-6,
+      1.5984737797764024E-6,
+      4.4054513533421145E-7
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.02078426825037505,
+      0.013751616669231689,
+      0.008853513006465641,
+      0.005504271013688692,
+      0.003295582247045737,
+      0.0018516332308120738,
+      9.933435868323443E-4,
+      4.958503975357015E-4,
+      2.3416067895984526E-4,
+      1.0481396227848263E-4,
+      4.513950892503689E-5,
+      1.8926393389477387E-5,
+      7.741381415109316E-6,
+      3.046659864333437E-6,
+      1.1203779990567415E-6,
+      3.758177608687153E-7,
+      1.0794864626103805E-7,
+      2.6067570268093618E-8,
+      4.93800112833589E-9,
+      6.529588236913286E-10
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.011096718555314453,
+      0.007264815181464962,
+      0.004611051506591618,
+      0.002801458376635591,
+      0.0016210026114562661,
+      8.696054160910163E-4,
+      4.422597450087881E-4,
+      2.0849582899450464E-4,
+      9.33634892901417E-5,
+      4.002558235634495E-5,
+      1.6694477298811717E-5,
+      6.819463764946971E-6,
+      2.7061990018969576E-6,
+      1.0168656315688113E-6,
+      3.514306910534065E-7,
+      1.0895716705327064E-7,
+      2.8348722553260165E-8,
+      6.038692794806542E-9,
+      9.51465720593215E-10,
+      8.617222840999325E-11
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.05540530051404282,
+      0.04028523914672501,
+      0.028272887419661302,
+      0.019199643597049558,
+      0.012400027410952193,
+      0.007724688311466729,
+      0.0045923065651716916,
+      0.00260067920507145,
+      0.001414331801573528,
+      7.394250697758931E-4,
+      3.740328367372389E-4,
+      1.8327639211133183E-4,
+      8.681958098385632E-5,
+      3.947312765494866E-5,
+      1.6991964088657635E-5,
+      6.763822576725088E-6,
+      2.43436424287352E-6,
+      7.665837346406031E-7,
+      2.0057812073967583E-7,
+      4.121865176925155E-8
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.052128624019661444,
+      0.03716807458671485,
+      0.0255204603361861,
+      0.016926727411131277,
+      0.010657028876634448,
+      0.006468826367846689,
+      0.003742851637950904,
+      0.0020594428641666513,
+      0.0010867634191930175,
+      5.508832471536552E-4,
+      2.7017067887168166E-4,
+      1.2839871729187512E-4,
+      5.897188875313501E-5,
+      2.593042839984566E-5,
+      1.0740530029609316E-5,
+      4.078693045644525E-6,
+      1.3863984388063983E-6,
+      4.070666806509814E-7,
+      9.754746553977037E-8,
+      1.777728102735033E-8
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.004406397605961208,
+      0.0028143718947870123,
+      0.0017203522100898657,
+      9.890702014775671E-4,
+      5.338947325651886E-4,
+      2.668157393159858E-4,
+      1.2512122967306064E-4,
+      5.546153188278619E-5,
+      2.3195001119492334E-5,
+      9.383357417575572E-6,
+      3.712325007920172E-6,
+      1.4135343909406086E-6,
+      5.165619157886807E-7,
+      1.7297142775266766E-7,
+      5.1833773706324095E-8,
+      1.3192943745917677E-8,
+      2.7295154009539544E-9,
+      4.062775169561117E-10,
+      3.4950513643719577E-11,
+      5.838784321867675E-13
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.003571835864459561,
+      0.0024343291464347283,
+      0.0015832974158629912,
+      9.762618967828152E-4,
+      5.554432293287926E-4,
+      2.961437003938919E-4,
+      1.4560489268512926E-4,
+      6.567526760163609E-5,
+      2.7491158549826444E-5,
+      1.0738921154638049E-5,
+      3.9708272315327206E-6,
+      1.4134821212769344E-6,
+      4.871916396858531E-7,
+      1.5781241823626374E-7,
+      4.702756069022724E-8,
+      1.2189830132733457E-8,
+      2.649251624834432E-9,
+      4.556873867553408E-10,
+      5.5781162746423104E-11,
+      4.055262178307712E-12
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.044504228943102936,
+      0.03082070108757687,
+      0.020524478134379135,
+      0.013196618102656927,
+      0.008046881272976791,
+      0.004731177531052012,
+      0.00264688029982518,
+      0.0014036955730254562,
+      7.111912876558856E-4,
+      3.4476003042155357E-4,
+      1.6137541367051964E-4,
+      7.32033260991153E-5,
+      3.2104590473200855E-5,
+      1.3450114145075575E-5,
+      5.269102605756242E-6,
+      1.8690329093063012E-6,
+      5.83570896134091E-7,
+      1.5392132419119855E-7,
+      3.19082863406106E-8,
+      4.729379898609713E-9
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.06499906653577099,
+      0.049616144329237014,
+      0.036811025865104575,
+      0.0266161885137005,
+      0.018480029600417114,
+      0.012443285297652762,
+      0.0080320756326934,
+      0.004950891109171309,
+      0.002928704457726496,
+      0.0016617116711237809,
+      9.089413703526835E-4,
+      4.804558986988108E-4,
+      2.4568997610767564E-4,
+      1.2125692684576274E-4,
+      5.732933946972455E-5,
+      2.553772431767668E-5,
+      1.0559769991023885E-5,
+      3.947563804087821E-6,
+      1.2791168914692539E-6,
+      3.455515762465405E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json b/src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json
new file mode 100644
index 0000000000000000000000000000000000000000..7ee83da7c3f521ca515441d9092c45b3fa7232b7
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-CHICAGO_IL.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.021415199952957688,
+      0.015176326514125114,
+      0.010704283412114208,
+      0.0074929560248859954,
+      0.005067337697240312,
+      0.003309723604842936,
+      0.002050733260206742,
+      0.0012048147203883185,
+      6.834397728504638E-4,
+      3.8007720304557014E-4,
+      2.1094605883799757E-4,
+      1.1722499989424255E-4,
+      6.462484191174229E-5,
+      3.474136878113784E-5,
+      1.7822938985339467E-5,
+      8.503035640990804E-6,
+      3.69662905726623E-6,
+      1.4255962044983592E-6,
+      4.678102259982354E-7,
+      1.2473901144081122E-7
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03687780119961635,
+      0.026132787912055467,
+      0.01823880943763749,
+      0.012640553070929178,
+      0.008564874200136706,
+      0.005695189818651442,
+      0.003627889639168003,
+      0.002181302386526003,
+      0.001239752305895583,
+      6.695165252024555E-4,
+      3.499154651113233E-4,
+      1.798722149824764E-4,
+      9.174253103171466E-5,
+      4.622446890416979E-5,
+      2.2675422026723263E-5,
+      1.0578595234028908E-5,
+      4.604456131386467E-6,
+      1.8203461455134959E-6,
+      6.276922716837099E-7,
+      1.8189300392955268E-7
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.029132214994602088,
+      0.0189806047247321,
+      0.012213364382343281,
+      0.007881464954600315,
+      0.005032706304101386,
+      0.0031876678608212467,
+      0.0019246537156122846,
+      0.0010644756130796346,
+      5.221538550780107E-4,
+      2.195986350311877E-4,
+      7.84465891095197E-5,
+      2.426240466809278E-5,
+      7.030738247369897E-6,
+      2.1840694574951797E-6,
+      7.434413276081978E-7,
+      2.414753356722181E-7,
+      6.843510543731292E-8,
+      1.59348087378042E-8,
+      2.7791018108527906E-9,
+      3.2523546957794494E-10
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.0232009803276374,
+      0.01588144227753551,
+      0.010917718546370431,
+      0.007478450412491857,
+      0.005032480500243402,
+      0.003258848486008023,
+      0.0019936769951488945,
+      0.001135641147887529,
+      6.114178596084717E-4,
+      3.1762826862757437E-4,
+      1.649913839929484E-4,
+      8.56996227753098E-5,
+      4.536103656555414E-5,
+      2.3318546177766215E-5,
+      1.1450293768056903E-5,
+      5.160658510794714E-6,
+      2.0735719236823014E-6,
+      7.122076219636837E-7,
+      2.0419442584731344E-7,
+      4.4574923151468436E-8
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.005087721730639766,
+      0.003976471126081937,
+      0.0031554963142401958,
+      0.0024719914720103303,
+      0.0018728816569337499,
+      0.0013222654673358397,
+      8.403273528400035E-4,
+      4.6666641797421125E-4,
+      2.1938466916739208E-4,
+      8.576523205139916E-5,
+      2.7248486120432883E-5,
+      6.787322527415182E-6,
+      1.2854595664159615E-6,
+      1.7897146208028692E-7,
+      1.616940836289771E-8,
+      2.4630931936584006E-9,
+      5.74251934264313E-10,
+      1.0942558114506564E-10,
+      1.5504708726859704E-11,
+      1.3088068428865763E-12
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.02675746804552609,
+      0.01903367736791901,
+      0.013442310985722482,
+      0.009445665812097237,
+      0.006457299531757921,
+      0.004298471562203473,
+      0.0027323202096355384,
+      0.0016487618965576518,
+      9.548489572798034E-4,
+      5.363351332234928E-4,
+      2.969312311353152E-4,
+      1.632545363533844E-4,
+      8.888347627341918E-5,
+      4.736145401311616E-5,
+      2.4302055101660484E-5,
+      1.1736732952975124E-5,
+      5.238818481901508E-6,
+      2.106020490103739E-6,
+      7.329597445821978E-7,
+      2.12323904135114E-7
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.004904729525218748,
+      0.0037557772231247245,
+      0.002900800978171847,
+      0.002197334586881119,
+      0.0015715480184104107,
+      0.0010318179509125533,
+      5.988341070335751E-4,
+      3.00002130229277E-4,
+      1.2636791653138806E-4,
+      4.334524151406029E-5,
+      1.1729721718860492E-5,
+      2.38400627612158E-6,
+      3.523796033489146E-7,
+      3.79493586616785E-8,
+      5.991249745033427E-9,
+      1.4980539406239078E-9,
+      3.156166184078564E-10,
+      5.273948291002487E-11,
+      5.995435615232835E-12,
+      3.1638447771189843E-13
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.018639908576511335,
+      0.012853019374237013,
+      0.008928402044389406,
+      0.00628893786046141,
+      0.004513469776840019,
+      0.00319957590553628,
+      0.002244917871070637,
+      0.0015188163930541728,
+      9.86320218050021E-4,
+      6.021395182138048E-4,
+      3.3809160559878916E-4,
+      1.6605034269841167E-4,
+      6.974765597363855E-5,
+      2.3550935210027346E-5,
+      6.1014062874320946E-6,
+      1.1911818193529437E-6,
+      1.6372875622008456E-7,
+      2.4608204456858437E-8,
+      4.969808254548686E-9,
+      8.184891581168186E-10
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.032118922510355585,
+      0.022927823828395668,
+      0.016176153813527865,
+      0.011342437938049689,
+      0.007756343988304125,
+      0.005179280241576754,
+      0.0033002525478875036,
+      0.001986862777009392,
+      0.0011404300984357565,
+      6.306519969327575E-4,
+      3.4173547872235686E-4,
+      1.8333652974659957E-4,
+      9.743378290999634E-5,
+      5.087197111871041E-5,
+      2.5745973639036435E-5,
+      1.2354878881855899E-5,
+      5.521405709549125E-6,
+      2.2393324463064075E-6,
+      7.926764957246903E-7,
+      2.3592192766555033E-7
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.022709153088803474,
+      0.015516407525088264,
+      0.010635671771481597,
+      0.007251037242502168,
+      0.0048475724577795535,
+      0.0031115835516757934,
+      0.0018785044988261855,
+      0.0010503149080535947,
+      5.537634311623952E-4,
+      2.820044974240437E-4,
+      1.441137875987523E-4,
+      7.386133639813975E-5,
+      3.866055852727225E-5,
+      1.9679587527735172E-5,
+      9.58230635347683E-6,
+      4.287565242021686E-6,
+      1.7123875717198338E-6,
+      5.856787794935905E-7,
+      1.6773839930842043E-7,
+      3.682285864888503E-8
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.007394880938066951,
+      0.005275837202374249,
+      0.0038168187407487068,
+      0.00274171406083238,
+      0.0018987074568688998,
+      0.0012095558769653978,
+      6.990383418697162E-4,
+      3.470710730073888E-4,
+      1.4557708032577682E-4,
+      5.0022797667739386E-5,
+      1.3555539085976164E-5,
+      2.821986328649067E-6,
+      4.781115537039027E-7,
+      8.213559040260663E-8,
+      2.2993182038188E-8,
+      6.190489778358205E-9,
+      1.3648600241068056E-9,
+      2.389670821612729E-10,
+      2.8765652192175936E-11,
+      1.5303610727983937E-12
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.041847727706109686,
+      0.028519823227120742,
+      0.019028651014821357,
+      0.012597754257260963,
+      0.008183597609730937,
+      0.005256497908587534,
+      0.003238123657453767,
+      0.0018638412624199093,
+      9.910791862566327E-4,
+      4.834111575168988E-4,
+      2.1974719468613685E-4,
+      9.585152526752285E-5,
+      4.150562504160168E-5,
+      1.8097564382467088E-5,
+      7.793929556366117E-6,
+      3.181437030652351E-6,
+      1.1872974463454096E-6,
+      3.899385858868817E-7,
+      1.0694405396942193E-7,
+      2.3231393429498228E-8
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.02561482011123825,
+      0.016913257766941418,
+      0.011121777104900471,
+      0.007332550654566124,
+      0.0048757479553200814,
+      0.003181046665831512,
+      0.0020113491843459573,
+      0.0011685393683983061,
+      6.093964903613104E-4,
+      2.7496980698383063E-4,
+      1.047471141889804E-4,
+      3.3121076012781854E-5,
+      8.849075091282894E-6,
+      2.1757338615202016E-6,
+      5.909715196238892E-7,
+      1.9302475714946263E-7,
+      5.6354627414873383E-8,
+      1.395552449104546E-8,
+      2.6931309575154653E-9,
+      3.6979401599248286E-10
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.005192919109660897,
+      0.003905438889586007,
+      0.0029678905440560575,
+      0.0022116565579066243,
+      0.0015534027564356714,
+      0.0010018820139539894,
+      5.720739960513276E-4,
+      2.821959607360689E-4,
+      1.1671661683934548E-4,
+      3.871672390370977E-5,
+      9.96668307502356E-6,
+      1.8783861793237288E-6,
+      2.5565190282238324E-7,
+      2.9495771655282715E-8,
+      6.404900533856341E-9,
+      1.5817698510075212E-9,
+      3.266320079903312E-10,
+      5.355692181504656E-11,
+      5.825085443220371E-12,
+      2.5428520886961514E-13
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.022094927654930818,
+      0.01551969204115865,
+      0.010858948449677832,
+      0.007555037306758795,
+      0.005148295299025827,
+      0.0033591700214449,
+      0.0020887756417075592,
+      0.0012264800074995705,
+      6.874327553207413E-4,
+      3.749767508983777E-4,
+      2.055977708001969E-4,
+      1.126518995122865E-4,
+      6.194418238812541E-5,
+      3.322271721279584E-5,
+      1.7079354916971006E-5,
+      8.180398260169682E-6,
+      3.5761554905769123E-6,
+      1.3861060597906542E-6,
+      4.626802255234773E-7,
+      1.2634962263263617E-7
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.01767570331223553,
+      0.011805262722070876,
+      0.007916998810081835,
+      0.005349510887359814,
+      0.003631753778204176,
+      0.0023847309846611905,
+      0.0014872868924913623,
+      8.357425237577044E-4,
+      4.1473832423023185E-4,
+      1.7587415044869426E-4,
+      6.245829740060085E-5,
+      1.826780074924038E-5,
+      4.428684495886055E-6,
+      1.005830828417685E-6,
+      2.5118601963486276E-7,
+      7.821406136558919E-8,
+      2.1492223169963725E-8,
+      4.927858818036696E-9,
+      8.761736248273617E-10,
+      1.0779530311320477E-10
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.010331687129850237,
+      0.0071492281397494105,
+      0.0050148599763548945,
+      0.003536961008001989,
+      0.0024537508247077996,
+      0.0015926989315314091,
+      9.509592093598605E-4,
+      4.97261235793988E-4,
+      2.2444656395444052E-4,
+      8.492499430288668E-5,
+      2.6382969646802405E-5,
+      6.551875293388738E-6,
+      1.3535398808634593E-6,
+      2.5468593832089636E-7,
+      6.82448223346306E-8,
+      1.995217055886154E-8,
+      4.942618416564459E-9,
+      1.0006245739855778E-9,
+      1.5068699403997592E-10,
+      1.3442024051744926E-11
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03852780142350551,
+      0.025843764808380052,
+      0.01700096001878875,
+      0.01112758883637401,
+      0.007166962601323311,
+      0.004576451173077522,
+      0.002804736510976369,
+      0.0016003254973259943,
+      8.352488859325735E-4,
+      3.935143309340366E-4,
+      1.6925411394115266E-4,
+      6.857565061074137E-5,
+      2.7489760123284435E-5,
+      1.1203425458250796E-5,
+      4.575943720759225E-6,
+      1.7733415626264506E-6,
+      6.239502616436751E-7,
+      1.915954354072032E-7,
+      4.8429637957920225E-8,
+      9.46713018667407E-9
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03723308116153551,
+      0.024646957462025505,
+      0.016003338061045196,
+      0.010352403271331814,
+      0.006603468214608308,
+      0.004187251060560331,
+      0.00255090701202397,
+      0.0014418339108460165,
+      7.377024429112525E-4,
+      3.3517993420225577E-4,
+      1.3646081123290006E-4,
+      5.144272161506125E-5,
+      1.9114484231355124E-5,
+      7.302112921445485E-6,
+      2.835730822966113E-6,
+      1.0433669016127334E-6,
+      3.451913814436548E-7,
+      9.834437197803737E-8,
+      2.2596194807247467E-8,
+      3.878865823317893E-9
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.005197118714592543,
+      0.0038657260956638712,
+      0.0028918507000103566,
+      0.002099076805953129,
+      0.0014334768031464343,
+      8.890469754651387E-4,
+      4.900216420228358E-4,
+      2.3290630432575815E-4,
+      9.171006248543321E-5,
+      2.93716046604876E-5,
+      7.325051256685582E-6,
+      1.3576037844935664E-6,
+      1.9719475669202581E-7,
+      3.087983423903296E-8,
+      8.342261682202136E-9,
+      2.0745222370193933E-9,
+      4.3011253630784063E-10,
+      6.709945729189854E-11,
+      6.793388519252721E-12,
+      1.8241302411305335E-13
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.004834525294275608,
+      0.0038340517624876028,
+      0.0030703943972918714,
+      0.002441686324852129,
+      0.0018595483642750512,
+      0.0013307125552811212,
+      8.617922613118307E-4,
+      4.866096495728445E-4,
+      2.341746744133209E-4,
+      9.392245548261041E-5,
+      3.085929726521648E-5,
+      8.069816716039511E-6,
+      1.6286161731579916E-6,
+      2.407125957548926E-7,
+      2.247473718010326E-8,
+      2.2417712787632175E-9,
+      4.948074468155381E-10,
+      9.457284597106925E-11,
+      1.346658006912635E-11,
+      1.2034439329403008E-12
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03306603725857932,
+      0.021627578267062422,
+      0.01391745671384597,
+      0.008954581229275973,
+      0.0056970041040736025,
+      0.003606169189479775,
+      0.0021891663404805303,
+      0.0012255602168561436,
+      6.122965633465627E-4,
+      2.6506908836601524E-4,
+      9.952838094454666E-5,
+      3.337371566963683E-5,
+      1.0842085915202045E-5,
+      3.719358651072239E-6,
+      1.338606474747649E-6,
+      4.5797207620159435E-7,
+      1.3859808587476623E-7,
+      3.523187215463454E-8,
+      6.928831009090373E-9,
+      9.535846432322872E-10
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04420515912157223,
+      0.030844812289988404,
+      0.021080426874323547,
+      0.014282882785599246,
+      0.009490273238023128,
+      0.006232749306048353,
+      0.003936674044260231,
+      0.0023378682873924353,
+      0.0012959713479348503,
+      6.695384734647738E-4,
+      3.278416500308066E-4,
+      1.555279632627666E-4,
+      7.316430753202635E-5,
+      3.435333993542515E-5,
+      1.588344767866932E-5,
+      7.024010415039535E-6,
+      2.890789930694142E-6,
+      1.071909458012964E-6,
+      3.4227543338370214E-7,
+      9.025290675889655E-8
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json b/src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json
new file mode 100644
index 0000000000000000000000000000000000000000..e20986cbde16c9bcf96896afc9ed476169f4aefb
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-LOS_ANGELES_CA.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6555015666634474,
+      0.5056151735276282,
+      0.3800263226503472,
+      0.2801299648528963,
+      0.20008474380479285,
+      0.13933184570985524,
+      0.09305696153528026,
+      0.05918153062674783,
+      0.036000255025713676,
+      0.020883675936776477,
+      0.011518674107028217,
+      0.005988663807699813,
+      0.0028759311892256195,
+      0.0012221333396709073,
+      4.34016201218343E-4,
+      1.1980179927514817E-4,
+      2.350356566934442E-5,
+      2.694879720501566E-6,
+      1.3178139590809268E-7,
+      8.700024562678989E-10
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8130983876196893,
+      0.6582126454081733,
+      0.5197060557328292,
+      0.40262053360856587,
+      0.3038164275716434,
+      0.22544600814493732,
+      0.1625517351226799,
+      0.11270671634160165,
+      0.07484784253745468,
+      0.047350672077645914,
+      0.028553885413723112,
+      0.016374479088263394,
+      0.008892382202291108,
+      0.004526484587810217,
+      0.002103618133768091,
+      8.509703838489375E-4,
+      2.867675418780488E-4,
+      7.557083427090538E-5,
+      1.379049959615142E-5,
+      1.3820127738087622E-6
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8607130319038887,
+      0.6666222155769659,
+      0.4946252058731994,
+      0.35484315542146894,
+      0.24447577434618453,
+      0.16451144286348984,
+      0.10706360423243914,
+      0.066977626854467,
+      0.0403859822798272,
+      0.02343957464968879,
+      0.013117687188000549,
+      0.007040026045055555,
+      0.0035790587810941217,
+      0.0016743571839800187,
+      6.909281560837955E-4,
+      2.3872788397119533E-4,
+      6.568209275490068E-5,
+      1.3026513319599258E-5,
+      1.4999188591163306E-6,
+      6.410399984990232E-8
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.7869167849344857,
+      0.6166068077610417,
+      0.47022336182849944,
+      0.34926437056889564,
+      0.25325959598949793,
+      0.1788943772675917,
+      0.12213309106090883,
+      0.0794661173414853,
+      0.049355745789730995,
+      0.029247424622816952,
+      0.01659863385364813,
+      0.008807628690437623,
+      0.0044243039545326275,
+      0.0019902019120152346,
+      7.728642998466219E-4,
+      2.4048447136876255E-4,
+      5.561370476175062E-5,
+      8.19005456938885E-6,
+      6.619435702349E-7,
+      1.2056597971249248E-8
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.16648116021056003,
+      0.11973543527543234,
+      0.08454737091980316,
+      0.05787860443631045,
+      0.039107622133106125,
+      0.02598447495689761,
+      0.01693387104905695,
+      0.0107323403701819,
+      0.006443782558814678,
+      0.003563293883680034,
+      0.0017579121611182736,
+      7.508699734650853E-4,
+      2.703424085560323E-4,
+      7.931434805502301E-5,
+      1.79857674292479E-5,
+      3.1134151895420147E-6,
+      4.1724364324763726E-7,
+      3.366133345053046E-8,
+      2.2290265358527014E-10,
+      0.0
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6976612298415816,
+      0.5486923074406407,
+      0.42113613538492406,
+      0.31739115984288196,
+      0.23254246368561018,
+      0.1668371820349394,
+      0.11543995352965339,
+      0.07630113797747162,
+      0.04821539957876681,
+      0.02904922326258766,
+      0.016675854707243976,
+      0.00906931503799126,
+      0.004627921192836876,
+      0.002160334693462425,
+      8.813903594312779E-4,
+      2.963921764548152E-4,
+      7.718068736469281E-5,
+      1.4009005100953435E-5,
+      1.4194503061388815E-6,
+      5.401671870131133E-8
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.16846386420386938,
+      0.11831204048018738,
+      0.08102647682564373,
+      0.05407101541889776,
+      0.03513250404504218,
+      0.022465589854624855,
+      0.014024122454876848,
+      0.008469077067089463,
+      0.00480309237360405,
+      0.0024619243714758977,
+      0.0011103422295134391,
+      4.306965174071669E-4,
+      1.3932588790134737E-4,
+      3.783455565223243E-5,
+      8.044017493473292E-6,
+      1.3835341257242913E-6,
+      1.5518414479584724E-7,
+      7.362387695727641E-9,
+      8.557445185989779E-13,
+      0.0
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.6773598642669707,
+      0.5096051999388189,
+      0.3702248062493253,
+      0.2607892516274903,
+      0.1796831508536591,
+      0.11841781206387414,
+      0.0762106557748132,
+      0.047067656338765446,
+      0.028349933142173333,
+      0.016712754227218535,
+      0.009566336595106103,
+      0.00511772587387471,
+      0.002538906618500107,
+      0.0011141793414475073,
+      4.126935059008863E-4,
+      1.2597120901883786E-4,
+      2.8912779602421184E-5,
+      4.77371646760912E-6,
+      5.144968977173029E-7,
+      2.33946031630209E-8
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7582171511266131,
+      0.6075033750130957,
+      0.4752418204579645,
+      0.3651560114934136,
+      0.27332370554472607,
+      0.2010014160776027,
+      0.14328625423347535,
+      0.09797991503640882,
+      0.06411106399662772,
+      0.0399781084489672,
+      0.023768938784636512,
+      0.013424551772498662,
+      0.007161527011674055,
+      0.0035584476603911794,
+      0.0015945804222938446,
+      6.124340020778008E-4,
+      1.9244021911313702E-4,
+      4.608194142749144E-5,
+      7.295300124992493E-6,
+      5.937938423945731E-7
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.7850478121954688,
+      0.6149427090351279,
+      0.46881730133962973,
+      0.348122850747007,
+      0.252355461616518,
+      0.17818461980844943,
+      0.12157924892693428,
+      0.07904744629160573,
+      0.049058111313501684,
+      0.029050931017220935,
+      0.016476374204804276,
+      0.008736305079500252,
+      0.004383853858328634,
+      0.001968161731447079,
+      7.619072674741729E-4,
+      2.3597059544327195E-4,
+      5.422027399416736E-5,
+      7.90914606632308E-6,
+      6.32159419731787E-7,
+      1.1414649767297261E-8
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.28537221597062357,
+      0.19820582569957496,
+      0.1334430461992702,
+      0.0867926139620031,
+      0.054832790903475204,
+      0.033314221535367956,
+      0.020009768139943252,
+      0.011646290464513594,
+      0.0065438389055634235,
+      0.003447436989113106,
+      0.0016556701670533702,
+      7.026357432071838E-4,
+      2.543959588405738E-4,
+      7.575158050790043E-5,
+      1.734740002062045E-5,
+      2.739216779907751E-6,
+      2.1590916679503698E-7,
+      2.693228971919611E-9,
+      0.0,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.9277683048900585,
+      0.753749505443325,
+      0.5931966540062881,
+      0.4554149291065007,
+      0.3391325923890992,
+      0.24811925581484062,
+      0.17664687097764015,
+      0.12126594353565415,
+      0.07988442340814564,
+      0.05017277713447225,
+      0.03010027957568584,
+      0.017258334880808454,
+      0.009440126237321218,
+      0.0048868972985768545,
+      0.002334632772972764,
+      9.820927031969802E-4,
+      3.474973045995895E-4,
+      9.761965152739225E-5,
+      1.9681532684864646E-5,
+      2.354545834986916E-6
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.8131646771557637,
+      0.6244094605714701,
+      0.4598237593662486,
+      0.3254878614220874,
+      0.2232617643687702,
+      0.14689821877565357,
+      0.09433971233733665,
+      0.05812675578130944,
+      0.03474037841563422,
+      0.02009625955702027,
+      0.011250552678425398,
+      0.00604838620873625,
+      0.0030747059989828835,
+      0.001435272926793129,
+      5.91734603818854E-4,
+      2.0850100111484315E-4,
+      5.798671840957535E-5,
+      1.1829827130264613E-5,
+      1.4551592373091144E-6,
+      7.171999526182923E-8
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.18446091411751517,
+      0.12844266874018262,
+      0.08712539206265854,
+      0.05746257696605665,
+      0.03675517464343605,
+      0.023069412624570785,
+      0.01412190453486065,
+      0.008378232452072218,
+      0.004678369324469715,
+      0.0023533054194598514,
+      0.0010429674210118577,
+      3.9862803261532536E-4,
+      1.2584097872029112E-4,
+      3.28097388868038E-5,
+      6.698190833397332E-6,
+      1.0344197485136563E-6,
+      9.327732206686227E-8,
+      2.3120763803070496E-9,
+      0.0,
+      0.0
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.7050458955961977,
+      0.5458509002496845,
+      0.4105816937219695,
+      0.30207639483144927,
+      0.21724803734976808,
+      0.1510541903138235,
+      0.1012488078917304,
+      0.06466445992910948,
+      0.03937835085148268,
+      0.022847958701219643,
+      0.012702650806173154,
+      0.006610864704469359,
+      0.0032029311362011385,
+      0.0013710274376685558,
+      4.926667029101458E-4,
+      1.3783614664793185E-4,
+      2.754279628624284E-5,
+      3.2337804000067757E-6,
+      1.749138513892124E-7,
+      1.1235611259268176E-9
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.6366732997492744,
+      0.4718266845971,
+      0.33639228064755494,
+      0.23120864554310222,
+      0.15428991843287704,
+      0.09871017875768122,
+      0.06170138879955178,
+      0.0371093605407826,
+      0.021784079087632878,
+      0.01242308232423418,
+      0.00683716038267335,
+      0.003576991765303489,
+      0.0017326159347611982,
+      7.491905663833562E-4,
+      2.781590237743464E-4,
+      8.555768302162039E-5,
+      1.963824821833813E-5,
+      2.963267138803629E-6,
+      2.2709559760524888E-7,
+      2.1726449226406575E-9
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.41591306555923535,
+      0.2952158565389781,
+      0.20260990300705048,
+      0.13436480092785613,
+      0.08650427638142505,
+      0.05335716580634719,
+      0.03232423441646581,
+      0.018984559566205775,
+      0.010910589640634728,
+      0.006021181967374712,
+      0.003128037800167616,
+      0.0014859572538182039,
+      6.242797254003681E-4,
+      2.2362983210070435E-4,
+      6.556475728756338E-5,
+      1.4754314779068779E-5,
+      2.1213534307141063E-6,
+      1.5033705453330863E-7,
+      1.3937243461051932E-9,
+      0.0
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.9466906674270203,
+      0.7646177618200823,
+      0.5961787439404052,
+      0.45217085301152343,
+      0.3317350710090117,
+      0.23875128307402005,
+      0.16698099332494237,
+      0.11248515505281206,
+      0.07269395233464407,
+      0.044821931666167304,
+      0.026443259617796963,
+      0.014935310404473236,
+      0.00805478051399395,
+      0.004103514212407189,
+      0.001914689155705081,
+      7.781748566046854E-4,
+      2.626066373737023E-4,
+      6.937636249192273E-5,
+      1.2756265432297438E-5,
+      1.364278623749353E-6
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.9496439770260106,
+      0.7619186485858396,
+      0.5884131395028442,
+      0.4409334333896402,
+      0.3188064326655659,
+      0.22576027494248418,
+      0.15513298306999956,
+      0.10257771929604512,
+      0.06509222042567046,
+      0.039464771953292135,
+      0.022933374324357502,
+      0.012770501572353002,
+      0.006787963858413264,
+      0.0033981022321102187,
+      0.0015469786485316384,
+      6.085353962992044E-4,
+      1.96928551156503E-4,
+      4.929084474678682E-5,
+      8.294077365547332E-6,
+      7.743029103903967E-7
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.1950843910604671,
+      0.13452980111169585,
+      0.0901147933149937,
+      0.058224297190717145,
+      0.03659014678313242,
+      0.022373522043733128,
+      0.013453414325676132,
+      0.007842106594416726,
+      0.004270550444209991,
+      0.0021205526130412262,
+      9.352512645713136E-4,
+      3.510794735873584E-4,
+      1.1140236710721198E-4,
+      2.821352367187551E-5,
+      5.432546055375964E-6,
+      6.937791864452675E-7,
+      4.2636920738185926E-8,
+      7.205378912407647E-11,
+      0.0,
+      0.0
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.15155266097286074,
+      0.10987899786635288,
+      0.0779649681345172,
+      0.05437256965523532,
+      0.03694740596612714,
+      0.024954459272896697,
+      0.016580421241359358,
+      0.01068359142006486,
+      0.006564456095344429,
+      0.003733308923550901,
+      0.0019059642220421963,
+      8.433398252980378E-4,
+      3.128136953290853E-4,
+      9.344835122082741E-5,
+      2.074652001588148E-5,
+      3.0561020636068595E-6,
+      3.2122249665459E-7,
+      2.1446580149003212E-8,
+      5.7747785437406214E-11,
+      0.0
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.9180337818051649,
+      0.7233503675254502,
+      0.5467373373785206,
+      0.3999431874212782,
+      0.2814408367498209,
+      0.19364752212240158,
+      0.12904560160217807,
+      0.0826725138577559,
+      0.050921306267904975,
+      0.03008196563125172,
+      0.01709717103525385,
+      0.009326062281562906,
+      0.004847393284502007,
+      0.002349555544782598,
+      0.0010192192142259508,
+      3.753050933233597E-4,
+      1.1154051635473752E-4,
+      2.480146140845086E-5,
+      3.4351482336637624E-6,
+      2.3293100881154866E-7
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8859206131810364,
+      0.7219206092281537,
+      0.5720369836469041,
+      0.44356536239854594,
+      0.3344681766110523,
+      0.2480014950738167,
+      0.17897725719354213,
+      0.12451086917547532,
+      0.08308550422470502,
+      0.0528328864259952,
+      0.03204816565517472,
+      0.018538569996399926,
+      0.01020622568815513,
+      0.00530947396518999,
+      0.002551738393441913,
+      0.0010828138130497122,
+      3.878984364149321E-4,
+      1.1062666896314793E-4,
+      2.2653498149750425E-5,
+      2.7051631189810914E-6
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json b/src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json
new file mode 100644
index 0000000000000000000000000000000000000000..40bfc17374bc4af202df559056bcc129b9921aa5
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-NEW_MADRID_MO.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1134848278265555,
+      0.09913182283468468,
+      0.08486109572188505,
+      0.07092727046914521,
+      0.057236448894046575,
+      0.04487809503912896,
+      0.03408013585539021,
+      0.025149381981569217,
+      0.018220712489593675,
+      0.013052559086907245,
+      0.009340086797584427,
+      0.006735868051646523,
+      0.004944959356583585,
+      0.00372953397618328,
+      0.0028860248223204522,
+      0.002227637707450645,
+      0.0016230376347762692,
+      0.0010404778834602671,
+      5.46643844358299E-4,
+      2.2369963667561859E-4
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.13621446495131628,
+      0.11982701411071386,
+      0.10362785095989044,
+      0.08768267195514903,
+      0.07167773979178009,
+      0.05680096966073924,
+      0.04339224231034154,
+      0.03198595215220342,
+      0.022948341154975335,
+      0.01613297029753866,
+      0.011242324221471466,
+      0.007856392013920485,
+      0.005582487816364149,
+      0.0040915477718944625,
+      0.003114296210862312,
+      0.00242248222753711,
+      0.0018435531367493718,
+      0.001283485932343544,
+      7.579399966996302E-4,
+      3.583804021503561E-4
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.09332281046660419,
+      0.07091320770977323,
+      0.0519192701549374,
+      0.0369342034887083,
+      0.025413676356990177,
+      0.017332522208216742,
+      0.011758379547918807,
+      0.008030446279744276,
+      0.005629622352641184,
+      0.004112541005869439,
+      0.0031716022306450663,
+      0.0025627441124481416,
+      0.0020935058120873963,
+      0.001631662195801575,
+      0.0011340788803894165,
+      6.590074869796056E-4,
+      3.0761433422289177E-4,
+      1.12321693282798E-4,
+      3.0372827868193554E-5,
+      5.6247612758214264E-6
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.11272352344873258,
+      0.09627546578487826,
+      0.08052628494862434,
+      0.06545946462133588,
+      0.05154781389526944,
+      0.03934694092578511,
+      0.029235670127068347,
+      0.021201534479670117,
+      0.015182640380036187,
+      0.010815082551841342,
+      0.007756639930051291,
+      0.0056043753800527375,
+      0.004178939054831411,
+      0.0032051052237835323,
+      0.0025089666159488952,
+      0.0018996448522669656,
+      0.001288637329392049,
+      7.239131903011393E-4,
+      3.2208914278208586E-4,
+      1.0620548310292433E-4
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.0108081904559991,
+      0.008113610426771556,
+      0.00617997289751241,
+      0.004782050041648119,
+      0.003835868527437465,
+      0.003192348218999202,
+      0.0027569469429383716,
+      0.0024535287496940065,
+      0.002201338605240554,
+      0.0019254189789591639,
+      0.0015816322657137313,
+      0.0011853260540007611,
+      7.930019187859976E-4,
+      4.626247837632049E-4,
+      2.2842555912412228E-4,
+      9.340027979220448E-5,
+      3.077675282754919E-5,
+      7.731698947782792E-6,
+      1.356921495644187E-6,
+      1.3672523750217962E-7
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.12354231850127388,
+      0.10906860326026185,
+      0.09468478264449222,
+      0.0804777404468467,
+      0.0661898813227246,
+      0.05287311579669837,
+      0.04080945651643373,
+      0.030465074515357734,
+      0.022180288951861225,
+      0.015849123661830302,
+      0.011232066647792725,
+      0.007972144473369948,
+      0.005731299185382305,
+      0.0042232899382015805,
+      0.003209842094681919,
+      0.0024814504656560784,
+      0.0018712154729878625,
+      0.0012857020257276218,
+      7.460096706577899E-4,
+      3.4553770179192284E-4
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.011193915099147649,
+      0.00821706880068661,
+      0.006132250918543558,
+      0.004708251118178785,
+      0.0037471763783140924,
+      0.003115035320506513,
+      0.0026906274090445098,
+      0.0023884984070309066,
+      0.0021178411000891376,
+      0.0018013072741162991,
+      0.0014174248034200245,
+      0.0010068479452117552,
+      6.302090851652139E-4,
+      3.4448320045655297E-4,
+      1.5614112628287597E-4,
+      5.887455377759784E-5,
+      1.7483090140990465E-5,
+      3.857688945613654E-6,
+      5.776345174731303E-7,
+      3.6035666140406165E-8
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.07307464689943247,
+      0.05568324870828343,
+      0.041248625093993165,
+      0.029835067165871684,
+      0.02132674306817421,
+      0.014918567149395748,
+      0.010535082948253262,
+      0.007477014501481101,
+      0.005429884709865462,
+      0.0040881847171289195,
+      0.0032321807244970946,
+      0.002667378482716655,
+      0.0022590465645190867,
+      0.0018730014916641196,
+      0.0014504031529564854,
+      0.0010149705603626265,
+      6.10436644585302E-4,
+      3.0391886330731E-4,
+      1.1983425837389162E-4,
+      3.4687855302890844E-5
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.13133723026065539,
+      0.11620825221031121,
+      0.10115931417326753,
+      0.08621795553075386,
+      0.07106389445846746,
+      0.056810500072084685,
+      0.04380143618182542,
+      0.03259371813957397,
+      0.023604040260613683,
+      0.016745723573188504,
+      0.011767457777514284,
+      0.008277971731577585,
+      0.0059015408146119094,
+      0.00432054690724905,
+      0.003275323219202077,
+      0.0025422786642845313,
+      0.0019414276765604187,
+      0.0013623489529054297,
+      8.122596504603401E-4,
+      3.8778355018800545E-4
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.11111081987475407,
+      0.09432156805575032,
+      0.07822887498637784,
+      0.06292534352354984,
+      0.04897257268386338,
+      0.03694446546765525,
+      0.02716458911213128,
+      0.019536425202997008,
+      0.01391380513668094,
+      0.00988799840503249,
+      0.007100303838651011,
+      0.0051582932806505145,
+      0.003880368662171422,
+      0.002998080402446245,
+      0.0023374948399642473,
+      0.0017313359945210478,
+      0.0011307666558268532,
+      6.035152360837111E-4,
+      2.517568883811679E-4,
+      7.65230345759784E-5
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.020676759652886168,
+      0.014645101766923877,
+      0.01036904405244821,
+      0.007414940688058752,
+      0.005453548190441211,
+      0.0041475548196900245,
+      0.0033291453308429485,
+      0.0027929753391150998,
+      0.002421071396403523,
+      0.002094212876117617,
+      0.001730582106066267,
+      0.0013128807236769929,
+      8.882561628809333E-4,
+      5.237257762898687E-4,
+      2.634724343432125E-4,
+      1.115311422312698E-4,
+      3.772606468267514E-5,
+      9.888208966090819E-6,
+      1.8340394268889717E-6,
+      1.8686922920699014E-7
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1355719063991374,
+      0.11487739932363839,
+      0.09473428645643736,
+      0.07576671369790458,
+      0.05806328167550452,
+      0.04307794268258901,
+      0.03089307430195546,
+      0.021542874140835666,
+      0.01480432409687213,
+      0.010125152138475377,
+      0.006999050614545422,
+      0.004968371823083338,
+      0.003676704012080431,
+      0.002843556808665984,
+      0.0022455752644871384,
+      0.001720897386123512,
+      0.0011947488883773184,
+      6.974080652911724E-4,
+      3.2138601229057806E-4,
+      1.1276339020461099E-4
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.07761788873552385,
+      0.05747437836129132,
+      0.041349511939229575,
+      0.029015011905881388,
+      0.020076101746583256,
+      0.01366180647273325,
+      0.009403128978265948,
+      0.006553098371869583,
+      0.004741085605292822,
+      0.0036025100871897556,
+      0.0028891941929087245,
+      0.002404518501214287,
+      0.0019935910890106407,
+      0.001557141406146788,
+      0.0010798612063980181,
+      6.359512656506723E-4,
+      3.03568112154357E-4,
+      1.1645840247844759E-4,
+      3.439830667344259E-5,
+      7.359570523986334E-6
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.012394505571051791,
+      0.008970008263961509,
+      0.006597319734761198,
+      0.004992061452230437,
+      0.003916177587165125,
+      0.003214047740074953,
+      0.002748163831050152,
+      0.0024244380889632488,
+      0.0021446320042260636,
+      0.0018222094178663635,
+      0.0014323824258365425,
+      0.001016323184322804,
+      6.334030826275008E-4,
+      3.4221338720783005E-4,
+      1.5456019456222406E-4,
+      5.7695209566334815E-5,
+      1.7039966137885163E-5,
+      3.762630060202871E-6,
+      5.703436071569525E-7,
+      3.0101045712461855E-8
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.11282092493955616,
+      0.09783809145863566,
+      0.08308835754839936,
+      0.06885149258658,
+      0.055435172149760494,
+      0.043157086572926995,
+      0.03269779359661036,
+      0.024143318475188774,
+      0.017508880684250428,
+      0.012565544952521497,
+      0.009050974636640181,
+      0.006545095379816355,
+      0.004831501700553364,
+      0.0036575262245516645,
+      0.002839358710975378,
+      0.002190317260709853,
+      0.0015870386143412823,
+      0.001007130019366774,
+      5.253338893949635E-4,
+      2.127403029380484E-4
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.054604496755455055,
+      0.03932193515628347,
+      0.027744294913552254,
+      0.01926212307144419,
+      0.013318671469557944,
+      0.009170199419820817,
+      0.006482154187698827,
+      0.004722252024538243,
+      0.00362220550675687,
+      0.002928932008914285,
+      0.0024621078167210374,
+      0.002074205646431156,
+      0.0016643903681060293,
+      0.0012073334945974525,
+      7.581780849408285E-4,
+      4.028779281332418E-4,
+      1.747573316930589E-4,
+      6.144171883161237E-5,
+      1.66046967040839E-5,
+      3.2821207782687475E-6
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.030983089470460266,
+      0.021956677111350947,
+      0.015412401117338683,
+      0.010788388860727862,
+      0.007652901214805016,
+      0.005530234760297339,
+      0.004189921378616015,
+      0.0033252662788531345,
+      0.0027762934087169075,
+      0.002389674357020687,
+      0.0020438587063239303,
+      0.001655730277401741,
+      0.0012162514124699206,
+      7.85122908733881E-4,
+      4.36056134305605E-4,
+      2.0611177816078687E-4,
+      7.95002070369807E-5,
+      2.4580973135856824E-5,
+      5.720155658758555E-6,
+      9.018096543741415E-7
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.12768738019575535,
+      0.10583868869062002,
+      0.08490914076439676,
+      0.06583005176363245,
+      0.04882636303703772,
+      0.035175571694935924,
+      0.024635509851719792,
+      0.016908640358285452,
+      0.01154336516602835,
+      0.007926126331477254,
+      0.005566870569291967,
+      0.004063213437140801,
+      0.0031095363120154447,
+      0.0024643200869778926,
+      0.0019471865209217255,
+      0.0014473141903368744,
+      9.438016771868971E-4,
+      5.04859042543364E-4,
+      2.1002387639883053E-4,
+      6.549765172474032E-5
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1214762462691372,
+      0.09857915665109823,
+      0.0771563142726664,
+      0.058288310332697324,
+      0.042148585653975404,
+      0.029723924715803207,
+      0.02048646305218272,
+      0.013926531274349828,
+      0.009488473432954512,
+      0.0065604322963668926,
+      0.00468640289825777,
+      0.003507454721858546,
+      0.0027493686473037842,
+      0.0021975649336850736,
+      0.001705698427895828,
+      0.001204920198760127,
+      7.234673664048153E-4,
+      3.4898819752245754E-4,
+      1.293767037546666E-4,
+      3.522131674838307E-5
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.013237515505023455,
+      0.009516752968921117,
+      0.006946715142665642,
+      0.00519726745654496,
+      0.004046191137574592,
+      0.0032882847097192988,
+      0.0027964328333503403,
+      0.0024541925461277238,
+      0.0021568295812326595,
+      0.0018276756748940568,
+      0.0014418827314510328,
+      0.0010289094425708085,
+      6.552469438044283E-4,
+      3.5997715571289954E-4,
+      1.675891545365069E-4,
+      6.407803339314447E-5,
+      1.9540865863050922E-5,
+      4.336754124014392E-6,
+      6.722450788708752E-7,
+      2.0891442993068045E-8
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.009853867414550514,
+      0.007504859486189197,
+      0.005780998703954952,
+      0.004556873618847975,
+      0.003681725666351429,
+      0.0030950725889771903,
+      0.0026956004841656046,
+      0.0024098908522500687,
+      0.002165328262116142,
+      0.001887712006464548,
+      0.0015399046096123933,
+      0.0011432660322519478,
+      7.5718262548171E-4,
+      4.373870854803724E-4,
+      2.1411119842643724E-4,
+      8.600755266908047E-5,
+      2.767073543620976E-5,
+      6.831275483859017E-6,
+      1.1649750299050757E-6,
+      1.20227579244594E-7
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1069860791341022,
+      0.08369122877708077,
+      0.06298383047615598,
+      0.04584363296689707,
+      0.03209137415352912,
+      0.022105111733041,
+      0.015029720196805615,
+      0.010194851146706239,
+      0.007021654376956756,
+      0.0049804517551145355,
+      0.0037016457835203262,
+      0.002897886790863569,
+      0.0023435679520030913,
+      0.0018696994140460722,
+      0.0013824301135347454,
+      8.825749107691672E-4,
+      4.6000031869463927E-4,
+      1.8867181859132023E-4,
+      5.8310770495235196E-5,
+      1.2583607871163715E-5
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.14227658797915713,
+      0.12339654535766177,
+      0.10486181110634536,
+      0.08692254025232626,
+      0.06937505165512163,
+      0.05359443620125924,
+      0.0398925627588103,
+      0.02868449999869839,
+      0.02013675670860443,
+      0.013914624000062114,
+      0.00959094025058513,
+      0.006684612927704714,
+      0.004786186550870348,
+      0.003569611605001299,
+      0.002772767397593024,
+      0.002178750468799737,
+      0.0016369197120879786,
+      0.0010916888711503508,
+      6.002048789769093E-4,
+      2.591078486961789E-4
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json b/src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json
new file mode 100644
index 0000000000000000000000000000000000000000..a1e08ca89d335aff8b7ef21da35cb91451bbccc1
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-NEW_YORK_NY.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.029229020414832364,
+      0.022031417539842703,
+      0.016494254196407168,
+      0.012301591568045346,
+      0.009014013623781132,
+      0.0065321013536410386,
+      0.004623302005328818,
+      0.00317730681566671,
+      0.002122733131448271,
+      0.0013743510977183588,
+      8.628606296271144E-4,
+      5.241047993888011E-4,
+      3.065759584403328E-4,
+      1.712198364430767E-4,
+      9.011504075753628E-5,
+      4.381854319276675E-5,
+      1.9364279059548625E-5,
+      7.590227503174238E-6,
+      2.5359210286934237E-6,
+      6.909947833423735E-7
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04508946782931452,
+      0.03407392989117945,
+      0.025308114040829097,
+      0.018589688047246634,
+      0.013364140429630805,
+      0.009503213240419636,
+      0.006609189551436297,
+      0.004467453072325343,
+      0.002934864098242909,
+      0.0018652445618473042,
+      0.0011468304836044821,
+      6.80729695236999E-4,
+      3.8901661203090757E-4,
+      2.1294625826032832E-4,
+      1.1069466449307913E-4,
+      5.3797190649294705E-5,
+      2.413616094316903E-5,
+      9.786165264850266E-6,
+      3.459575759391259E-6,
+      1.0309414383508537E-6
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.032201990465120525,
+      0.021593365429269717,
+      0.013971810341474817,
+      0.008758503745387345,
+      0.005224337690728678,
+      0.003024340508149437,
+      0.0016826588537731681,
+      9.00372250064594E-4,
+      4.6819700157224977E-4,
+      2.3659860854449529E-4,
+      1.164860932142478E-4,
+      5.555509091005697E-5,
+      2.5357811379739985E-5,
+      1.0872539848406812E-5,
+      4.272770309687532E-6,
+      1.4876531413092648E-6,
+      4.456867367168097E-7,
+      1.0992708811922237E-7,
+      2.057527707814982E-8,
+      2.638435720665963E-9
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.030487689644941335,
+      0.0222309952235538,
+      0.016113039601600865,
+      0.011560152205334462,
+      0.008192610422195217,
+      0.005716634632773324,
+      0.003912944456441222,
+      0.0026050146128855046,
+      0.0016899388348488359,
+      0.001064401040271935,
+      6.527519795522027E-4,
+      3.827349101340971E-4,
+      2.1772768435632521E-4,
+      1.166338520492045E-4,
+      5.870621908511293E-5,
+      2.6957174235538327E-5,
+      1.1015891152506865E-5,
+      3.8512154609247984E-6,
+      1.1264554320643095E-6,
+      2.5222065223354705E-7
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.0038405643104144197,
+      0.0025333538407675917,
+      0.0015930600282118787,
+      9.303645508525385E-4,
+      5.123432203673529E-4,
+      2.6248647213514417E-4,
+      1.2496078621912894E-4,
+      5.61386669261133E-5,
+      2.405004242324113E-5,
+      1.0004159192467759E-5,
+      4.092553781098047E-6,
+      1.639240626103427E-6,
+      6.274198498909367E-7,
+      2.2317266455490942E-7,
+      7.081122962890499E-8,
+      1.948999091234038E-8,
+      4.4560674332070585E-9,
+      7.875497856233087E-10,
+      9.769016359351767E-11,
+      6.4213261390412256E-12
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03515143545533647,
+      0.026668256401098753,
+      0.020056597262583135,
+      0.015026782240816407,
+      0.011083590928115237,
+      0.00810568264109366,
+      0.00580270853191581,
+      0.0040368018040473925,
+      0.002727446893306626,
+      0.0017821690398090264,
+      0.0011263971901391589,
+      6.872585659672373E-4,
+      4.035693708233911E-4,
+      2.2674298273101098E-4,
+      1.207063856705654E-4,
+      5.987753513739175E-5,
+      2.729266007840972E-5,
+      1.1180597828442176E-5,
+      3.96846068172626E-6,
+      1.1762546548926665E-6
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.0036854838124666736,
+      0.0023361776484076375,
+      0.001403359975640254,
+      7.935368325045055E-4,
+      4.184372542740927E-4,
+      2.0756164269888008E-4,
+      9.638253492557806E-5,
+      4.288789754819488E-5,
+      1.8546553880461022E-5,
+      7.817897454637278E-6,
+      3.226362443142173E-6,
+      1.2868046875392231E-6,
+      4.797081132422995E-7,
+      1.663407204301366E-7,
+      4.973226242672997E-8,
+      1.2843826994938724E-8,
+      2.6423270052580974E-9,
+      4.082448585308853E-10,
+      3.940557499079254E-11,
+      1.5455472067805562E-12
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.021685687577895577,
+      0.015075982765047636,
+      0.010238206198008462,
+      0.006761177316891128,
+      0.004357157013420584,
+      0.0026672126336743968,
+      0.0015941954671015064,
+      9.087070856812795E-4,
+      4.971105608747798E-4,
+      2.6039976454441457E-4,
+      1.31280544381878E-4,
+      6.259756212346012E-5,
+      2.8887782738673014E-5,
+      1.2638273339737505E-5,
+      5.1483512040022E-6,
+      1.938543450689627E-6,
+      6.338337342107405E-7,
+      1.7763427224626776E-7,
+      4.124606864483921E-8,
+      7.212894340140318E-9
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04070687495921074,
+      0.030966877316212737,
+      0.023243144852263555,
+      0.01731232151804917,
+      0.012658438141176323,
+      0.009165128187490223,
+      0.006492059666719395,
+      0.004468296219415897,
+      0.0029874108537433727,
+      0.0019321299808114317,
+      0.0012093358024731881,
+      7.312829103787253E-4,
+      4.261126241536129E-4,
+      2.3801930750268349E-4,
+      1.2633464507102017E-4,
+      6.272397724023676E-5,
+      2.8749890935777517E-5,
+      1.1910623934800116E-5,
+      4.305548963201032E-6,
+      1.3120431191525804E-6
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.02987895305849752,
+      0.021699350591322907,
+      0.01562744738814085,
+      0.011107734736325522,
+      0.007777076072198725,
+      0.005350630718759938,
+      0.0036081858891389073,
+      0.0023667284311502655,
+      0.0015141080840387676,
+      9.414572717844391E-4,
+      5.705913107231007E-4,
+      3.308137682233082E-4,
+      1.862386872255785E-4,
+      9.877935542680716E-5,
+      4.926462164315479E-5,
+      2.2425903126171063E-5,
+      9.088079559403617E-6,
+      3.152446707703794E-6,
+      9.15831261374112E-7,
+      2.04211801038536E-7
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.006730543566267202,
+      0.004277363265921552,
+      0.002597052466307668,
+      0.0014913092577550377,
+      8.115688453111498E-4,
+      4.1043177478188416E-4,
+      2.0001309695225614E-4,
+      9.285378012220766E-5,
+      4.24220467382663E-5,
+      1.9149835034308954E-5,
+      8.521435684775992E-6,
+      3.668278761282097E-6,
+      1.4880901362411776E-6,
+      5.529378524696748E-7,
+      1.8307628611845107E-7,
+      5.288305160511686E-8,
+      1.2352584629336088E-8,
+      2.2453629748473983E-9,
+      2.7085423268315845E-10,
+      1.1658517332746617E-11
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04830200095482366,
+      0.035049788658463754,
+      0.02474419073640949,
+      0.017095538161876245,
+      0.01141570293124972,
+      0.007483593918369606,
+      0.004771457840877622,
+      0.0029503218607147856,
+      0.0017753672046370514,
+      0.0010354312876096022,
+      5.852266835713108E-4,
+      3.193877889353911E-4,
+      1.6740382129304797E-4,
+      8.354843270104244E-5,
+      3.918786908467043E-5,
+      1.6907463893464406E-5,
+      6.583289902651269E-6,
+      2.2459922086404533E-6,
+      6.412640264871401E-7,
+      1.4629060411420142E-7
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.027512502560478557,
+      0.018387052599615282,
+      0.01191963922137439,
+      0.007450885041847866,
+      0.004495681901634502,
+      0.00256647038652915,
+      0.0014178634734368046,
+      7.433158639542217E-4,
+      3.7687607796663077E-4,
+      1.8519914818219756E-4,
+      8.899833446245393E-5,
+      4.187851030900879E-5,
+      1.9140876959475845E-5,
+      8.328916965810725E-6,
+      3.358246859094193E-6,
+      1.2278406345791873E-6,
+      3.838499104595081E-7,
+      1.0098355189308676E-7,
+      2.090906770193026E-8,
+      3.123040660431198E-9
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.004039150055282326,
+      0.00253426948346113,
+      0.0015113444670004808,
+      8.507777245071382E-4,
+      4.470503663974121E-4,
+      2.2113446745321066E-4,
+      1.0255652663737872E-4,
+      4.5781063323003715E-5,
+      1.9983934493483245E-5,
+      8.489086087688056E-6,
+      3.539319793139117E-6,
+      1.4262213457808956E-6,
+      5.330117557235797E-7,
+      1.8295905087019987E-7,
+      5.479978490164874E-8,
+      1.3998537757303222E-8,
+      2.8608567632198233E-9,
+      4.4125963082064334E-10,
+      4.108397953741717E-11,
+      1.241476639263941E-12
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.029650862294840683,
+      0.022142551233042547,
+      0.016396251143958866,
+      0.012076802321417874,
+      0.008813471678650767,
+      0.006311855423967767,
+      0.0044404713415211634,
+      0.0030422712161027494,
+      0.0020262941438999762,
+      0.0013087562810377676,
+      8.250372501615922E-4,
+      5.003174577348223E-4,
+      2.934189875230382E-4,
+      1.6379780990727802E-4,
+      8.640724045096433E-5,
+      4.217129293791664E-5,
+      1.8727779648667046E-5,
+      7.369570707643494E-6,
+      2.4994770282333657E-6,
+      6.950126572809033E-7
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.0186677611694409,
+      0.012279650448697957,
+      0.00782222015883089,
+      0.004786342248237088,
+      0.002813921982067089,
+      0.0015563956328249978,
+      8.303576781213225E-4,
+      4.1960221628397775E-4,
+      2.056682977027766E-4,
+      9.824338658505375E-5,
+      4.6163878930267385E-5,
+      2.129728061994148E-5,
+      9.503164025987253E-6,
+      4.000656728833816E-6,
+      1.5448967577748785E-6,
+      5.36310819267039E-7,
+      1.5781880055323746E-7,
+      3.871666999550434E-8,
+      7.412141868775942E-9,
+      9.889430258824986E-10
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.010226991998911769,
+      0.006610204398652571,
+      0.004108969304750587,
+      0.002432062941026012,
+      0.0013716407691312423,
+      7.220949236285958E-4,
+      3.6609544971574293E-4,
+      1.7625959013607866E-4,
+      8.308722142809531E-5,
+      3.8576323337725265E-5,
+      1.7718056109165852E-5,
+      7.953941331742562E-6,
+      3.4072798860409736E-6,
+      1.3556989184202847E-6,
+      4.874273370448805E-7,
+      1.554581104826125E-7,
+      4.126067343466818E-8,
+      8.912781676002766E-9,
+      1.4211314434395163E-9,
+      1.3053739559464791E-10
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04449675356057531,
+      0.031655909192460766,
+      0.02185215691676664,
+      0.014712886526100803,
+      0.009531396739868626,
+      0.006047609473931129,
+      0.0037268749533283206,
+      0.002227301709719634,
+      0.0012969419336923832,
+      7.327660197333755E-4,
+      4.0153660954647837E-4,
+      2.1242731692625277E-4,
+      1.0781597424132544E-4,
+      5.198930281510678E-5,
+      2.3474845304515003E-5,
+      9.69612492057777E-6,
+      3.5864320235103834E-6,
+      1.1517569564807647E-6,
+      3.055291938258929E-7,
+      6.338058063016378E-8
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.04245304513496589,
+      0.029671928485605605,
+      0.02007317592440751,
+      0.013207458609744694,
+      0.008329091104578084,
+      0.0051325005687995594,
+      0.0030662649322989407,
+      0.0017754303472655145,
+      0.0010023744181493275,
+      5.496706524304283E-4,
+      2.9253902802282096E-4,
+      1.5026330336500885E-4,
+      7.392190800772776E-5,
+      3.442914719692367E-5,
+      1.4931404378190338E-5,
+      5.873296986233278E-6,
+      2.048586823242553E-6,
+      6.125829040078593E-7,
+      1.4866058037445373E-7,
+      2.7328116455793725E-8
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.0041020936769612755,
+      0.0025465295129593595,
+      0.0015046805630187566,
+      8.357867713768704E-4,
+      4.385487040853459E-4,
+      2.1594578136514535E-4,
+      1.0208458195317815E-4,
+      4.7000900310878364E-5,
+      2.110059865429143E-5,
+      9.367826953142504E-6,
+      4.088166441632511E-6,
+      1.6907063692229322E-6,
+      6.592427439871198E-7,
+      2.3094616331656161E-7,
+      7.156455093791245E-8,
+      1.8669235694062783E-8,
+      3.931185158433512E-9,
+      5.949910693595042E-10,
+      5.215452540698362E-11,
+      8.9111979950762E-13
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.00353080027911796,
+      0.002351720451354432,
+      0.0014834897570438436,
+      8.830797454843222E-4,
+      4.835948297275116E-4,
+      2.486687308037858E-4,
+      1.1864829284961502E-4,
+      5.275799857576942E-5,
+      2.2347653315136746E-5,
+      9.113180771174375E-6,
+      3.6530182789183557E-6,
+      1.4338108566216486E-6,
+      5.37787107330485E-7,
+      1.8809119504936824E-7,
+      5.895244538932789E-8,
+      1.5919837671655997E-8,
+      3.573191693355046E-9,
+      6.308125218824427E-10,
+      7.910559795194343E-11,
+      5.895539970922338E-12
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.03709091105371904,
+      0.025294019919456987,
+      0.016655681094405413,
+      0.010637473231008809,
+      0.006482038762454918,
+      0.0038448683910001728,
+      0.0022015412075337302,
+      0.0012181335409125354,
+      6.569751189384613E-4,
+      3.444912324107089E-4,
+      1.755979966055446E-4,
+      8.645249007636455E-5,
+      4.0702784019765353E-5,
+      1.8059508143344098E-5,
+      7.395889141751177E-6,
+      2.711791082514212E-6,
+      8.669287413571559E-7,
+      2.3239639937976802E-7,
+      4.870324090109478E-8,
+      7.2726962469811696E-9
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.05136950701074797,
+      0.038232044662564496,
+      0.027786760595587066,
+      0.019849550523303932,
+      0.013788309292528682,
+      0.009439312047947481,
+      0.006304031876299897,
+      0.004088039557426787,
+      0.002578266189644885,
+      0.001574884242047186,
+      9.319932590704065E-4,
+      5.331288125428244E-4,
+      2.938102601378268E-4,
+      1.550383088349489E-4,
+      7.754735235068737E-5,
+      3.612502423051195E-5,
+      1.544302617828091E-5,
+      5.91210315819128E-6,
+      1.9486092634356173E-6,
+      5.328322795534525E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-RENO_NV.json b/src/test/resources/e2e/nshm-conus-2018-RENO_NV.json
new file mode 100644
index 0000000000000000000000000000000000000000..3d9f5d32f0d5138feaf0e9652d42a668a3b2def9
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-RENO_NV.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.5484709651044513,
+      0.42634150573086055,
+      0.32223248501104296,
+      0.23730444678743917,
+      0.16817425454472235,
+      0.1159257861784712,
+      0.07671832754049694,
+      0.04822586125861467,
+      0.028694497876284208,
+      0.01607799794675715,
+      0.008493449764712899,
+      0.004161523587952996,
+      0.0018135273520422592,
+      6.642816954064044E-4,
+      1.9222820392779296E-4,
+      4.006683190461109E-5,
+      5.189961427054389E-6,
+      3.515398014962147E-7,
+      8.180196200340103E-9,
+      0.0
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6685883491178775,
+      0.5420191595796071,
+      0.43073718552981316,
+      0.33604893799491375,
+      0.25450709808189137,
+      0.18855296148368073,
+      0.1352443739786887,
+      0.0931871767789666,
+      0.06140630781758366,
+      0.0383100238556121,
+      0.02255159383578808,
+      0.012494527871912603,
+      0.006467370142501192,
+      0.003051143403282391,
+      0.0012568111651209092,
+      4.2839219639801324E-4,
+      1.1440928908629895E-4,
+      2.1439456910306356E-5,
+      2.2845066791987873E-6,
+      1.2715138821373916E-7
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7427977031018922,
+      0.5744701646291839,
+      0.42717441965285546,
+      0.30619767865158987,
+      0.20903529064641127,
+      0.13819793703629824,
+      0.08794654499288275,
+      0.053791067957904275,
+      0.03173296118183728,
+      0.017979512332664954,
+      0.009774252690314308,
+      0.0050307356835082384,
+      0.0023751420212158067,
+      9.825637057199136E-4,
+      3.399308304541865E-4,
+      9.26847250110199E-5,
+      1.8260592567417126E-5,
+      2.321891517505443E-6,
+      1.9559390767228005E-7,
+      8.58164400310693E-9
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.6562221966073524,
+      0.5167192191475569,
+      0.3967674370267338,
+      0.2955859740814891,
+      0.21340187032901856,
+      0.1491936613856105,
+      0.10072407601240355,
+      0.06485863310409602,
+      0.039642197744360466,
+      0.022805924534623132,
+      0.012416576695567052,
+      0.0062445519234059195,
+      0.0028960584352658203,
+      0.0011458714069513163,
+      3.7259205085927647E-4,
+      9.203567215075574E-5,
+      1.5602497752812103E-5,
+      1.4916812636004364E-6,
+      6.357138176392802E-8,
+      1.6330490298035039E-12
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.15938404685403718,
+      0.11320384414420455,
+      0.07802326289991937,
+      0.05150467735657534,
+      0.03309237454258745,
+      0.020466158524096646,
+      0.012081021602011115,
+      0.006765363809486652,
+      0.003528065331949277,
+      0.0016860351101007137,
+      7.24568181144109E-4,
+      2.748755131540405E-4,
+      8.981201603823527E-5,
+      2.4345491470278362E-5,
+      5.019406825978623E-6,
+      5.832530871542725E-7,
+      2.4186203588751503E-8,
+      2.5577453686628844E-10,
+      0.0,
+      0.0
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.5803506302816213,
+      0.4601052121937963,
+      0.3559495204250222,
+      0.26904961912677555,
+      0.19633590933131825,
+      0.13968409266713883,
+      0.09580211196856152,
+      0.06275984346668122,
+      0.03909570654306335,
+      0.022975704772139574,
+      0.012747869921767593,
+      0.006639499865591477,
+      0.0031672820255649304,
+      0.0013210747055941003,
+      4.5626244374462896E-4,
+      1.2183913747385188E-4,
+      2.2865523382201614E-5,
+      2.5748573572618402E-6,
+      1.6705608122641375E-7,
+      2.938283549800887E-9
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.16196643074676673,
+      0.11198090215826136,
+      0.07462347036061312,
+      0.04807408092386109,
+      0.02990757552174925,
+      0.018099210756417884,
+      0.010527852164241444,
+      0.005850400572688218,
+      0.0030252672113427353,
+      0.0013991185556806965,
+      5.609025886514626E-4,
+      1.885421245480666E-4,
+      5.036684059318227E-5,
+      1.0336861006765402E-5,
+      1.5414292790319693E-6,
+      1.7681723406863187E-7,
+      9.230149284430147E-9,
+      0.0,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.5965083029073476,
+      0.45467500460515264,
+      0.33391682805474876,
+      0.23499802855904472,
+      0.15915594094769347,
+      0.10171565371960661,
+      0.06334874079286507,
+      0.03790372893696496,
+      0.02202213846555048,
+      0.012410792959950009,
+      0.006754557983277139,
+      0.0033900759928531623,
+      0.0015231048187053654,
+      5.731570440935642E-4,
+      1.7260229972784145E-4,
+      4.05492979543383E-5,
+      6.61207803447021E-6,
+      7.937811985977791E-7,
+      5.592514951264712E-8,
+      4.9785128572098E-10
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6250121589988324,
+      0.5034683097383802,
+      0.3971660100837494,
+      0.3071270600599326,
+      0.2301173271977102,
+      0.16845172081234153,
+      0.11922509229001843,
+      0.08092455729824911,
+      0.05243522080205115,
+      0.03212183270390599,
+      0.018567559572164632,
+      0.010100796108242334,
+      0.005109115104555775,
+      0.0023260734230417636,
+      9.089735473553841E-4,
+      2.884774924395747E-4,
+      6.98624697289028E-5,
+      1.1347784758768014E-5,
+      1.0847632931315094E-6,
+      5.436682029379926E-8
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.6547374888473556,
+      0.5154226943381538,
+      0.3956578225577323,
+      0.29466088100205357,
+      0.21265222023476063,
+      0.1486032767537395,
+      0.10027244564593973,
+      0.06452577320029962,
+      0.03940815520238865,
+      0.022652368959960246,
+      0.01232299969196451,
+      0.006191315123447127,
+      0.0028666066275044085,
+      0.0011311358459255593,
+      3.6645142364535285E-4,
+      9.012051688793554E-5,
+      1.5208067506146952E-5,
+      1.449376027952755E-6,
+      6.081007073464305E-8,
+      1.6330490298035039E-12
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.2640715047138875,
+      0.1826228038515229,
+      0.12082264622510536,
+      0.07653228178408117,
+      0.04697375730558731,
+      0.02768343250809886,
+      0.01605429352077038,
+      0.008923343255889336,
+      0.004726884904476877,
+      0.002305206378588326,
+      9.994380526174027E-4,
+      3.7117390123831697E-4,
+      1.1354022748814751E-4,
+      2.677384571241463E-5,
+      4.291466467573075E-6,
+      4.807446110566275E-7,
+      2.981252893753843E-8,
+      3.285759703070023E-11,
+      0.0,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7737526421843504,
+      0.6261600545937951,
+      0.49430831566150935,
+      0.3815364819094134,
+      0.2850163303227345,
+      0.20814720204576534,
+      0.1473040215173955,
+      0.10037713490933756,
+      0.06565549372771498,
+      0.04083708459675917,
+      0.024083869210349176,
+      0.013449996233783361,
+      0.007078882723668816,
+      0.0034338665578945897,
+      0.0014726006360996594,
+      5.302872775866811E-4,
+      1.5317221742341033E-4,
+      3.2834733118934725E-5,
+      4.546969501740453E-6,
+      3.354215850341688E-7
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.7140104142660204,
+      0.5487532340738513,
+      0.40539548861370645,
+      0.2867445463881163,
+      0.19475659104277002,
+      0.12557674371895414,
+      0.07860577815507422,
+      0.04714610820877979,
+      0.02745295566416237,
+      0.01545712039883275,
+      0.008390827192847467,
+      0.004322586459151271,
+      0.0020451090783288567,
+      8.510202557490922E-4,
+      2.982104797915927E-4,
+      8.440195356692111E-5,
+      1.690996227269994E-5,
+      2.1594968972727614E-6,
+      1.8566715567507898E-7,
+      7.46609892029724E-9
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.17666963632101226,
+      0.12133069138446922,
+      0.08022188136651195,
+      0.051235393071209306,
+      0.03157668939113907,
+      0.018938705339079875,
+      0.0109242377866287,
+      0.0060234216241085445,
+      0.0030875199731378055,
+      0.0014035317688189891,
+      5.506135842353327E-4,
+      1.8088033582752447E-4,
+      4.6676458459480914E-5,
+      9.168718791001728E-6,
+      1.3632472537746268E-6,
+      1.4246356712261984E-7,
+      5.689676095198022E-9,
+      0.0,
+      0.0,
+      0.0
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.589119878586821,
+      0.4592245891711968,
+      0.34752557268891276,
+      0.25571773297469874,
+      0.18259148902483174,
+      0.12556805851427008,
+      0.08332600502575269,
+      0.052630496695827325,
+      0.03138922993027181,
+      0.01758817001745165,
+      0.009356663419967607,
+      0.004587605120535525,
+      0.002021121947276102,
+      7.481299022964761E-4,
+      2.2119091668227765E-4,
+      4.7916789999390056E-5,
+      6.696291315259916E-6,
+      4.804654448493943E-7,
+      1.1516104222165637E-8,
+      0.0
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.5639616222323354,
+      0.4197313642069559,
+      0.2996668619295505,
+      0.20439532010387382,
+      0.1338851430115078,
+      0.08342268793874501,
+      0.0507392461681369,
+      0.029709913422455096,
+      0.01696565550104996,
+      0.009370013891092153,
+      0.004942865938416689,
+      0.0024201852177880142,
+      0.0010565309623285762,
+      3.945822214271397E-4,
+      1.2050379281836553E-4,
+      2.827275629819673E-5,
+      4.252987172414418E-6,
+      4.3993568072212026E-7,
+      2.5675597124458143E-8,
+      8.185945759284624E-11
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.37749623988871084,
+      0.2690213881320578,
+      0.1833998589302422,
+      0.11929970193634522,
+      0.0747297863748027,
+      0.044710787243442164,
+      0.026270082859352967,
+      0.014893320992740544,
+      0.008196230028190327,
+      0.004277665043674195,
+      0.00205589820338719,
+      8.752858066867912E-4,
+      3.1770061670493183E-4,
+      9.408311615023739E-5,
+      2.098197679653356E-5,
+      3.1434808162138656E-6,
+      3.162472380271222E-7,
+      1.7140081233678718E-8,
+      7.634745577394821E-16,
+      0.0
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7961538389909498,
+      0.6401165081354302,
+      0.5003882057780854,
+      0.3811390870368981,
+      0.2799092897945471,
+      0.20049715228188653,
+      0.13894290436621784,
+      0.09264281236861077,
+      0.0593039642509012,
+      0.036130374258629916,
+      0.020913670438523203,
+      0.011489842103847299,
+      0.0059430704826647866,
+      0.002811294269019971,
+      0.0011611109797750273,
+      3.9734019439642256E-4,
+      1.0748304031042877E-4,
+      2.108571704484795E-5,
+      2.6623655356422743E-6,
+      1.7729655852351794E-7
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8051753704615483,
+      0.642867292529615,
+      0.4973957428842988,
+      0.3738153285205409,
+      0.2699641750191863,
+      0.1897591740141103,
+      0.1288368228147903,
+      0.08409817384457595,
+      0.052719769963219254,
+      0.031492169306515876,
+      0.017911492539334734,
+      0.009680425409161824,
+      0.004909876627854312,
+      0.0022580565114179276,
+      8.973172845918253E-4,
+      2.923584965186468E-4,
+      7.410266566849717E-5,
+      1.3222333471579326E-5,
+      1.4572982508022397E-6,
+      8.915384651070523E-8
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.18445270519564244,
+      0.12543146093230978,
+      0.08196374295065205,
+      0.051395949698150985,
+      0.03128511210788132,
+      0.018415550404545636,
+      0.010541533559122056,
+      0.0057746322779657164,
+      0.0029133611100271577,
+      0.0013181986306399708,
+      5.181037839504154E-4,
+      1.6801401537104148E-4,
+      4.4133955864045494E-5,
+      8.39785189999223E-6,
+      1.147411484554418E-6,
+      1.0290179399316243E-7,
+      2.8617799449288303E-9,
+      0.0,
+      0.0,
+      0.0
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.14529892871455688,
+      0.10399868481651385,
+      0.07210790487674046,
+      0.04863075259176209,
+      0.031402278398197106,
+      0.01965860520416791,
+      0.011722127539940118,
+      0.006572772195806168,
+      0.003453954860998045,
+      0.0016881894466268378,
+      7.701009424225697E-4,
+      3.2816184182666436E-4,
+      1.2949914504415118E-4,
+      4.6257563824511955E-5,
+      1.4291347354710104E-5,
+      3.3267256881312082E-6,
+      4.124760555529519E-7,
+      1.8814234117170077E-9,
+      0.0,
+      0.0
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.785970099957112,
+      0.6171679810865592,
+      0.46740782776745365,
+      0.3422190271094566,
+      0.23943759320980393,
+      0.16251273283506876,
+      0.10630295962573366,
+      0.06683056177859258,
+      0.040440862966107056,
+      0.02342011278592998,
+      0.0129819176556975,
+      0.006841167948083581,
+      0.003348680621544215,
+      0.0014578877282670133,
+      5.375897747222688E-4,
+      1.588578792958377E-4,
+      3.518934163119443E-5,
+      5.151492188128392E-6,
+      4.710463700964477E-7,
+      2.3691931750097672E-8
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7317123689623674,
+      0.5946666104685694,
+      0.47293114559979477,
+      0.36889113071038065,
+      0.27929805611154157,
+      0.20699773626883747,
+      0.14872136769212127,
+      0.10283529465156153,
+      0.06816636318261288,
+      0.04289522373026921,
+      0.02553151518778698,
+      0.014343740463961715,
+      0.0075733614683961,
+      0.003685860801539449,
+      0.0015912091962243106,
+      5.79425990020153E-4,
+      1.6984979216320303E-4,
+      3.696253359097814E-5,
+      5.097500734709375E-6,
+      3.6370620870519366E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json b/src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json
new file mode 100644
index 0000000000000000000000000000000000000000..f1faa3cc828d2f79b33ef08ba5ae4a087dd6b384
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-SALT_LAKE_CITY_UT.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.11290472351290834,
+      0.08482604998328358,
+      0.06198730458323689,
+      0.04432895238812979,
+      0.030722817757724476,
+      0.020976762714174396,
+      0.014042075170487127,
+      0.009277632028751471,
+      0.006171699690632983,
+      0.00418780099763037,
+      0.0028983183932961543,
+      0.0019849754716164516,
+      0.001267075637690718,
+      6.99290074966401E-4,
+      3.111552450699009E-4,
+      1.0479358392178282E-4,
+      2.5232904767932092E-5,
+      3.844732508847212E-6,
+      2.95482531349518E-7,
+      2.8285762787333333E-8
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.14891650251439914,
+      0.1165698431543995,
+      0.08877633089481413,
+      0.06612729239203499,
+      0.047764771890219375,
+      0.033945340075890215,
+      0.023608682836928886,
+      0.016076462032547548,
+      0.010816850119410202,
+      0.00726116291384337,
+      0.004939856951688628,
+      0.0034218094800958286,
+      0.002375975392237743,
+      0.0015854730545538781,
+      9.524819491578974E-4,
+      4.788161418244004E-4,
+      1.906089599530629E-4,
+      5.706083591108181E-5,
+      1.153190077175306E-5,
+      1.1800016056549461E-6
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.14152353302870888,
+      0.10540930125524231,
+      0.07599865905296013,
+      0.0534929182857648,
+      0.03645494414807771,
+      0.024505281085740484,
+      0.016176057501622976,
+      0.010544237079793897,
+      0.006913172462296638,
+      0.004628138819524176,
+      0.003186191907575355,
+      0.002204235992624195,
+      0.0014554286990701086,
+      8.580200677916632E-4,
+      4.2468748674269366E-4,
+      1.6783355286218116E-4,
+      5.0909241696795875E-5,
+      1.0892399035995148E-5,
+      1.2207988774824946E-6,
+      4.9691016836012847E-8
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.13130542918084218,
+      0.09920708263794797,
+      0.0730410539234071,
+      0.0523706617411343,
+      0.03669935076630554,
+      0.025227845034026565,
+      0.01705885948958618,
+      0.011333385075210218,
+      0.007515641411657664,
+      0.005054421134346741,
+      0.0034926417628015037,
+      0.0024166700795131887,
+      0.0016191511381332645,
+      9.60041502066064E-4,
+      4.701021752459026E-4,
+      1.7662597415549715E-4,
+      4.824164735650992E-5,
+      8.57457482406851E-6,
+      7.695406383983346E-7,
+      2.3923173727462614E-8
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.03297988800913183,
+      0.02487155278790097,
+      0.018237236277994034,
+      0.012871297018326927,
+      0.008927305459693159,
+      0.006093604249681078,
+      0.004090371844266971,
+      0.0026634753408331644,
+      0.0016180141763978372,
+      8.783035691169979E-4,
+      4.0882517462079566E-4,
+      1.5757870708040713E-4,
+      4.83755565297435E-5,
+      1.0985516372953573E-5,
+      1.6042302598899142E-6,
+      1.3612845733228153E-7,
+      3.335733694174926E-9,
+      3.10246665893534E-11,
+      3.9583783444731E-12,
+      3.2011136066368834E-13
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.12478708689477366,
+      0.09563297394459479,
+      0.07136451302800746,
+      0.05212713272564934,
+      0.03691309985876692,
+      0.025725108934976017,
+      0.017545176074138635,
+      0.01174405798934561,
+      0.007830769895655858,
+      0.005273217717252964,
+      0.003624257888163116,
+      0.002512889254994475,
+      0.0016903273856943184,
+      0.0010350087173543064,
+      5.374488468387425E-4,
+      2.2164409352361727E-4,
+      6.910109222445237E-5,
+      1.5087236292580237E-5,
+      1.973173554230145E-6,
+      1.355538957446437E-7
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.03338767245908018,
+      0.024651370360242723,
+      0.017644467917228443,
+      0.01226982556447926,
+      0.008337171328643913,
+      0.005635233382380598,
+      0.0037897469352202186,
+      0.0025161184760282805,
+      0.0015874850273620417,
+      9.014964484782114E-4,
+      4.404332924718773E-4,
+      1.7808639963686447E-4,
+      5.682589284999951E-5,
+      1.392667371386848E-5,
+      2.112332198593091E-6,
+      1.7866448028632124E-7,
+      2.9165389363271214E-9,
+      1.3617788308680626E-11,
+      1.4861536901039684E-12,
+      7.43042590538161E-14
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.10859955033228544,
+      0.08115966491212172,
+      0.05943858440111824,
+      0.04259004738711252,
+      0.029949590305096578,
+      0.02022905904983542,
+      0.01346719245759846,
+      0.00879529135175617,
+      0.005811833206321103,
+      0.003971353950419028,
+      0.002799956017557912,
+      0.001932910336320483,
+      0.0012305155585935572,
+      6.611143390059961E-4,
+      2.779635359082197E-4,
+      8.780759911865637E-5,
+      1.8618865079260464E-5,
+      2.183960375461381E-6,
+      1.1451773282811418E-7,
+      2.085040268806834E-10
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1379657582304851,
+      0.10738202598724675,
+      0.08139783183654052,
+      0.06038953204839809,
+      0.04344900506899976,
+      0.03075174630215055,
+      0.021290649305424257,
+      0.014433093118562921,
+      0.009685288151396906,
+      0.006507451249771829,
+      0.0044434070765598434,
+      0.003083655940824873,
+      0.0021256408952166307,
+      0.0013838959237783962,
+      7.937335300505068E-4,
+      3.7345961541783304E-4,
+      1.3691548765668198E-4,
+      3.7140529951418917E-5,
+      6.440920703707675E-6,
+      5.526968420509645E-7
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.13047111279084145,
+      0.09849744021434431,
+      0.07246089256506401,
+      0.05191956664718638,
+      0.03636711256986868,
+      0.024995377451826506,
+      0.016903022882739732,
+      0.011233225426825736,
+      0.007453740328047975,
+      0.005017565965723191,
+      0.0034707218275950615,
+      0.0024030148122227437,
+      0.0016093744733757958,
+      9.524273159710858E-4,
+      4.6471771571778497E-4,
+      1.7370654153273435E-4,
+      4.713127906414366E-5,
+      8.308800503166572E-6,
+      7.378638142760129E-7,
+      2.1801027730086493E-8
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.049023102379780185,
+      0.03533554686682801,
+      0.024702231232974586,
+      0.016709089900700927,
+      0.01107517993449211,
+      0.0072287445144646675,
+      0.004828597717547538,
+      0.0032726370841274824,
+      0.0022207887508924103,
+      0.0014339505309423062,
+      8.342863915630456E-4,
+      4.1609674307751914E-4,
+      1.7106278557419856E-4,
+      5.570644710628459E-5,
+      1.3407700164570706E-5,
+      2.033348451430461E-6,
+      1.3028671987054298E-7,
+      4.735371876431582E-10,
+      6.901694883941034E-12,
+      3.570441022726219E-13
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.1674095479390562,
+      0.1301828663924586,
+      0.0980236850845097,
+      0.0720106580098315,
+      0.051298005144402886,
+      0.03606769570914023,
+      0.0249181303359597,
+      0.016915118368841308,
+      0.011364987994553129,
+      0.007620725739371359,
+      0.005186867906632733,
+      0.00361172825531893,
+      0.0025397919401390044,
+      0.0017318860166166067,
+      0.0010734922720126079,
+      5.634368545917139E-4,
+      2.3810617820970697E-4,
+      7.770788291687493E-5,
+      1.817714548899726E-5,
+      2.5644461664892534E-6
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.13240092375107573,
+      0.09888915244992791,
+      0.07179444739468081,
+      0.05068527431443673,
+      0.0349766488480483,
+      0.023348525170934536,
+      0.015402143694432992,
+      0.009987088001855656,
+      0.006534473367217704,
+      0.004373797798407618,
+      0.0030065727919217407,
+      0.002069220046226864,
+      0.0013554564498975193,
+      7.957148542101317E-4,
+      3.9658036110782057E-4,
+      1.62322819516467E-4,
+      5.107812441736089E-5,
+      1.1724129526884705E-5,
+      1.5756789551443569E-6,
+      8.287805154653518E-8
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.03576030493200083,
+      0.026202168766476148,
+      0.018608596342105536,
+      0.012821895843204392,
+      0.008613235781113959,
+      0.005759478899210132,
+      0.0038549541603860845,
+      0.0025752455066301934,
+      0.001652370099495075,
+      9.5742789633944E-4,
+      4.782891840165266E-4,
+      1.980431106503677E-4,
+      6.42663180930338E-5,
+      1.574423334643016E-5,
+      2.395402504706443E-6,
+      1.9370466334661845E-7,
+      2.5274483239655485E-9,
+      1.3583186060690344E-11,
+      1.4285232786228953E-12,
+      5.907268566547748E-14
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.11960143671458692,
+      0.08994678263729793,
+      0.06567071666493385,
+      0.04682933258008001,
+      0.03266621945243448,
+      0.022215933473560417,
+      0.014874464432810527,
+      0.009822641394994157,
+      0.006503494685473495,
+      0.0043881276226947425,
+      0.0030419487954375744,
+      0.002088234964816742,
+      0.0013479274387119234,
+      7.513524817154191E-4,
+      3.3754195289163036E-4,
+      1.1448970904015772E-4,
+      2.7748062739107928E-5,
+      4.269518313561934E-6,
+      3.275851934317135E-7,
+      2.8380631280739243E-8
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.10141319123436285,
+      0.0744799719118942,
+      0.053302934392369446,
+      0.03710439722779914,
+      0.025233305504876683,
+      0.016611217264992647,
+      0.010874561205920681,
+      0.007089430131855757,
+      0.004735704192107324,
+      0.0032497241581103935,
+      0.00224633867348421,
+      0.0014926887341513958,
+      8.99402994300053E-4,
+      4.6495545871799336E-4,
+      1.9760638685189505E-4,
+      6.695871830384847E-5,
+      1.646229504584215E-5,
+      2.5310928452340686E-6,
+      1.5507654211137423E-7,
+      1.0398880318829333E-10
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.06748618059325431,
+      0.048969498174396456,
+      0.03459316809248189,
+      0.023688152870014776,
+      0.015827020121961646,
+      0.010291170526347024,
+      0.006757228489614272,
+      0.004499447563707923,
+      0.0030758254172137066,
+      0.0020950574930986474,
+      0.0013539309715865939,
+      7.845146305736257E-4,
+      3.87702571554377E-4,
+      1.5725735418832757E-4,
+      5.025824444146704E-5,
+      1.1916479718130206E-5,
+      1.6483615981943136E-6,
+      9.847704437760071E-8,
+      1.4633128404024892E-10,
+      3.159101166380461E-12
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.16662740391385814,
+      0.1285019807227121,
+      0.09585837418746834,
+      0.06974653277878162,
+      0.04921386715200056,
+      0.034304250571029024,
+      0.023511075277103017,
+      0.015841449679333493,
+      0.01057653399144754,
+      0.007064379772860579,
+      0.004804747845306701,
+      0.003347578800110431,
+      0.002345112473969661,
+      0.0015736239621749481,
+      9.427277375272904E-4,
+      4.6965743464877493E-4,
+      1.8566442358644718E-4,
+      5.5962371036384136E-5,
+      1.1714274262116314E-5,
+      1.3696979690319257E-6
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.16475450831524519,
+      0.12608932781106702,
+      0.09325701689554712,
+      0.06724715011048625,
+      0.047002638658945745,
+      0.032452151925708814,
+      0.022026447844136342,
+      0.014702583516066953,
+      0.009744474026204993,
+      0.006485466923759776,
+      0.004411186129437331,
+      0.003073038698810309,
+      0.002137348018037252,
+      0.0014047303433987457,
+      8.120313817734338E-4,
+      3.861840968370937E-4,
+      1.4481761169306506E-4,
+      4.102886199054623E-5,
+      7.857888414794718E-6,
+      7.193827386102664E-7
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.0366385880584287,
+      0.026505800276229518,
+      0.01856624924849421,
+      0.01255782116072572,
+      0.008342293462416961,
+      0.005521407850008796,
+      0.00371948469116279,
+      0.0025196166077128142,
+      0.0016370228449394766,
+      9.707402813567734E-4,
+      5.001070743272942E-4,
+      2.1212988174228856E-4,
+      7.287621092731275E-5,
+      1.874312101554649E-5,
+      3.1931913492919943E-6,
+      2.70853991084907E-7,
+      6.850768702204151E-9,
+      1.66912848253385E-11,
+      1.641928505276288E-12,
+      4.1668539477750565E-14
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.0306457542414819,
+      0.02322337163703784,
+      0.01705908329845296,
+      0.012214961561651676,
+      0.008480157447572278,
+      0.005826165821528901,
+      0.003918366839129725,
+      0.002524615846673209,
+      0.0015110002365775507,
+      8.049225207104803E-4,
+      3.6893949721213804E-4,
+      1.4119722343865093E-4,
+      4.369527962380822E-5,
+      1.030309948628713E-5,
+      1.5871075389395406E-6,
+      1.1483912065013983E-7,
+      1.630810396212974E-9,
+      2.832893779557245E-11,
+      3.473817622685889E-12,
+      2.966762890444011E-13
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.15418300590895712,
+      0.11617063182694719,
+      0.08462891986254063,
+      0.060143487638303204,
+      0.04140768711225412,
+      0.02814423576591034,
+      0.0187918728765539,
+      0.012358543317248739,
+      0.008120546816416364,
+      0.005409152454709267,
+      0.0037045306270067193,
+      0.0025824026439098995,
+      0.0017589693448949438,
+      0.001097230632663273,
+      5.84959900729413E-4,
+      2.5162680100823535E-4,
+      8.403210914870828E-5,
+      2.05523387615256E-5,
+      3.0766136581080514E-6,
+      1.734105607713779E-7
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.16390703612480584,
+      0.1284662962890699,
+      0.09767288317111958,
+      0.07249261680274556,
+      0.052138987362276526,
+      0.03692419452462008,
+      0.025626229259046687,
+      0.017434564522863877,
+      0.011720499639040864,
+      0.00785296585720252,
+      0.0053320885575884654,
+      0.003698285388024423,
+      0.002590859429725693,
+      0.0017657621456978433,
+      0.0011005187529498695,
+      5.840943325373243E-4,
+      2.5010030820976745E-4,
+      8.242879816883924E-5,
+      1.9363558953852625E-5,
+      2.6777962133100654E-6
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json b/src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json
new file mode 100644
index 0000000000000000000000000000000000000000..cd6d8d963c22f58b593c43f35be77db2b7788598
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-SAN_FRANCISCO_CA.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.5874664267513549,
+      0.44910761708368097,
+      0.334987472520144,
+      0.24546360579624393,
+      0.1754117806165705,
+      0.1241948607158113,
+      0.08625670051912523,
+      0.058026309416594396,
+      0.03737433447952097,
+      0.022659903474864813,
+      0.012729241490684143,
+      0.006433707952492048,
+      0.0027984934329231183,
+      9.898881251067756E-4,
+      2.6612006949023004E-4,
+      4.848244735131179E-5,
+      4.347529721535207E-6,
+      4.728229686375502E-8,
+      2.739183873993579E-10,
+      1.496549238718014E-16
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7343933765390598,
+      0.5893442076818523,
+      0.4618300011747358,
+      0.355189421437632,
+      0.26607309688838154,
+      0.19678326149415087,
+      0.14305350710456677,
+      0.10188969360820291,
+      0.07076746076426844,
+      0.047246956097674916,
+      0.029953206593869172,
+      0.017750613489895466,
+      0.009624553004483831,
+      0.004627328271388666,
+      0.0018930669983491487,
+      6.249863917594182E-4,
+      1.5737332242052923E-4,
+      2.673590115966923E-5,
+      2.1192357513885537E-6,
+      2.6968566729609328E-8
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.7918767897889696,
+      0.6050704168083226,
+      0.44393439716624916,
+      0.3163299464550259,
+      0.21803859031851025,
+      0.1484525479391085,
+      0.09932382194138613,
+      0.06500588485393886,
+      0.04143201741375044,
+      0.02536717276883121,
+      0.0147544327472878,
+      0.00799555766758954,
+      0.003917409893942125,
+      0.0016683856029754526,
+      5.897016847281054E-4,
+      1.6291544590479868E-4,
+      3.225000932791446E-5,
+      3.52741728631186E-6,
+      1.1689831884701797E-7,
+      3.080103817640399E-10
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.7112106385860639,
+      0.5513831306660946,
+      0.41679499236354156,
+      0.3073371060796831,
+      0.22186281624942722,
+      0.15751843455278422,
+      0.11022072102257095,
+      0.0752126766540605,
+      0.049559719550134676,
+      0.030988140759669276,
+      0.018214824284155023,
+      0.0096891054474043,
+      0.004609266824655893,
+      0.0018146396851241072,
+      5.659451704903326E-4,
+      1.2751349994633024E-4,
+      1.757289393913999E-5,
+      8.938863247530345E-7,
+      2.8958026660652817E-9,
+      3.449954037560717E-13
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.15626956725689511,
+      0.11406256056206573,
+      0.08273899214964026,
+      0.0590294027489879,
+      0.04184682115235774,
+      0.02912805647870452,
+      0.01980955970329024,
+      0.013177574307620028,
+      0.008496022366552348,
+      0.005229032799125042,
+      0.0029913257215224863,
+      0.0015450800767601055,
+      7.020846740487081E-4,
+      2.7392784982371995E-4,
+      8.8680332366542E-5,
+      2.3018941459612078E-5,
+      4.669090343065782E-6,
+      6.865525224257728E-7,
+      4.841307268333168E-8,
+      0.0
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6262431425258409,
+      0.488352593023346,
+      0.37199085899518425,
+      0.27840003045506956,
+      0.2031716479444561,
+      0.14676873901395632,
+      0.10423258847228858,
+      0.072170893191904,
+      0.04826127669721645,
+      0.030656186981057154,
+      0.018254004658186086,
+      0.009979555668355277,
+      0.004851300490477157,
+      0.0020057641304098077,
+      6.684089674378488E-4,
+      1.6696916960050182E-4,
+      2.77687592010681E-5,
+      2.1501699986955555E-6,
+      2.021137546129714E-8,
+      1.0242961246522084E-10
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.1576050989763439,
+      0.1124878500292107,
+      0.07947555735233697,
+      0.05560949901527652,
+      0.03824288440257084,
+      0.02585586600546616,
+      0.017051381378881385,
+      0.011010717462240343,
+      0.006875687986698826,
+      0.00403213020674032,
+      0.002153514691370932,
+      0.0010133002647834714,
+      4.039363811191867E-4,
+      1.357336294914964E-4,
+      3.507050379854809E-5,
+      6.763105267805672E-6,
+      8.407755639112459E-7,
+      4.9940708513107535E-8,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.6166105039611482,
+      0.4596794426047395,
+      0.33237959503032843,
+      0.23431338505700167,
+      0.16292392609191209,
+      0.11016069497767658,
+      0.07426990954205609,
+      0.04876660004696018,
+      0.031085857197624668,
+      0.019128260878327856,
+      0.011361057624491971,
+      0.006312384063902238,
+      0.0032092505634663056,
+      0.0013918720416739158,
+      4.833727019556064E-4,
+      1.2918452340619045E-4,
+      2.2943165554141434E-5,
+      2.185194489653112E-6,
+      6.696049685508079E-8,
+      3.247308100610492E-12
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.6824803988175645,
+      0.5423197997037432,
+      0.42114693130643277,
+      0.3212487643780465,
+      0.2388678590691923,
+      0.1755844084895045,
+      0.12693907132692936,
+      0.08982150387092966,
+      0.061797876926251376,
+      0.040710981432563804,
+      0.025362529767735495,
+      0.014693429355348566,
+      0.007727527701027788,
+      0.0035624802889587686,
+      0.001377102219545584,
+      4.219450257609995E-4,
+      9.597471107050006E-5,
+      1.382125899033688E-5,
+      8.182196044412212E-7,
+      7.154419313685222E-9
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.7094480930917539,
+      0.5498461630899619,
+      0.415520296020578,
+      0.3063185497949039,
+      0.22107295530950485,
+      0.15691978496000833,
+      0.10977191544223883,
+      0.07487607046648326,
+      0.04930757590646044,
+      0.030805159354617164,
+      0.01808897391797213,
+      0.009608960537392078,
+      0.00456220630575498,
+      0.0017909623852741632,
+      5.563822034892249E-4,
+      1.24697965748507E-4,
+      1.7017065935090595E-5,
+      8.486139108014413E-7,
+      2.7146496800067855E-9,
+      3.392483735943068E-13
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.2617428567949271,
+      0.18307491922429892,
+      0.12540890496745655,
+      0.08438898531578304,
+      0.05614876907130874,
+      0.03634071308588532,
+      0.023160833607317424,
+      0.014182818140794307,
+      0.008323278197168335,
+      0.004553606636660989,
+      0.002248821682374588,
+      9.617682600280767E-4,
+      3.410950566639449E-4,
+      9.511229144188657E-5,
+      1.8403715779671235E-5,
+      1.8469108315944092E-6,
+      3.7330794634755683E-8,
+      2.346008307830644E-12,
+      0.0,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8463438149470889,
+      0.6798295177290603,
+      0.5295787623732823,
+      0.40300084439038414,
+      0.29790373400558845,
+      0.21723251919255937,
+      0.1556470029291479,
+      0.10941059438055957,
+      0.07527935016265801,
+      0.05003104449092174,
+      0.03173361029445662,
+      0.018921844393866877,
+      0.01039879054053632,
+      0.005116393421625043,
+      0.0021684513788727345,
+      7.53285875726632E-4,
+      2.0411601106964467E-4,
+      3.9415676691233675E-5,
+      4.097186096977443E-6,
+      1.119973192769839E-7
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.7506790637132295,
+      0.5694311993678698,
+      0.41555312317750404,
+      0.29297967718627227,
+      0.20171354319530793,
+      0.13483788437759664,
+      0.08933619834353426,
+      0.05769880094827368,
+      0.036409667538268464,
+      0.022148924997112896,
+      0.012854994272857212,
+      0.0069887036166473996,
+      0.003454303565674522,
+      0.0014937200113821338,
+      5.401656764434319E-4,
+      1.5642692013820636E-4,
+      3.188981412070627E-5,
+      3.5496855023952804E-6,
+      1.0655943727827023E-7,
+      2.2624055223541888E-10
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.17181333662493845,
+      0.12136426359968452,
+      0.08477729568755976,
+      0.05863777186897628,
+      0.0398379608301589,
+      0.026584849699593897,
+      0.01726097395855934,
+      0.010934649640394038,
+      0.006665455903563833,
+      0.003776464864307184,
+      0.0019331747185304684,
+      8.644691786684666E-4,
+      3.211723157753879E-4,
+      9.7414400293834E-5,
+      2.1970193923022668E-5,
+      3.332604383034219E-6,
+      2.724783733972445E-7,
+      4.100820137840664E-9,
+      0.0,
+      0.0
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.6339469915755283,
+      0.4860531787201517,
+      0.3626487974055299,
+      0.2650895337426733,
+      0.19036550307717398,
+      0.1340677259150786,
+      0.09308757711020249,
+      0.06279486246486868,
+      0.04055171466184538,
+      0.02466478791325095,
+      0.014032449666672202,
+      0.0071594111905005,
+      0.003176854323677054,
+      0.001144649341725815,
+      3.158504940655961E-4,
+      5.985292647305548E-5,
+      5.8930071175594285E-6,
+      1.1439124004066776E-7,
+      3.6549521475131364E-10,
+      7.520003158489222E-16
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.5831141939184611,
+      0.4284395789131387,
+      0.3043543340463256,
+      0.20994093367925337,
+      0.14214018179947635,
+      0.09376769471795117,
+      0.061396879207838415,
+      0.039078516894684764,
+      0.024205136259459317,
+      0.014387749217808062,
+      0.008094783993421485,
+      0.004200597997309567,
+      0.001939476665595367,
+      7.633562210140222E-4,
+      2.439633419903811E-4,
+      5.9659786310055525E-5,
+      8.782866272053068E-6,
+      4.935213471497793E-7,
+      7.861567577088132E-10,
+      4.071044667800691E-12
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.3798264980654822,
+      0.2696315769563762,
+      0.18636981688303925,
+      0.1258950765629685,
+      0.08390003686599168,
+      0.05452818534414449,
+      0.035044254263427894,
+      0.02175318610368286,
+      0.01305763067557833,
+      0.007435904632192434,
+      0.003918681003931662,
+      0.0018428462753669582,
+      7.405821833608987E-4,
+      2.4278929095495447E-4,
+      6.060131465878878E-5,
+      9.712050578769322E-6,
+      5.92022881165477E-7,
+      4.0232253598505344E-10,
+      7.209834270890855E-13,
+      0.0
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8667523753604536,
+      0.6914447940341649,
+      0.5330702128792767,
+      0.40048105880515905,
+      0.29176243910251176,
+      0.20962688792076822,
+      0.14797470330581367,
+      0.10244425427850296,
+      0.06938252472478453,
+      0.04533975749376277,
+      0.028237185068916808,
+      0.016500834984571888,
+      0.008857987137334369,
+      0.004235193013050365,
+      0.001733216633630624,
+      5.773978947401055E-4,
+      1.4892499168604064E-4,
+      2.679281156645027E-5,
+      2.4634777543180746E-6,
+      4.8287966706199225E-8
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8720371105393914,
+      0.6905043685969291,
+      0.526883075949392,
+      0.3909879598227468,
+      0.2809491863399679,
+      0.1990485953819599,
+      0.13851718957922976,
+      0.09447907527404112,
+      0.06297811561958669,
+      0.0404501010602574,
+      0.02472561460741778,
+      0.014154532178859244,
+      0.007419007100936663,
+      0.003446164826546118,
+      0.0013617340988356633,
+      4.346861308941955E-4,
+      1.0622245154436943E-4,
+      1.755978781714779E-5,
+      1.37994979587149E-6,
+      9.820891720226562E-9
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.18105042283897144,
+      0.1266192618403775,
+      0.08732075710379067,
+      0.05922936436992873,
+      0.039601343080274576,
+      0.0258182658764627,
+      0.016452779723333102,
+      0.010160525366508721,
+      0.0059255253444252184,
+      0.0031926068689163865,
+      0.0015362687647735914,
+      6.265555006796032E-4,
+      2.1255058030478092E-4,
+      5.547291440600821E-5,
+      9.897866256758686E-6,
+      9.445062791304706E-7,
+      3.045663466445053E-8,
+      3.7809462552642207E-16,
+      0.0,
+      0.0
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.1431142258743297,
+      0.10551791915655433,
+      0.07711423963568836,
+      0.056050067545237836,
+      0.03992600896807147,
+      0.02811979191927197,
+      0.01937371569399503,
+      0.012994828242320297,
+      0.008459681530380682,
+      0.005254171566973766,
+      0.003047892100019196,
+      0.0016077523782601327,
+      7.522602988567233E-4,
+      3.045933970167802E-4,
+      1.0354890322852094E-4,
+      2.7949705365621346E-5,
+      5.576155578509019E-6,
+      7.787984905939597E-7,
+      5.513132044155439E-8,
+      0.0
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.8449496493673989,
+      0.6566830015171748,
+      0.4902994698362092,
+      0.35545597060484824,
+      0.2492769668127173,
+      0.17252447098346607,
+      0.11734097833243413,
+      0.0781795503599614,
+      0.05082460479397362,
+      0.03178404032748908,
+      0.018899434981548984,
+      0.010501546982769597,
+      0.005309420147243573,
+      0.0023535945225331787,
+      8.748396385587149E-4,
+      2.577799891951781E-4,
+      5.63616146177529E-5,
+      7.609302920539813E-6,
+      4.0288582674875185E-7,
+      1.132457598014124E-9
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.804373880632884,
+      0.6489307114395929,
+      0.5097072286697952,
+      0.39215037394771884,
+      0.293525235347327,
+      0.21672042914002299,
+      0.15718597006397714,
+      0.11179691011049485,
+      0.07775786760433187,
+      0.052200661005116514,
+      0.0334281951840581,
+      0.02011980262047941,
+      0.01116386639944797,
+      0.005550476657540096,
+      0.0023796641651041874,
+      8.365945255931144E-4,
+      2.2926744587109356E-4,
+      4.4529614261364314E-5,
+      4.533120501059825E-6,
+      1.0308133635300197E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json b/src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json
new file mode 100644
index 0000000000000000000000000000000000000000..cea542cc8ef5ce7fa9b0aa64d22e6aa65abb7249
--- /dev/null
+++ b/src/test/resources/e2e/nshm-conus-2018-SEATTLE_WA.json
@@ -0,0 +1,1060 @@
+{
+  "0.03 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.22480651028104304,
+      0.19239213965175658,
+      0.15936161594623185,
+      0.1275146356905474,
+      0.0973137926118801,
+      0.07129545306185185,
+      0.04970572686098274,
+      0.03283102468551178,
+      0.02054174682001113,
+      0.012042040532254777,
+      0.006533109856809289,
+      0.0032195542491221672,
+      0.0014095843915094693,
+      5.317026418447738E-4,
+      1.6497371933490185E-4,
+      3.9019360406358925E-5,
+      6.218647708560865E-6,
+      5.763621784268041E-7,
+      2.2098186964357268E-8,
+      9.051226675233101E-11
+    ]
+  },
+  "0.10 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2568806164026477,
+      0.22941413948510794,
+      0.2002601164612022,
+      0.17049411234935827,
+      0.14009264899300639,
+      0.11142724450841429,
+      0.08503273518189389,
+      0.061888181373395065,
+      0.04291676150063565,
+      0.02818855523578149,
+      0.017457119914654227,
+      0.01009253311477831,
+      0.005373992295222127,
+      0.0025905718214608033,
+      0.0011056539546966842,
+      4.034652989901638E-4,
+      1.2110776546571552E-4,
+      2.7828449529181933E-5,
+      4.164261342166884E-6,
+      3.296446137841925E-7
+    ]
+  },
+  "0.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2471438826018434,
+      0.20813077145535122,
+      0.1683585652489323,
+      0.1308236208435139,
+      0.0965768499975588,
+      0.06853196632144383,
+      0.04652071066253286,
+      0.03021223521530319,
+      0.01883616262941148,
+      0.011160046088264878,
+      0.006193663602375905,
+      0.0031520943334687923,
+      0.0014431456672169257,
+      5.844440345466739E-4,
+      2.0522954132580972E-4,
+      6.041076835121371E-5,
+      1.4464768476903563E-5,
+      2.6947718722165783E-6,
+      3.415463363239798E-7,
+      2.0949996703005372E-8
+    ]
+  },
+  "0.01 Second Spectral Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.24799852934846736,
+      0.21551256201501431,
+      0.1818791411745768,
+      0.14804165755603535,
+      0.11565481164508576,
+      0.08639571879314224,
+      0.061558806307629776,
+      0.0415704362523262,
+      0.026675437566811858,
+      0.016161014029639247,
+      0.009191155316601293,
+      0.0047368353346616664,
+      0.002222784598033622,
+      9.009139506583668E-4,
+      3.091541410913309E-4,
+      8.363812131217344E-5,
+      1.622101415997888E-5,
+      1.8494925110963734E-6,
+      1.1132226275596804E-7,
+      6.837052792698252E-10
+    ]
+  },
+  "7.50 Second Spectral Acceleration": {
+    "xs": [
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457,
+      0.10436001532424286
+    ],
+    "ys": [
+      0.057504529293937734,
+      0.042078602339345905,
+      0.029972891939920334,
+      0.020475167418084517,
+      0.013629020320962337,
+      0.008819923728116954,
+      0.005587368819595242,
+      0.003499981489472991,
+      0.0021552370084213577,
+      0.0012900811848004417,
+      7.362567899579544E-4,
+      3.913461347331755E-4,
+      1.8794742254125838E-4,
+      7.893346064599808E-5,
+      2.8013379963329657E-5,
+      7.998307564706138E-6,
+      1.497029172981033E-6,
+      1.0872868096130695E-7,
+      1.2795481251601001E-12,
+      0.0
+    ]
+  },
+  "0.05 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.23450870647710428,
+      0.20410882400353036,
+      0.17258722970364956,
+      0.14146348059944086,
+      0.11105316898477842,
+      0.08390454344632978,
+      0.06044877068925625,
+      0.041301981215679504,
+      0.026754513523002017,
+      0.016296425769353994,
+      0.009256084359059698,
+      0.0048326313596572705,
+      0.0022809715756480936,
+      9.532992884979415E-4,
+      3.417223093679745E-4,
+      9.987475759032554E-5,
+      2.2288216948993927E-5,
+      3.382070225996897E-6,
+      3.064983960378735E-7,
+      9.890335300782297E-9
+    ]
+  },
+  "5.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.908755779315721,
+      -6.502290170873972,
+      -6.0968250627658085,
+      -5.692842534617867,
+      -5.286388795682763,
+      -4.882242079327857,
+      -4.474141923581687,
+      -4.0686768154735224,
+      -3.6651629274966204,
+      -3.259697819388456,
+      -2.8542327112802917,
+      -2.448767603172127,
+      -2.0402208285265546,
+      -1.6398971199188088,
+      -1.2310014767138553,
+      -0.8278220838865469,
+      -0.42159449003804794,
+      -0.016129381929883644,
+      0.3920420877760237,
+      0.7929925155296614
+    ],
+    "ys": [
+      0.05798410239321793,
+      0.04190469135307654,
+      0.029366591251134604,
+      0.019925555867050533,
+      0.01305936133854125,
+      0.008356621159538311,
+      0.00521917319590902,
+      0.0032088283451382014,
+      0.0019199478710129063,
+      0.0010855280596044794,
+      5.619299089021622E-4,
+      2.56329486597956E-4,
+      9.795996789390538E-5,
+      3.0940301481857225E-5,
+      7.1649388581560175E-6,
+      9.92806997968112E-7,
+      3.042005999895275E-8,
+      2.0591305604095127E-11,
+      0.0,
+      0.0
+    ]
+  },
+  "Peak Ground Velocity": {
+    "xs": [
+      -1.439695137847006,
+      -1.0356374895067213,
+      -0.6311117896404926,
+      -0.22564668153232822,
+      0.17395330712343798,
+      0.5877866649021191,
+      0.9895411936137477,
+      1.3962446919730587,
+      1.801709800081223,
+      2.2071749081893874,
+      2.6100697927420065,
+      3.0204248861443626,
+      3.4242626545931514,
+      3.828641396489095,
+      4.23410650459726,
+      4.634728988229636,
+      5.043425116919247,
+      5.4510384535657,
+      5.855071922202427,
+      6.263398262591624
+    ],
+    "ys": [
+      0.2028607537451583,
+      0.1633255191943226,
+      0.1261481022630101,
+      0.09329430777381705,
+      0.0664135625918681,
+      0.044630482520522374,
+      0.0289693545959238,
+      0.01781176417096935,
+      0.010408304589811353,
+      0.0057410416669272275,
+      0.0029908883247628925,
+      0.0014460864241109062,
+      6.601037382163808E-4,
+      2.735853885963977E-4,
+      9.829827991645202E-5,
+      2.9088571508796664E-5,
+      6.305687119241706E-6,
+      8.931813934401446E-7,
+      6.172852364792175E-8,
+      1.6143030160500196E-10
+    ]
+  },
+  "0.075 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2470006504115053,
+      0.21855759393225324,
+      0.1885949071080644,
+      0.15833320315583999,
+      0.12788513668563115,
+      0.09972416031701099,
+      0.07439435574983991,
+      0.052785183542787016,
+      0.03560249223982468,
+      0.02268105247926461,
+      0.013571309797850135,
+      0.0075391128583122075,
+      0.0038316709497869727,
+      0.0017498234330187944,
+      7.010495148850692E-4,
+      2.3668685178607958E-4,
+      6.441650983362485E-5,
+      1.3001121693676923E-5,
+      1.6849770949433432E-6,
+      1.1934795910193425E-7
+    ]
+  },
+  "Peak Ground Acceleration": {
+    "xs": [
+      -6.061887011404528,
+      -5.654992310486769,
+      -5.251433780649187,
+      -4.845968672541022,
+      -4.439655747510518,
+      -4.034190639402354,
+      -3.6306105459899607,
+      -3.223888366691745,
+      -2.8184232585835804,
+      -2.4123999590012524,
+      -2.0099154790312257,
+      -1.5994875815809322,
+      -1.1973282616072674,
+      -0.789658080940789,
+      -0.3856624808119846,
+      0.01980262729617973,
+      0.4252677354043441,
+      0.8329091229351039,
+      1.235471471385307,
+      1.6428726885203377
+    ],
+    "ys": [
+      0.24771905048343434,
+      0.21523713496170038,
+      0.1816191521395854,
+      0.1478075554054198,
+      0.1154544339012026,
+      0.08623301622609748,
+      0.061433805356339334,
+      0.0414804231846681,
+      0.026614632328006187,
+      0.01612216950304512,
+      0.009167194434595047,
+      0.004722697334116728,
+      0.002214597550359615,
+      8.963960191205455E-4,
+      3.069001199656579E-4,
+      8.27255518898778E-5,
+      1.5948275589964146E-5,
+      1.7970761841398694E-6,
+      1.0698108241721651E-7,
+      6.68061228742313E-10
+    ]
+  },
+  "2.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.09343882934369653,
+      0.06831467744132845,
+      0.04836599671028517,
+      0.03305222437430684,
+      0.021885189390084606,
+      0.013868455884344483,
+      0.008595222626360281,
+      0.005121867328830792,
+      0.002943964788710784,
+      0.001590060059262415,
+      7.805103423263818E-4,
+      3.346768899977019E-4,
+      1.2069263245088336E-4,
+      3.491647081622185E-5,
+      7.334401680147769E-6,
+      9.532314177705859E-7,
+      4.1995803977995306E-8,
+      3.023121341224169E-10,
+      0.0,
+      0.0
+    ]
+  },
+  "0.20 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.27215751663160787,
+      0.2428176195154961,
+      0.21114125797694014,
+      0.17854851128367305,
+      0.14528024526142022,
+      0.11415412015323895,
+      0.08588170582380726,
+      0.06155130741010543,
+      0.042061104550971846,
+      0.027300770034069673,
+      0.01678092950211344,
+      0.00966862769083664,
+      0.005145022075262219,
+      0.0024839610004631345,
+      0.0010642592270944404,
+      3.910919996117647E-4,
+      1.188789644676158E-4,
+      2.8095309711551694E-5,
+      4.565778765784684E-6,
+      4.733053483090387E-7
+    ]
+  },
+  "0.75 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.231493157433031,
+      0.19117414599371751,
+      0.1516562484295518,
+      0.11523124691775388,
+      0.08409696246314179,
+      0.05838110346074373,
+      0.039236968437381926,
+      0.025222168078896927,
+      0.015642674029835695,
+      0.009256809936784387,
+      0.00515211927104197,
+      0.0026410615093262523,
+      0.0012213505398259606,
+      5.003390573218645E-4,
+      1.7808456629794738E-4,
+      5.424163397991038E-5,
+      1.325925674342787E-5,
+      2.50657884109865E-6,
+      3.1085581381543864E-7,
+      1.7279514060356802E-8
+    ]
+  },
+  "4.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.622576336748475,
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284
+    ],
+    "ys": [
+      0.06278160697312478,
+      0.045380173995250635,
+      0.03184335333951203,
+      0.021644304809397212,
+      0.014192534170634825,
+      0.00906531573168108,
+      0.005639218635491853,
+      0.0034526893386517344,
+      0.0020557987593461686,
+      0.0011429188425061338,
+      5.702294947794385E-4,
+      2.4375116624853648E-4,
+      8.354822670591189E-5,
+      2.1995030654630302E-5,
+      3.7015723564902275E-6,
+      2.689044025111518E-7,
+      2.140676847379157E-9,
+      7.7912821225978E-12,
+      0.0,
+      0.0
+    ]
+  },
+  "0.02 Second Spectral Acceleration": {
+    "xs": [
+      -5.867478567326991,
+      -5.463192009738271,
+      -5.056155809398065,
+      -4.651214124489498,
+      -4.247495741716276,
+      -3.83970234384852,
+      -3.4357888264317746,
+      -3.03032371832361,
+      -2.624168717121508,
+      -2.2164073967529934,
+      -1.8140050781753747,
+      -1.40649706843741,
+      -1.0023934309275668,
+      -0.5960204698292225,
+      -0.19116050546115904,
+      0.2151113796169455,
+      0.62057648772511,
+      1.0260415958332743,
+      1.430311246536665,
+      1.8357763546448294
+    ],
+    "ys": [
+      0.2334477387148552,
+      0.20064470317230232,
+      0.16683272195695692,
+      0.13384506820907976,
+      0.1031103458154699,
+      0.07564137003417533,
+      0.05298255241437446,
+      0.03520818216227835,
+      0.02214618059488552,
+      0.013069150990199287,
+      0.007207917190559712,
+      0.0035898666970925097,
+      0.0015999745746389077,
+      6.116637592378052E-4,
+      1.931406339392069E-4,
+      4.6492092112155395E-5,
+      7.5367073535871345E-6,
+      6.831647764714132E-7,
+      2.7029159193395804E-8,
+      1.195170693804542E-10
+    ]
+  },
+  "1.00 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.18974220852733042,
+      0.1503603205866619,
+      0.11450972580818455,
+      0.08372418685542979,
+      0.05905848080560045,
+      0.03979138599535944,
+      0.02608238717616988,
+      0.016390386446054735,
+      0.00993991853959655,
+      0.00573237506119225,
+      0.0030911516260269632,
+      0.0015239923456548826,
+      6.709274996732437E-4,
+      2.5749473831085276E-4,
+      8.379549697881683E-5,
+      2.2520975467410156E-5,
+      4.5025336547816115E-6,
+      6.148680274504022E-7,
+      4.5290379083310874E-8,
+      4.3393158533330896E-10
+    ]
+  },
+  "1.50 Second Spectral Acceleration": {
+    "xs": [
+      -5.991464547107982,
+      -5.585999438999818,
+      -5.181423615076537,
+      -4.775958506968373,
+      -4.374058465024705,
+      -3.9633162998156966,
+      -3.5613661338149765,
+      -3.1535563587475584,
+      -2.7488721956224653,
+      -2.3434070875143007,
+      -1.9379419794061366,
+      -1.5324768712979722,
+      -1.1270117631898076,
+      -0.7215466550816433,
+      -0.31608154697347896,
+      0.08617769624105241,
+      0.494696241836107,
+      0.9001613499442714,
+      1.3056264580524357,
+      1.7119945007591924
+    ],
+    "ys": [
+      0.13010322420717485,
+      0.09774937668917924,
+      0.07095088037187179,
+      0.04968084211602096,
+      0.03369049102860196,
+      0.02185259955170779,
+      0.0138252012592269,
+      0.00839274747369069,
+      0.0049180302592913,
+      0.002731153820233079,
+      0.0014046779113826764,
+      6.479254052530189E-4,
+      2.5903440642187527E-4,
+      8.669531806540833E-5,
+      2.3076911477014454E-5,
+      4.518420238862625E-6,
+      5.125345516782854E-7,
+      2.6664807502367415E-8,
+      1.404532865825582E-10,
+      0.0
+    ]
+  },
+  "0.25 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2731348990836976,
+      0.24193925177772677,
+      0.2082278451291889,
+      0.17375973898185781,
+      0.1390364716951082,
+      0.10716870140065486,
+      0.07892311191030409,
+      0.055307387005574415,
+      0.03696517106802987,
+      0.023479151429935438,
+      0.01411341420878641,
+      0.007927937269192982,
+      0.004093254724557879,
+      0.001906933011057834,
+      7.835566935634464E-4,
+      2.742422900302934E-4,
+      7.880824043736091E-5,
+      1.7451156641891006E-5,
+      2.7058923472430033E-6,
+      2.7069532487264303E-7
+    ]
+  },
+  "0.30 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2712948182013472,
+      0.23815777597430776,
+      0.2025017289715342,
+      0.1664782639960936,
+      0.13084900834140148,
+      0.09890996899579609,
+      0.07136492802077093,
+      0.049012434252250915,
+      0.032154757583545024,
+      0.020072584373654105,
+      0.011850167689385573,
+      0.006516086260400743,
+      0.003276877176875276,
+      0.0014783228273676985,
+      5.848780839998348E-4,
+      1.9601565396114732E-4,
+      5.361777932084624E-5,
+      1.1249723523864489E-5,
+      1.6953113859959098E-6,
+      1.5765383157033432E-7
+    ]
+  },
+  "3.00 Second Spectral Acceleration": {
+    "xs": [
+      -6.214608098422191,
+      -5.809142990314028,
+      -5.405902577227974,
+      -4.999695354057922,
+      -4.595219855134923,
+      -4.186459851129906,
+      -3.780994743021742,
+      -3.3784578946926658,
+      -2.972015746936675,
+      -2.566550638828511,
+      -2.162823150618887,
+      -1.7544636844843582,
+      -1.3509272172825992,
+      -0.9441759353636907,
+      -0.5395680926316447,
+      -0.13353139262452263,
+      0.2700271372130602,
+      0.6780335427498971,
+      1.0818051703517284,
+      1.4883995840570443
+    ],
+    "ys": [
+      0.06635933035488639,
+      0.04775415100316292,
+      0.03332565943501348,
+      0.022399060992056043,
+      0.014572640864448087,
+      0.009148984325560012,
+      0.00561584201154959,
+      0.0033698808345375393,
+      0.0019326895227601026,
+      0.0010318856104184382,
+      4.913644694604386E-4,
+      1.9661264543265769E-4,
+      6.445087337293315E-5,
+      1.5632153967228722E-5,
+      2.402911803157896E-6,
+      1.3152321308340758E-7,
+      1.6621628256228205E-9,
+      1.211146049486106E-12,
+      0.0,
+      0.0
+    ]
+  },
+  "10.00 Second Spectral Acceleration": {
+    "xs": [
+      -8.00736806798383,
+      -7.602904462212756,
+      -7.196771574447054,
+      -6.794426593675134,
+      -6.383026750047155,
+      -5.979535976242708,
+      -5.575389259887802,
+      -5.169045030843898,
+      -4.764165917478549,
+      -4.358310108056566,
+      -3.952844999948401,
+      -3.547379891840237,
+      -3.1419147837320724,
+      -2.7364496756239083,
+      -2.3309845675157437,
+      -1.9241486572738007,
+      -1.5186835491656363,
+      -1.1147416705979933,
+      -0.709276562489829,
+      -0.30381145438166457
+    ],
+    "ys": [
+      0.05540888181431856,
+      0.040760633141302724,
+      0.029082055642471606,
+      0.02015269716198301,
+      0.013395422595272446,
+      0.008728770142290615,
+      0.005581814786364838,
+      0.0035274137896951405,
+      0.0022168478274693796,
+      0.0013737650548175328,
+      8.322983874318696E-4,
+      4.857777973535088E-4,
+      2.66948403700292E-4,
+      1.3413877292532136E-4,
+      5.9832802937100474E-5,
+      2.2899367508999174E-5,
+      7.1235722754808235E-6,
+      1.5094629793633278E-6,
+      1.334966024075107E-7,
+      0.0
+    ]
+  },
+  "0.40 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.2619282578425073,
+      0.22541978422012118,
+      0.1870354159140281,
+      0.14947528756900172,
+      0.11376263221469764,
+      0.08317487739659245,
+      0.05806214030852909,
+      0.038669434259940606,
+      0.0246787792265342,
+      0.014994644195204012,
+      0.008582357112278692,
+      0.004539986766098562,
+      0.002176286878178783,
+      9.276057061899081E-4,
+      3.439499229879172E-4,
+      1.0711846061547824E-4,
+      2.6997185946736625E-5,
+      5.208683895054006E-6,
+      7.191523381605899E-7,
+      5.2933454931882164E-8
+    ]
+  },
+  "0.15 Second Spectral Acceleration": {
+    "xs": [
+      -5.704782974989785,
+      -5.30031936921871,
+      -4.8941864814530085,
+      -4.491841500681089,
+      -4.080441657053109,
+      -3.6769508832486624,
+      -3.2728041668937564,
+      -2.866459937849852,
+      -2.4615808244845034,
+      -2.05572501506252,
+      -1.6502599069543555,
+      -1.2447947988461912,
+      -0.8393296907380268,
+      -0.4338645826298623,
+      -0.028399474521698,
+      0.37843643572024505,
+      0.7839015438284094,
+      1.1878434223960523,
+      1.5933085305042167,
+      1.998773638612381
+    ],
+    "ys": [
+      0.26723710770538406,
+      0.23929180461729455,
+      0.20928480375012712,
+      0.17840585107027152,
+      0.1467102200187023,
+      0.11674028164476564,
+      0.08910879053344965,
+      0.06487556801393521,
+      0.04503350048352529,
+      0.029663602734976056,
+      0.018484427633167662,
+      0.010799862420030816,
+      0.005839681043630296,
+      0.0028737893179784308,
+      0.0012600510026043817,
+      4.7624921427815765E-4,
+      1.496459853498727E-4,
+      3.6715831242888544E-5,
+      6.1478327952108395E-6,
+      5.903741740555818E-7
+    ]
+  }
+}
\ No newline at end of file
diff --git a/ws.Dockerfile b/ws.Dockerfile
index e19925ebf02f46da6a7ea5f147dc3971b7ba89f9..8bf60131e37ace8518cbdc7674ce576f8d336941 100644
--- a/ws.Dockerfile
+++ b/ws.Dockerfile
@@ -13,8 +13,8 @@
 #       nshmp-haz-ws
 ####
 
-ARG BUILD_IMAGE=usgs/java:11
-ARG FROM_IMAGE=usgs/java:11
+ARG BUILD_IMAGE=usgs/amazoncorretto:11
+ARG FROM_IMAGE=usgs/amazoncorretto:11
 
 ####
 # Builder image: Build jar file.
@@ -42,7 +42,7 @@ FROM ${FROM_IMAGE}
 LABEL maintainer="Peter Powers <pmpowers@usgs.gov>, Brandon Clayton <bclayton@usgs.gov>"
 
 ENV CONTEXT_PATH="/"
-ENV BASIN_SERVICE_URL="https://earthquake.usgs.gov/nshmp/ws/data/basin"
+ENV BASIN_SERVICE_URL="https://earthquake.usgs.gov/ws/nshmp/data/basin"
 ENV JAVA_OPTS="-Xms2g -Xmx8g"
 ENV MODELS_DIRECTORY="/models"