diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Changelog
 
+## [0.1.0.0] - 2025-07-14
+
+### Changed
+
+* Changed the metricsEndpointMiddleware API to support more bells and whistles
+  without breaking the API in the future.
+
 ## [0.0.0.1] - 2025-07-14
 
 ### Added
diff --git a/prometheus-wai.cabal b/prometheus-wai.cabal
--- a/prometheus-wai.cabal
+++ b/prometheus-wai.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           prometheus-wai
-version:        0.0.0.1
+version:        0.1.0.0
 description:    Prometheus metrics for WAI applications
 homepage:       https://github.com/NorfairKing/prometheus-wai#readme
 bug-reports:    https://github.com/NorfairKing/prometheus-wai/issues
@@ -28,8 +28,6 @@
       Paths_prometheus_wai
   hs-source-dirs:
       src
-  build-tool-depends:
-      autoexporter:autoexporter
   build-depends:
       base >=4.7 && <5
     , bytestring
diff --git a/src/System/Metrics/Prometheus/Wai/Middleware.hs b/src/System/Metrics/Prometheus/Wai/Middleware.hs
--- a/src/System/Metrics/Prometheus/Wai/Middleware.hs
+++ b/src/System/Metrics/Prometheus/Wai/Middleware.hs
@@ -6,9 +6,10 @@
   ( registerWaiMetrics,
     WaiMetrics (..),
     instrumentWaiMiddleware,
+    combineRegistrySample,
+    MetricsEndpoint (..),
+    defaultMetricsEndpoint,
     metricsEndpointMiddleware,
-    metricsEndpointAtMiddleware,
-    metricsEndpointAtMiddlewareWithHook,
   )
 where
 
@@ -32,6 +33,7 @@
 import qualified System.Metrics.Prometheus.Metric.Histogram as Prometheus (Histogram)
 import qualified System.Metrics.Prometheus.MetricId as Labels
 import qualified System.Metrics.Prometheus.MetricId as Prometheus (Labels (..))
+import qualified System.Metrics.Prometheus.Registry as Prometheus (RegistrySample (..))
 
 data WaiMetrics = WaiMetrics
   { waiMetricsStatusCode :: !(Map Int Prometheus.Counter),
@@ -64,9 +66,9 @@
   let durationBounds =
         concat
           [ [1, 2, 3, 5],
-            [10, 20, 30, 40, 50],
-            [100, 200, 300, 400, 500],
-            [1_000, 2_000, 3_000, 4_000, 5_000],
+            [10, 20 .. 100],
+            [100, 200 .. 900],
+            [1_000, 2_000 .. 9_000],
             [10_000]
           ]
   waiMetricsDuration <- Prometheus.registerHistogram "http_request_duration_milliseconds" labels durationBounds registry
@@ -101,31 +103,42 @@
             sendResponse response
         else application request sendResponse
 
--- | Add a metrics endpoint using the given registry.
-metricsEndpointMiddleware :: Registry -> Wai.Middleware
-metricsEndpointMiddleware = metricsEndpointAtMiddleware "/metrics"
+combineRegistrySample :: Prometheus.RegistrySample -> Prometheus.RegistrySample -> Prometheus.RegistrySample
+combineRegistrySample (Prometheus.RegistrySample a) (Prometheus.RegistrySample b) =
+  Prometheus.RegistrySample (M.union a b)
 
--- | Add a metrics endpoint at a given path using the given registry.
-metricsEndpointAtMiddleware :: ByteString -> Registry -> Wai.Middleware
-metricsEndpointAtMiddleware =
-  metricsEndpointAtMiddlewareWithHook (pure ())
+data MetricsEndpoint = MetricsEndpoint
+  { -- | Path to serve metrics on, e.g. @"/metrics"@
+    metricsEndpointPath :: ByteString,
+    -- | Registry to sample from
+    metricsEndpointRegistry :: Registry,
+    -- | Extra samples to be collected 'at the last second', to be combined
+    -- with the main registry samples
+    metricsEndpointLastSecond :: Maybe (IO Prometheus.RegistrySample)
+  }
 
--- | Add a metrics endpoint at a given path and last-minute hook using the given registry.
---
--- This lets you set metrics that are evaluated when the /metrics endpoint is hit.
-metricsEndpointAtMiddlewareWithHook ::
-  IO () ->
-  ByteString ->
-  Registry ->
-  Wai.Middleware
-metricsEndpointAtMiddlewareWithHook lastMinuteHook path registry application request sendResponse =
-  if Request.rawPathInfo request == path
+defaultMetricsEndpoint :: Registry -> MetricsEndpoint
+defaultMetricsEndpoint registry =
+  MetricsEndpoint
+    { metricsEndpointPath = "/metrics",
+      metricsEndpointRegistry = registry,
+      metricsEndpointLastSecond = Nothing
+    }
+
+metricsEndpointMiddleware :: MetricsEndpoint -> Wai.Middleware
+metricsEndpointMiddleware MetricsEndpoint {..} application request sendResponse =
+  if Request.rawPathInfo request == metricsEndpointPath
     then do
-      lastMinuteHook
-      s <- Registry.sample registry
+      let sampleRegistry = Registry.sample metricsEndpointRegistry
+      finalSamples <- case metricsEndpointLastSecond of
+        Nothing -> sampleRegistry
+        Just lastSecondSample ->
+          combineRegistrySample
+            <$> sampleRegistry
+            <*> lastSecondSample
       sendResponse
         $ Wai.responseBuilder
           HTTP.ok200
           [(HTTP.hContentType, "text/plain; version=0.0.4; charset=utf-8")]
-        $ Prometheus.encodeMetrics s
+        $ Prometheus.encodeMetrics finalSamples
     else application request sendResponse
