diff --git a/.gitignore b/.gitignore
index afda252de125f2b994fd520882bd22188b48d830..d4c5e0c3f97f0941a0b78355cfceea61e8ee4c18 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,6 @@
 .project
 .settings
 .gradle
-.vscode
 bin
 build
 classes
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000000000000000000000000000000000000..c29927f2c2eab502abdf27a5217048abc9124c58
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,18 @@
+{
+  /*
+   * VS Code recommended extensions for nshmp-haz.
+   *
+   * For more information on extension,
+   * visit: https://code.visualstudio.com/docs/editor/extension-marketplace
+   */
+  "recommendations": [
+    "davidanson.vscode-markdownlint",
+    "editorconfig.editorconfig",
+    "gitlab.gitlab-workflow",
+    "jumpinjackie.vscode-map-preview",
+    "redhat.vscode-yaml",
+    "timonwong.shellcheck",
+    "vscjava.vscode-gradle",
+    "vscjava.vscode-java-pack",
+  ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..c32ef434c4bf042c624842f672ca5e014249b7f4
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,31 @@
+{
+  /*
+   * VS Code settings for nshmp-haz.
+   *
+   * For more information on settings,
+   * visit: https://code.visualstudio.com/docs/getstarted/settings
+   */
+  "editor.rulers": [
+    {
+      "column": 100
+    }
+  ],
+  "editor.tabSize": 2,
+  "files.associations": {
+    "*.geojson": "json"
+  },
+  "java.compile.nullAnalysis.mode": "automatic",
+  "java.configuration.updateBuildConfiguration": "automatic",
+  "java.import.generatesMetadataFilesAtProjectRoot": true,
+  "files.exclude": {
+    "**/.classpath": true,
+    "**/.DS_Store": true,
+    "**/.factorypath": true,
+    "**/.git": true,
+    "**/.gradle": true,
+    "**/.project": true,
+    "**/.settings": true,
+    "**/bin": true,
+    "**/node_modules": true,
+  }
+}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000000000000000000000000000000000000..99096d8e096148b98495900ccbcda79718e722eb
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,29 @@
+{
+  /*
+   * VS Code tasks for nshmp-haz.
+   *
+   * For more information on tasks, visit: https://code.visualstudio.com/docs/editor/tasks
+   */
+  "version": "2.0.0",
+  "tasks": [
+    /*
+     * Task to automatically run the `./gradlew eclipse` task on startup to
+     * keep the `.classpath` file updated.
+     */
+    {
+      "label": "Update Classpath File",
+      "type": "shell",
+      "command": "./gradlew eclipse",
+      "windows": {
+        "command": "gradle.bat eclipse"
+      },
+      "presentation": {
+        "close": true,
+      },
+      "group": "none",
+      "runOptions": {
+        "runOn": "folderOpen"
+      }
+    }
+  ]
+}
diff --git a/docs/pages/Building-&-Running.md b/docs/pages/Building-&-Running.md
index df8228892ee2eae40d3e76d3dbe7624769906415..35d8685bc761a1ec251636bb11a90ad8f8445f55 100644
--- a/docs/pages/Building-&-Running.md
+++ b/docs/pages/Building-&-Running.md
@@ -90,6 +90,10 @@ Disaggregations build on and output `HazardCalc` results along with other disagg
 files. Disaggregations also have some independent
 [configuration](./Calculation-Configuration.md#calculation-configuration-parameters) options.
 
+Windows users may run into errors caused by unicode characters in the disaggregation configuration
+options. As a work around, add `-Dfile.encoding="UTF-8"` to the java call (see
+[example 7](../../etc/examples/7-disaggregation/README.md) for more details).
+
 ## Customizing Code
 
 Whereas *nshmp-haz* contains code to run command line applications and web services, model
diff --git a/etc/examples/5-complex-model/README.md b/etc/examples/5-complex-model/README.md
index b76e83b68c9672c6c6d4d35d1ee8bdc1b49526eb..fc5db9d382828c39129a298a99ef46177d1086a4 100644
--- a/etc/examples/5-complex-model/README.md
+++ b/etc/examples/5-complex-model/README.md
@@ -15,11 +15,23 @@ alias hazard='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar
 This will increase the minimum amount of memory Java requires to 4GB and will allow it to claim
 up to 8GB, assuming that much is available.
 
-First, clone the CONUS NSHM repository. Assuming you are in the current working directory
-(above), the following will create a copy of the model adjacent to nshmp-haz:
+First, download the
+[CONUS NSHM version 5.2.0](https://code.usgs.gov/ghsc/nshmp/nshms/nshm-conus/-/archive/5.2.0/nshm-conus-5.2.0.zip)
+and unzip adjacent to nshmp-haz. Note that in subsequent examples, the name of the model
+should match the unzipped directory name (e.g. `../../../../nshm-conus-5.2.0`).
+
+Alternatively, clone the CONUS NSHM repository. The `main` branch is under active development and
+may break some of the examples, so you need to checkout a stable version of the NSHM. Assuming you
+are in the current working directory (above), the following will create a copy of the model
+adjacent to nshmp-haz and checkout version 5.2.0. See [CONTRIBUTING.md](../../../CONTRIBUTING.md)
+for more information about contributing to nshmp-haz or nshm-conus.
 
 ```Shell
 git clone https://code.usgs.gov/ghsc/nshmp/nshms/nshm-conus.git ../../../../nshm-conus
+cd ../../../../nshm-conus
+git fetch origin refs/tags/5.2.0
+git checkout -b ver-5.2.0 5.2.0
+cd ../nshmp-haz/etc/examples/5-complex-model
 ```
 
 To compute hazard for a few sites at 1.0s and 2.0s spectral periods, execute:
diff --git a/etc/examples/6-enhanced-output/README.md b/etc/examples/6-enhanced-output/README.md
index 08143bdacfe5eeed59a2d6839b84b7a8fe3f0aed..b8d8a0ad6d2401a1a2235cd4b15b677c52c78028 100644
--- a/etc/examples/6-enhanced-output/README.md
+++ b/etc/examples/6-enhanced-output/README.md
@@ -4,8 +4,8 @@ __Working directory:__ `/path/to/nshmp-haz/etc/examples/6-enhanced-output`
 
 While mean hazard is of broad interest, it can be useful to preserve individual components of a
 total curve, particularly with more complex models. Execute the following to write curves for
-each source type and ground motion model (GMM) used in the CONUS NSHM (cloned in the previous
-example):
+each source type and ground motion model (GMM) used in the CONUS NSHM (downloaded and unzipped,
+or cloned in the previous example - use version 5.2.0):
 
 ```Shell
 hazard ../../../../nshm-conus sites.geojson config.json
diff --git a/etc/examples/7-disaggregation/README.md b/etc/examples/7-disaggregation/README.md
index e6578d88e4862d1e2fba34b041988f81e03b0536..a2212ba488333b0cd7637929442a8026d590af12 100644
--- a/etc/examples/7-disaggregation/README.md
+++ b/etc/examples/7-disaggregation/README.md
@@ -11,10 +11,16 @@ to create a second system alias:
 alias disagg='java -Xms4g -Xmx8g -cp /path/to/nshmp-haz/build/libs/nshmp-haz.jar gov.usgs.earthquake.nshmp.DisaggCalc'
 ```
 
+Note for Windows users: running `nshmp-haz` in command prompt, Power Shell, or GitBash may
+result in errors caused by the unicode characters in the disaggregation configuration parameters.
+For example: `java.lang.IllegalArgumentException: Invalid ? [0.0]`. To avoid this, try adding
+'`-Dfile.encoding="UTF-8"`' before `-cp` in the disagg alias shown above. This error does not
+seem to occur if `nshmp-haz` is built and run in the Windows Subsystem for Linux (WSL).
+
 The command line arguments for `DisaggCalc` are the same as those for `HazardCalc`. The target
 return period for a disaggregation is specified in the config
 [`disagg.returnPeriod`](../../../docs/pages/Calculation-Configuration.md#calculation-configuration-parameters)
-field. For compute the disaggregation in this example, execute:
+field. To compute the disaggregation in this example (use NSHM CONUS v5.2.0), execute:
 
 ```Shell
 disagg ../../../../nshm-conus sites.csv config.json
diff --git a/gradle/ext.gradle b/gradle/ext.gradle
index 9e56816220d28aca57fff3b38ba9a908070d282f..5da88c0dc447518eafb7a3f595521b2da16671ba 100644
--- a/gradle/ext.gradle
+++ b/gradle/ext.gradle
@@ -9,67 +9,4 @@ ext {
   nshmpLibGradleDir = "${nshmpLib}/gradle"
   spotbugsDir = "${nshmpLib}/gradle"
   spotlessDir = "${nshmpLib}/src/main/resources"
-
-  /* Multi-model repository paths for version tracking */
-  repo_cous_2008 = '../nshm-cous-2008'
-  repo_cous_2014 = '../nshm-cous-2014'
-  repo_cous_2014b = '../nshm-cous-2014b'
-  repo_cous_2018 = '../nshm-cous-2018'
-  repo_hi_2020 = '../nshm-hi-2020'
-  repo_ak_2007 = '../nshm-ak-2007'
-
-  /* Explicit model paths */
-  model_wus_2008 = "${repo_cous_2008}/Western US"
-  model_ceus_2008 = "${repo_cous_2008}/Central & Eastern US"
-  model_wus_2014 = "${repo_cous_2014}/Western US"
-  model_ceus_2014 = "${repo_cous_2014}/Central & Eastern US"
-  model_wus_2014b = "${repo_cous_2014b}/Western US"
-  model_wus_2018 = "${repo_cous_2018}/Western US"
-  model_ceus_2018 = "${repo_cous_2018}/Central & Eastern US"
-  model_hi_2020 = "${repo_hi_2020}"
-  model_ak_2007 = "${repo_ak_2007}"
-
-  /* Production models */
-  prod_models = [
-    [
-      model_ak_2007,
-      'models/ak/2007'
-    ],
-    [
-      model_ceus_2008,
-      'models/ceus/2008'
-    ],
-    [
-      model_wus_2008,
-      'models/wus/2008'
-    ],
-    [
-      model_ceus_2014,
-      'models/ceus/2014'
-    ],
-    [
-      model_wus_2014,
-      'models/wus/2014'
-    ],
-    [
-      model_wus_2014b,
-      'models/wus/2014b'
-    ]
-  ]
-
-  /* Development models */
-  dev_models = [
-    [
-      model_ceus_2018,
-      'models/ceus/2018'
-    ],
-    [
-      model_wus_2018,
-      'models/wus/2018'
-    ],
-    [
-      model_hi_2020,
-      'models/hi/2020'
-    ]
-  ]
 }
diff --git a/package-lock.json b/package-lock.json
index fd03b78e351745759edce1f4fbeb016a832b3d8b..dc72624ba1f9b5786382c12356add218736ccc4b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,6 +5,7 @@
   "requires": true,
   "packages": {
     "": {
+      "name": "nshmp-haz",
       "version": "2.0.0",
       "devDependencies": {
         "markdownlint-cli": "^0.31.1",
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
index 6275df2b5570c0374f7cf15b94c3908bb7ad8664..227d1796a70e4e73523fae99695f41e89a990230 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/DisaggCalc.java
@@ -64,6 +64,7 @@ public class DisaggCalc {
 
   private static final Gson GSON = new GsonBuilder()
       .serializeSpecialFloatingPointValues()
+      .setPrettyPrinting()
       .serializeNulls()
       .create();