diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java
index 3b3b1346333846d441170a90f1ede186896fa000..79546f5a0e8bf6bea76f250de0dc8234e709ed54 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java
@@ -19,7 +19,6 @@ import gov.usgs.earthquake.nshmp.www.ResponseMetadata;
 import gov.usgs.earthquake.nshmp.www.ServletUtil;
 import gov.usgs.earthquake.nshmp.www.meta.Parameter;
 import gov.usgs.earthquake.nshmp.www.source.SourceService.SourceModel;
-
 import io.micronaut.http.HttpRequest;
 import io.micronaut.http.HttpResponse;
 import jakarta.inject.Singleton;
@@ -54,15 +53,17 @@ public class FeaturesService {
         : Models.features(ServletUtil.model(),
             Optional.of(SourceType.valueOf(requestData.featureType.name())));
 
+    // TODO check features.isEmpty() and redirect to error response
+
     if (requestData.raw) {
-      return HttpResponse.ok(features.toJson());
+      return HttpResponse.ok(features.orElseThrow().toJson());
     } else {
       var response = ResponseBody.success()
           .name(NAME)
           .url(url)
           .metadata(new ResponseMetadata(HazVersion.appVersions()))
           .request(requestData)
-          .response(features.toJsonTree())
+          .response(features.orElseThrow().toJsonTree())
           .build();
 
       return HttpResponse.ok(ServletUtil.GSON2.toJson(response));