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/library/SlaveThread/Util/LowLevelForking.hs b/library/SlaveThread/Util/LowLevelForking.hs
--- a/library/SlaveThread/Util/LowLevelForking.hs
+++ b/library/SlaveThread/Util/LowLevelForking.hs
@@ -8,5 +8,5 @@
 -- which does not install a default exception handler on the forked thread.
 {-# INLINE forkIOWithoutHandler #-}
 forkIOWithoutHandler :: IO () -> IO ThreadId
-forkIOWithoutHandler action =
+forkIOWithoutHandler (IO action) =
   IO $ \s -> case (fork# action s) of (# s', tid #) -> (# s', ThreadId tid #)
diff --git a/slave-thread.cabal b/slave-thread.cabal
--- a/slave-thread.cabal
+++ b/slave-thread.cabal
@@ -1,5 +1,5 @@
 name: slave-thread
-version: 1.1.0.1
+version: 1.1.0.2
 synopsis: A fundamental solution to ghost threads and silent exceptions
 description:
   Vanilla thread management in Haskell is low level and 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,6 +1,8 @@
 module Main where
 
 import Prelude
+import Data.List (isInfixOf)
+import Data.Either (isLeft)
 import Test.QuickCheck.Instances
 import Test.Tasty
 import Test.Tasty.Runners
@@ -33,7 +35,8 @@
       finalizer1Called <- atomically (readTVar finalizer1CalledVar)
       assertEqual "finalizer2 not called" True finalizer2Called
       assertEqual "finalizer1 not called" True finalizer1Called
-      assertEqual "Invalid result" "Left user error (finalizer2 failed)" (show result)
+      assertEqual "result is left" True (isLeft result)
+      assertEqual "Invalid result" True ("finalizer2 failed" `isInfixOf` show result)
     ,
     testCase "Forked threads run fine" $ do
       replicateM_ 100000 $ do
