diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
index 7b14ed1b3dad82d80f72643f2e4a034b433bea70..0453caa34d443a271a73fe8cc824611deaaa54e1 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
@@ -126,39 +126,24 @@ public abstract class NetcdfService {
   class Metadata {
     final String description;
     final String[] syntax;
-    final String netcdfFile;
-    final Parameters model;
-    final ScienceBaseMetadata scienceBaseMetadata;
+    final SourceModel model;
+    final DoubleParameter longitude;
+    final DoubleParameter latitude;
+    final DoubleParameter vs30;
+    final NetcdfMetadata netcdfMetadata;
 
     Metadata(HttpRequest<?> request, String description) {
       var url = request.getUri().toString();
       url = url.endsWith("/") ? url.substring(0, url.length() - 1) : url;
       this.description = description;
-      scienceBaseMetadata = netcdf().netcdfData().scienceBaseMetadata();
-      var fileName = netcdf.netcdfPath().getFileName();
-      netcdfFile = fileName == null ? netcdf().netcdfPath().toString() : fileName.toString();
       syntax = new String[] {
           url + "/{longitude:number}/{latitude:number}",
           url + "?longitude={number}&latitude={number}",
           url + "/{longitude:number}/{latitude:number}/{siteClass:NehrpSiteClass}",
           url + "?longitude={number}&latitude={number}&siteClass={NehrpSiteClass}",
       };
-      model = new Parameters();
-    }
-  }
-
-  class Parameters {
-    final String name;
-    final DoubleParameter longitude;
-    final DoubleParameter latitude;
-    final Map<NehrpSiteClass, Double> siteClasses;
-    final DoubleParameter vs30;
 
-    Parameters() {
-      var netcdfData = netcdf().netcdfData();
-      var bounds = netcdfData.bounds();
-
-      name = netcdfData.scienceBaseMetadata().label;
+      var bounds = netcdf().netcdfData().bounds();
       longitude = new DoubleParameter(
           "Longitude",
           "°",
@@ -169,12 +154,34 @@ public abstract class NetcdfService {
           "°",
           Maths.round(bounds.min.latitude, 3),
           Maths.round(bounds.max.latitude, 3));
-      siteClasses = netcdfData.vs30Map();
+      model = new SourceModel();
       vs30 = new DoubleParameter(
           "Vs30",
           "m/s",
           150,
           1500);
+      netcdfMetadata = new NetcdfMetadata();
+    }
+  }
+
+  class NetcdfMetadata {
+    final String netcdfFile;
+    final ScienceBaseMetadata scienceBaseMetadata;
+
+    NetcdfMetadata() {
+      var fileName = netcdf.netcdfPath().getFileName();
+      netcdfFile = fileName == null ? netcdf().netcdfPath().toString() : fileName.toString();
+      scienceBaseMetadata = netcdf().netcdfData().scienceBaseMetadata();
+    }
+  }
+
+  class SourceModel {
+    final String name;
+    final Map<NehrpSiteClass, Double> siteClasses;
+
+    SourceModel() {
+      name = netcdf().netcdfData().scienceBaseMetadata().label;
+      siteClasses = netcdf().netcdfData().vs30Map();
     }
   }