diff --git a/opentelemetry-wai.cabal b/opentelemetry-wai.cabal
--- a/opentelemetry-wai.cabal
+++ b/opentelemetry-wai.cabal
@@ -2,7 +2,7 @@
 name:                opentelemetry-wai
 description:         OpenTelemetry middleware for wai
 category:            OpenTelemetry
-version: 0.5.3
+version: 0.6.0
 license-file:        LICENSE
 license:             Apache-2.0
 author:              Dmitry Ivanov
@@ -50,7 +50,7 @@
   build-depends:
     base >= 4.12 && < 5,
     bytestring,
-    opentelemetry >= 0.5.3,
+    opentelemetry >= 0.6.0,
     http-types,
     text,
     wai
diff --git a/src/OpenTelemetry/Network/Wai/Middleware.hs b/src/OpenTelemetry/Network/Wai/Middleware.hs
--- a/src/OpenTelemetry/Network/Wai/Middleware.hs
+++ b/src/OpenTelemetry/Network/Wai/Middleware.hs
@@ -11,17 +11,20 @@
 -- Semantic conventions for HTTP spans:
 -- https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md
 
-middleware :: Application -> Application
-middleware app = \req sendResp -> do
-  withSpan "WAI handler" $ \sp -> do
-    case propagateFromHeaders w3cTraceContext (requestHeaders req) of
-      Just ctx -> setParentSpanContext sp ctx
-      _ -> pure ()
-    setTag sp "span.kind" "server"
-    setTag sp "component" "http"
-    setTag sp "http.method" $ requestMethod req
-    setTag sp "http.target" $ rawPathInfo req
-    setTag sp "http.flavor" $ BS8.pack $ show (httpVersion req)
-    app req $ \resp -> do
-      setTag sp "http.status_code" (BS8.pack $ show $ statusCode $ responseStatus resp)
-      sendResp resp
+mkMiddleware :: IO (Application -> Application)
+mkMiddleware = do
+  requestCounter <- mkCounter "requests"
+  return $ \app req sendResp -> do
+    withSpan "WAI handler" $ \sp -> do
+      add requestCounter 1
+      case propagateFromHeaders w3cTraceContext (requestHeaders req) of
+        Just ctx -> setParentSpanContext sp ctx
+        _ -> pure ()
+      setTag sp "span.kind" "server"
+      setTag sp "component" "http"
+      setTag sp "http.method" $ requestMethod req
+      setTag sp "http.target" $ rawPathInfo req
+      setTag sp "http.flavor" $ BS8.pack $ show (httpVersion req)
+      app req $ \resp -> do
+        setTag sp "http.status_code" (BS8.pack $ show $ statusCode $ responseStatus resp)
+        sendResp resp
