diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/Util/Monad/Primitive/Unsafe.hs b/Util/Monad/Primitive/Unsafe.hs
new file mode 100644
--- /dev/null
+++ b/Util/Monad/Primitive/Unsafe.hs
@@ -0,0 +1,12 @@
+module Util.Monad.Primitive.Unsafe where
+
+import Control.Monad.Base.Control
+import Control.Monad.Primitive
+import Data.Basic
+
+unsafeInterleaveWhileJust :: (MonadBaseControl m, PrimBase (Base m)) => m (Maybe a) -> (a -> m ()) -> m [a]
+unsafeInterleaveWhileJust mma f = go
+  where
+    go = mma >>= liftBaseOp_ unsafeInterleave . \ case
+        Nothing -> pure []
+        Just a -> (a :) <$> liftBaseOp_ unsafeInterleave (a `seq` f a *> go)
diff --git a/util-primitive-control.cabal b/util-primitive-control.cabal
--- a/util-primitive-control.cabal
+++ b/util-primitive-control.cabal
@@ -1,5 +1,5 @@
 name:                util-primitive-control
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Utilities for stateful primitive types and types based on them
 -- description:
 license:             BSD3
@@ -14,7 +14,7 @@
 
 library
   hs-source-dirs:      .
-  exposed-modules:     
+  exposed-modules:     Util.Monad.Primitive.Unsafe
   build-depends:       base >= 4.7 && < 5
                      , control >=0.1 && <0.2
                      , primitive >=0.6.5 && <0.7
