diff --git a/LIO/Concurrent.hs b/LIO/Concurrent.hs
--- a/LIO/Concurrent.hs
+++ b/LIO/Concurrent.hs
@@ -125,7 +125,6 @@
       in if canFlowToP p endLabel l
            then res
            else Left $! LabeledExceptionTCB le (toException e)
-    forever $ return ()
   return $ LabeledResultTCB { lresThreadIdTCB = tid, lresResultTCB = mv }
     where -- raise the label of the exception to the join of the
           -- exception label and supplied lForkP upper bound
diff --git a/LIO/Core.hs b/LIO/Core.hs
--- a/LIO/Core.hs
+++ b/LIO/Core.hs
@@ -106,7 +106,6 @@
   , guardWrite, guardWriteP
   ) where
 
-import           Prelude hiding (catch)
 import           Data.Typeable
 
 import           Control.Monad
@@ -238,9 +237,8 @@
 -- 'guardAllocP' to the supplied label.
 withClearanceP :: Priv l p => p -> l -> LIO l a -> LIO l a
 withClearanceP p l act = do
-  guardAllocP p l
   c <- getClearance
-  liftLIO . updateLIOStateTCB $ \s -> s { lioClearance = l }
+  setClearanceP p l
   act `finally` (updateLIOStateTCB $ \s ->
                    s { lioClearance = c `lub` lioLabel s })
 
diff --git a/LIO/FS/TCB.hs b/LIO/FS/TCB.hs
--- a/LIO/FS/TCB.hs
+++ b/LIO/FS/TCB.hs
@@ -31,8 +31,6 @@
   , lazyEncodeLabel, encodeLabel, decodeLabel
   ) where
 
-import           Prelude hiding (catch)
-
 import           Data.Serialize
 import           Data.Typeable
 import           Data.IORef
diff --git a/LIO/Handle.hs b/LIO/Handle.hs
--- a/LIO/Handle.hs
+++ b/LIO/Handle.hs
@@ -80,7 +80,7 @@
                   , hIsWritable, hIsWritableP
                   ) where
 
-import Prelude hiding (catch, readFile, writeFile)
+import Prelude hiding (readFile, writeFile)
 
 import           Data.Serialize
 import qualified Data.ByteString.Char8 as S8
diff --git a/lio.cabal b/lio.cabal
--- a/lio.cabal
+++ b/lio.cabal
@@ -1,5 +1,5 @@
 Name:           lio
-Version:        0.9.1.1
+Version:        0.9.1.2
 Cabal-Version:  >= 1.8
 Build-type:     Simple
 License:        GPL
