diff --git a/build.gradle b/build.gradle
index 4e0a5e5b94dd6e2b59d8580bd890145b1a2d9a1b..f7155569da0e0faadf15cc24cfeb2da32bcc7bf9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -47,7 +47,6 @@ configurations {
 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/repositories.gradle"
 
 sourceCompatibility = JavaVersion.VERSION_11
diff --git a/code.json b/code.json
index 183cbc7e321b9d36d1355db4663bee12244ca5bd..e2e1203db87fad980c2a75633f7bd00639636889 100644
--- a/code.json
+++ b/code.json
@@ -3,7 +3,7 @@
     "name": "nshmp-haz",
     "organization": "U.S. Geological Survey",
     "description": "NSHMP command line applications and web services",
-    "version": "2.0.0",
+    "version": "main",
     "status": "Development",
 
     "permissions": {
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/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-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 048829b218d967aecad0f214ce788074ade87d0d..a855993adff4b7a5b1af3d4ebd3b9cab1dbd7868 100644
--- a/docs/pages/Source-Types.md
+++ b/docs/pages/Source-Types.md
@@ -175,7 +175,7 @@ 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 tree 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
@@ -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/6-enhanced-output/README.md b/etc/examples/6-enhanced-output/README.md
index 83f0ed2b5d80fdf1330b6af8f7f1d4753ff31bff..efed4971851d0928f43b062c5c4d76a6bc328e7c 100644
--- a/etc/examples/6-enhanced-output/README.md
+++ b/etc/examples/6-enhanced-output/README.md
@@ -59,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/7-deaggregation/README.md b/etc/examples/7-disaggregation/README.md
similarity index 67%
rename from etc/examples/7-deaggregation/README.md
rename to etc/examples/7-disaggregation/README.md
index 734901617d79d44d51ff27dc11b7a4b1a0c6bb88..ea60c780c8022a225536f941cb2358b7b3d533fe 100644
--- a/etc/examples/7-deaggregation/README.md
+++ b/etc/examples/7-disaggregation/README.md
@@ -1,36 +1,36 @@
-# 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 -Xms4g -Xmx8g -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-conus 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
+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 deaggregation results for each GMM are generated as well.
-Deaggregations by individual `SOURCE` type are also possible.
+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
@@ -60,7 +60,7 @@ __Results directory structure:__
       │       ├─ ...
       │       ├─ CB_14_BASIN/
       │       │   ├─ curves.csv
-      │       │   └─ deagg/
+      │       │   └─ disagg/
       │       │       ├─ Los Angeles CA/
       │       │       │   ├─ data.csv
       │       │       │   └─ dsummary.txt
@@ -79,9 +79,9 @@ __Results directory structure:__
       └─ ...
 ```
 
-Note that in the output above, there are only deaggregation results for
-subduction GMMs (e.g. `AM_09_INTERFACE_BASIN`) 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-deaggregation/config.json b/etc/examples/7-disaggregation/config.json
similarity index 100%
rename from etc/examples/7-deaggregation/config.json
rename to etc/examples/7-disaggregation/config.json
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 dd696daf712266f9c74a3669a7689dd50e53baba..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
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-sources/mfd-config.json b/etc/peer/models/Set1-Case1/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/Set1-Case1/active-crust/fault/mfd-config.json
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/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-config.json
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-config.json
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/mfd-map.json
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/mfd-map.json
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.csv
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.csv
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/set1-case10/set1-case10.geojson
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/set1-case10/set1-case10.geojson
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/source-tree.json
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/source-tree.json
diff --git a/etc/peer/models/Set1-Case10-fast/active-crust/zone-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-Case10-fast/active-crust/zone-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-sources/zone-config.json b/etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case10-fast/active-crust/zone-sources/zone-config.json
rename to etc/peer/models/Set1-Case10-fast/active-crust/zone/zone-config.json
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-config.json
rename to etc/peer/models/Set1-Case10/active-crust/zone/mfd-config.json
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/mfd-map.json
rename to etc/peer/models/Set1-Case10/active-crust/zone/mfd-map.json
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.csv b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.csv
rename to etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.csv
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.geojson b/etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/set1-case10/set1-case10.geojson
rename to etc/peer/models/Set1-Case10/active-crust/zone/set1-case10/set1-case10.geojson
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/source-tree.json
rename to etc/peer/models/Set1-Case10/active-crust/zone/source-tree.json
diff --git a/etc/peer/models/Set1-Case10/active-crust/zone-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-Case10/active-crust/zone-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-sources/zone-config.json b/etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case10/active-crust/zone-sources/zone-config.json
rename to etc/peer/models/Set1-Case10/active-crust/zone/zone-config.json
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-config.json
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-config.json
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/mfd-map.json
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/mfd-map.json
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.csv
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.csv
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/set1-case11/set1-case11.geojson
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/set1-case11/set1-case11.geojson
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/source-tree.json
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/source-tree.json
diff --git a/etc/peer/models/Set1-Case11-fast/active-crust/zone-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-Case11-fast/active-crust/zone-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-sources/zone-config.json b/etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case11-fast/active-crust/zone-sources/zone-config.json
rename to etc/peer/models/Set1-Case11-fast/active-crust/zone/zone-config.json
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-config.json
rename to etc/peer/models/Set1-Case11/active-crust/zone/mfd-config.json
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-map.json b/etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/mfd-map.json
rename to etc/peer/models/Set1-Case11/active-crust/zone/mfd-map.json
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.csv b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.csv
rename to etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.csv
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.geojson b/etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/set1-case11/set1-case11.geojson
rename to etc/peer/models/Set1-Case11/active-crust/zone/set1-case11/set1-case11.geojson
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-sources/source-tree.json b/etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/source-tree.json
rename to etc/peer/models/Set1-Case11/active-crust/zone/source-tree.json
diff --git a/etc/peer/models/Set1-Case11/active-crust/zone-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-Case11/active-crust/zone-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-sources/zone-config.json b/etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json
similarity index 100%
rename from etc/peer/models/Set1-Case11/active-crust/zone-sources/zone-config.json
rename to etc/peer/models/Set1-Case11/active-crust/zone/zone-config.json
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-sources/mfd-config.json b/etc/peer/models/Set1-Case2-fast/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/Set1-Case2-fast/active-crust/fault/mfd-config.json
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-Case2-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-Case2-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-sources/mfd-config.json b/etc/peer/models/Set1-Case2/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/Set1-Case2/active-crust/fault/mfd-config.json
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-Case2/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-Case2/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-sources/mfd-config.json b/etc/peer/models/Set1-Case3-fast/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/Set1-Case3-fast/active-crust/fault/mfd-config.json
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-Case3-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-Case3-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-sources/mfd-config.json b/etc/peer/models/Set1-Case3/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/Set1-Case3/active-crust/fault/mfd-config.json
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-Case3/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-Case3/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-sources/mfd-config.json b/etc/peer/models/Set1-Case4-fast/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/Set1-Case4-fast/active-crust/fault/mfd-config.json
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-Case4-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-Case4-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-sources/mfd-config.json b/etc/peer/models/Set1-Case4/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/Set1-Case4/active-crust/fault/mfd-config.json
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-Case4/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-Case4/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-sources/mfd-config.json b/etc/peer/models/Set1-Case5-fast/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/Set1-Case5-fast/active-crust/fault/mfd-config.json
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-Case5-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-Case5-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-sources/mfd-config.json b/etc/peer/models/Set1-Case5/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/Set1-Case5/active-crust/fault/mfd-config.json
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-Case5/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-Case5/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-sources/mfd-config.json b/etc/peer/models/Set1-Case6-fast/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/Set1-Case6-fast/active-crust/fault/mfd-config.json
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-Case6-fast/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-Case6-fast/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-sources/mfd-config.json b/etc/peer/models/Set1-Case6/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/Set1-Case6/active-crust/fault/mfd-config.json
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-Case6/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-Case6/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-sources/mfd-config.json b/etc/peer/models/Set1-Case7-fast/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/Set1-Case7-fast/active-crust/fault/mfd-config.json
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-Case7-fast/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-Case7-fast/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-sources/mfd-config.json b/etc/peer/models/Set1-Case7/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/Set1-Case7/active-crust/fault/mfd-config.json
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-sources/tree-info.json b/etc/peer/models/Set1-Case7/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-Case7/active-crust/fault/tree-info.json
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-sources/mfd-config.json b/etc/peer/models/Set1-Case8a/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/Set1-Case8a/active-crust/fault/mfd-config.json
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-sources/tree-info.json b/etc/peer/models/Set1-Case8a/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-Case8a/active-crust/fault/tree-info.json
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-sources/mfd-config.json b/etc/peer/models/Set1-Case8b/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/Set1-Case8b/active-crust/fault/mfd-config.json
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-sources/tree-info.json b/etc/peer/models/Set1-Case8b/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-Case8b/active-crust/fault/tree-info.json
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-sources/mfd-config.json b/etc/peer/models/Set1-Case8c/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/Set1-Case8c/active-crust/fault/mfd-config.json
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-sources/tree-info.json b/etc/peer/models/Set1-Case8c/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-Case8c/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2a-fast/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/Set2-Case2a-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2a-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2a/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2a/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/Set2-Case2a/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2a/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2a/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2b-fast/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/Set2-Case2b-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2b-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2b/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2b/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/Set2-Case2b/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2b/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2b/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2c-fast/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/Set2-Case2c-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2c-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2c/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2c/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/Set2-Case2c/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2c/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2c/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2d-fast/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/Set2-Case2d-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2d-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/features/fault3.geojson b/etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/features/fault3.geojson
rename to etc/peer/models/Set2-Case2d/active-crust/fault/features/fault3.geojson
diff --git a/etc/peer/models/Set2-Case2d/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/Set2-Case2d/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-sources/mfd-map.json b/etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/set2-case2/rupture-set.json b/etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/set2-case2/rupture-set.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/set2-case2/rupture-set.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case2d/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case2d/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case2d/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3a-fast/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/Set2-Case3a-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3a-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3a/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3a/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/Set2-Case3a/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3a/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3a/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3b-fast/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/Set2-Case3b-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3b-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3b/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3b/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/Set2-Case3b/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3b/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3b/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3c-fast/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/Set2-Case3c-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3c-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3c/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3c/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/Set2-Case3c/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3c/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3c/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3d-fast/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/Set2-Case3d-fast/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3d-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case3d/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case3d/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/Set2-Case3d/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-sources/mfd-map.json b/etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case3d/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case3d/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case4a-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case4a/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case4a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case4a/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case4a/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b-fast/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case4b-fast/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case4b/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case4b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case4b/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case4b/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case5a/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case5a/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case5a/active-crust/fault/tree-info.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/fault-config.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/fault-config.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson b/etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/features/fault.geojson
rename to etc/peer/models/Set2-Case5b/active-crust/fault/features/fault.geojson
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-config.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/mfd-config.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json b/etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/mfd-map.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/mfd-map.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/source-tree.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/source-tree.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json b/etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/source1/rupture-set.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/source1/rupture-set.json
diff --git a/etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json b/etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json
similarity index 100%
rename from etc/peer/models/Set2-Case5b/active-crust/fault-sources/tree-info.json
rename to etc/peer/models/Set2-Case5b/active-crust/fault/tree-info.json
diff --git a/gradle.properties b/gradle.properties
index 28363e0ff0c243fa49dbd8c87cc2ab8a4a73f4b1..c43d8bfaaabc31c5fb244058e16f1b7d13fa74c1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,7 +8,7 @@ junitVersion = 5.5.2
 micronautVersion = 2.4.1
 mnPluginVersion = 1.4.2
 nodeVersion = 3.0.1
-nshmpLibVersion = 0.7.6
+nshmpLibVersion = 0.7.3
 nshmpWsUtilsVersion = 0.1.2
 shadowVersion = 5.2.0
 spotbugsVersion = 4.2.4
diff --git a/gradle/ext.gradle b/gradle/ext.gradle
index 3cc94336dfbc62250d267f263b530fcc1095c49f..a15fd02b3ef5a9b859cf534cb2bbd9571d95e0d0 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"
@@ -72,28 +70,4 @@ ext {
       model_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/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/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..4c8224c726538b06f41dcd92aa0a93bef7817e72 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;
@@ -22,38 +23,37 @@ 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 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 +70,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 +88,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 +97,10 @@ public class DeaggCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
+      List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
       log.info("Sites: " + 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 +122,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 +162,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 +180,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 87%
rename from src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java
rename to src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java
index ffb54416670fb396c09d4facc355edb077b870f6..066a6fca23ea3a14413174a8f95692d5c76f6067 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/DeaggEpsilon.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggEpsilon.java
@@ -42,21 +42,12 @@ import gov.usgs.earthquake.nshmp.internal.Logging;
 import gov.usgs.earthquake.nshmp.model.HazardModel;
 
 /**
- * Disaggregate probabilisitic seismic hazard at a return period of interest or
+ * Disaggregate probabilistic seismic hazard at a return period of interest or
  * at specific ground motion levels.
  *
  * @author U.S. Geological Survey
  */
-/**
- * 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.
- *
- * @author U.S. Geological Survey
- */
-public class DeaggEpsilon {
+public class DisaggEpsilon {
 
   private static final Gson GSON = new GsonBuilder()
       .serializeSpecialFloatingPointValues()
@@ -69,25 +60,32 @@ public class DeaggEpsilon {
    * <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
-   * calculated intensity measures at the 'returnPeriod' (in years)of interest
-   * specified in the config file (default = 2475 years)
+   * 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.
+   * 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"
-   * 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) {
 
@@ -109,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 {
@@ -221,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,
@@ -242,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();
@@ -268,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);
@@ -305,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();
     }
   }
 
@@ -335,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 [config]";
+      "java -cp nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggEpsilon model sites [config]";
 
   private static final String USAGE = new StringBuilder()
       .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 6e1e8ce9e133d361dfe9aaea66777a35c5846cb4..8218dc569e86412332550451be877d31792a72b2 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,7 +108,7 @@ public class HazardCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = readSites(args[1], config, model.siteData(), log);
+      List<Site> sites = readSites(args[1], config, model.siteData(), log);
       log.info("Sites: " + 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,
@@ -149,7 +146,7 @@ public class HazardCalc {
     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..b923a90b89b8cde1bdada772a8c0ce646bf54900 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/RateCalc.java
@@ -27,7 +27,6 @@ import gov.usgs.earthquake.nshmp.calc.CalcConfig;
 import gov.usgs.earthquake.nshmp.calc.EqRate;
 import gov.usgs.earthquake.nshmp.calc.EqRateExport;
 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;
@@ -54,16 +53,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,7 +106,7 @@ public class RateCalc {
       log.info(config.toString());
 
       log.info("");
-      Sites sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
+      List<Site> sites = HazardCalc.readSites(args[1], config, model.siteData(), log);
       log.info("Sites: " + sites);
 
       Path out = calc(model, config, sites, log);
@@ -137,7 +136,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 +169,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 +217,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 +228,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/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/ServletUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServletUtil.java
index 2c4c8951ba37afa7118abe57aa267b25614dd6cf..a6273aa43efdcc197e6e9f9672f2457f156ded8b 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
@@ -69,7 +69,7 @@ public class ServletUtil {
   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();
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 ad3124fd7e348cb6fbbde07fc46431bff42c9d26..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
@@ -115,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]);