diff --git a/src/Network/Wai/Middleware/Prometheus.hs b/src/Network/Wai/Middleware/Prometheus.hs
--- a/src/Network/Wai/Middleware/Prometheus.hs
+++ b/src/Network/Wai/Middleware/Prometheus.hs
@@ -9,6 +9,7 @@
   , Default.def
   , instrumentHandlerValue
   , instrumentHandlerValueWithFilter
+  , instrumentHandlerValueWithHistogramAndFilter
   , ignoreRawResponses
   , instrumentApp
   , instrumentIO
@@ -80,7 +81,16 @@
   -> (Wai.Request -> Text) -- ^ The function used to derive the "handler" value in Prometheus
   -> Wai.Application -- ^ The app to instrument
   -> Wai.Application -- ^ The instrumented app
-instrumentHandlerValueWithFilter resFilter f app req respond = do
+instrumentHandlerValueWithFilter =
+  instrumentHandlerValueWithHistogramAndFilter requestLatency
+
+instrumentHandlerValueWithHistogramAndFilter ::
+     Prom.Vector Prom.Label3 Prom.Histogram
+  -> (Wai.Response -> Maybe Wai.Response) -- ^ Response filter
+  -> (Wai.Request -> Text) -- ^ The function used to derive the "handler" value in Prometheus
+  -> Wai.Application -- ^ The app to instrument
+  -> Wai.Application -- ^ The instrumented app
+instrumentHandlerValueWithHistogramAndFilter histogram resFilter f app req respond = do
   start <- getTime Monotonic
   app req $ \res -> do
     case resFilter res of
@@ -89,7 +99,7 @@
         end <- getTime Monotonic
         let method = Just $ decodeUtf8 (Wai.requestMethod req)
         let status = Just $ T.pack (show (HTTP.statusCode (Wai.responseStatus res')))
-        observeSeconds (f req) method status start end
+        observeSecondsWithHistogram histogram (f req) method status start end
     respond res
 
 -- | 'Wai.ResponseRaw' values have two parts: an action that can be executed to construct a
@@ -149,10 +159,21 @@
                -> TimeSpec     -- ^ start time
                -> TimeSpec     -- ^ end time
                -> IO ()
-observeSeconds handler method status start end = do
+observeSeconds = do
+  observeSecondsWithHistogram requestLatency
+
+-- | Record an event to the middleware metric.
+observeSecondsWithHistogram :: Prom.Vector Prom.Label3 Prom.Histogram
+                            -> Text         -- ^ handler label
+                            -> Maybe Text   -- ^ method
+                            -> Maybe Text   -- ^ status
+                            -> TimeSpec     -- ^ start time
+                            -> TimeSpec     -- ^ end time
+                            -> IO ()
+observeSecondsWithHistogram histograms handler method status start end = do
     let latency :: Double
         latency = fromRational $ toRational (toNanoSecs (end `diffTimeSpec` start) % 1000000000)
-    Prom.withLabel requestLatency
+    Prom.withLabel histograms
                    (handler, fromMaybe "" method, fromMaybe "" status)
                    (flip Prom.observe latency)
 
diff --git a/wai-middleware-prometheus.cabal b/wai-middleware-prometheus.cabal
--- a/wai-middleware-prometheus.cabal
+++ b/wai-middleware-prometheus.cabal
@@ -1,5 +1,5 @@
 name:                wai-middleware-prometheus
-version:             1.0.0.1
+version:             1.0.1.0
 synopsis:
     WAI middlware for exposing http://prometheus.io metrics.
 description:
