diff --git a/opentelemetry.cabal b/opentelemetry.cabal
--- a/opentelemetry.cabal
+++ b/opentelemetry.cabal
@@ -2,7 +2,7 @@
 name:                opentelemetry
 description:         The OpenTelemetry Haskell Client https://opentelemetry.io
 category:            OpenTelemetry
-version: 0.3.1
+version: 0.3.2
 license-file:        LICENSE
 license:             Apache-2.0
 author:              Dmitry Ivanov
diff --git a/src/OpenTelemetry/Eventlog.hs b/src/OpenTelemetry/Eventlog.hs
--- a/src/OpenTelemetry/Eventlog.hs
+++ b/src/OpenTelemetry/Eventlog.hs
@@ -52,3 +52,18 @@
           liftIO endSpan
       )
       (\_span -> action)
+
+-- These two are supposed to be used when you have some custom control flow
+-- and a given span can begin on one thread and end on another. In this case
+-- the ordinary `beginSpan` and `endSpan` functions would assume a wrong thing
+-- and result in
+
+beginSpecificSpan :: TraceId -> SpanId -> String -> IO ()
+beginSpecificSpan (TId tid) (SId sid) k =
+  Debug.Trace.traceEventIO $
+    printf "ot1 begin specific span %d %d %s" tid sid k
+
+endSpecificSpan :: TraceId -> SpanId -> String -> IO ()
+endSpecificSpan (TId tid) (SId sid) k =
+  Debug.Trace.traceEventIO $
+    printf "ot1 end specific span %d %d %s" tid sid k
