diff --git a/extism.cabal b/extism.cabal
--- a/extism.cabal
+++ b/extism.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               extism
-version:            1.0.0.0
+version:            1.0.0.1
 license:            BSD-3-Clause
 maintainer:         oss@extism.org
 author:             Extism authors
diff --git a/src/Extism/Bindings.hs b/src/Extism/Bindings.hs
--- a/src/Extism/Bindings.hs
+++ b/src/Extism/Bindings.hs
@@ -134,7 +134,7 @@
 
 freePtr ptr = do
   let s = castPtrToStablePtr ptr
-  (_, b, c) <- deRefStablePtr s
+  (_, b, c, _) <- deRefStablePtr s
   freeHaskellFunPtr b
   freeHaskellFunPtr c
   freeStablePtr s
diff --git a/src/Extism/HostFunction.hs b/src/Extism/HostFunction.hs
--- a/src/Extism/HostFunction.hs
+++ b/src/Extism/HostFunction.hs
@@ -187,16 +187,17 @@
 callback :: (CurrentPlugin -> a -> IO ()) -> (Ptr ExtismCurrentPlugin -> Ptr Val -> Word64 -> Ptr Val -> Word64 -> Ptr () -> IO ())
 callback f plugin params nparams results nresults ptr = do
   p <- peekArray (fromIntegral nparams) params
-  (userData, _, _) <- deRefStablePtr (castPtrToStablePtr ptr)
+  (userData, _, _, _) <- deRefStablePtr (castPtrToStablePtr ptr)
   f (CurrentPlugin plugin p results (fromIntegral nresults)) userData
 
 hostFunctionWithNamespace' ns name params results f v =
   let nparams = fromIntegral $ length params
    in let nresults = fromIntegral $ length results
        in do
-            cb <- callbackWrap (callback f)
+            let g = callback f
+            cb <- callbackWrap g
             free <- freePtrWrap freePtr
-            userData <- newStablePtr (v, free, cb)
+            userData <- newStablePtr (v, free, cb, g)
             let userDataPtr = castStablePtrToPtr userData
             x <-
               withCString
