diff --git a/gradle/nshm.gradle b/gradle/nshm.gradle
index 939658a43fa8597a5e25f34ebc32368ef0f65c30..9f31e6cc0caec6aa605ab767d1a8d410f43e5ce7 100644
--- a/gradle/nshm.gradle
+++ b/gradle/nshm.gradle
@@ -1,43 +1,37 @@
 apply plugin: "de.undercouch.download"
 
 ext {
-  conusArchiveUrl = "https://code.usgs.gov/ghsc/nshmp/nshms/nshm-conus/-/archive"
-  hawaiiArchiveUrl = "https://code.usgs.gov/ghsc/nshmp/nshms/nshm-hawaii/-/archive"
   nshmDir = "nshms";
-}
 
-/**
- * Download the default NSHM to use for the web services.
- */
-task downloadNshms() {
-  doLast {
-    // Download and unzip nshm-conus tag 5.2.0
-    def conus2018 = new File(nshmDir, "nshm-conus-5.2.0.zip")
+  // Download and unzip NSHM
+  downloadNshm = {repo, tag ->
+    def zipName = "${repo}-${tag}.zip";
+    def zipFile = new File(nshmDir, zipName)
+
     download.run {
-      src "${conusArchiveUrl}/5.2.0/nshm-conus-5.2.0.zip"
-      dest conus2018
+      src "https://code.usgs.gov/ghsc/nshmp/nshms/${repo}/-/archive/${tag}/${zipName}"
+      dest zipFile
     }
     copy {
-      from zipTree(conus2018)
+      from zipTree(zipFile)
       into nshmDir
     }
     delete {
-      delete conus2018
+      delete zipFile
     }
+  }
+}
+
+/**
+ * Download the NSHMs
+ */
+task downloadNshms() {
+  doLast {
+    // Download and unzip nshm-conus tag 5.2.0
+    downloadNshm("nshm-conus", "5.2.0")
 
     // Download and unzip nshm-hawaii tag 2.0.2
-    def hawaii2021 = new File(nshmDir, "nshm-hawaii-2.0.2.zip")
-    download.run {
-      src "${hawaiiArchiveUrl}/2.0.2/nshm-hawaii-2.0.2.zip"
-      dest hawaii2021
-    }
-    copy {
-      from zipTree(hawaii2021)
-      into nshmDir
-    }
-    delete {
-      delete hawaii2021
-    }
+    downloadNshm("nshm-hawaii", "2.0.2")
   }
 }