diff --git a/src/Data/Unamb.hs b/src/Data/Unamb.hs
--- a/src/Data/Unamb.hs
+++ b/src/Data/Unamb.hs
@@ -35,7 +35,7 @@
   , BothBottom
   ) where
 
-import Prelude hiding (catch)
+import Prelude
 import System.IO.Unsafe
 import Control.Monad.Instances () -- for function functor
 import Control.Concurrent
@@ -216,9 +216,9 @@
 -- This version kills descendant threads when killed, but does not restart
 -- any work if it's called by unamb. That code is left in unamb.
 
-race a b = mask_ $ do
+race a b = mask $ \restore -> do
   v <- newEmptyMVar
-  let f x = forkIO $ putCatch (mask_ x) v
+  let f x = forkIO $ putCatch (restore x) v
   ta <- f a
   tb <- f b
   let cleanup = throwTo ta DontBother >> throwTo tb DontBother
@@ -226,7 +226,7 @@
       loop t = do x <- takeMVar v
                   case x of Nothing -> loop (t-1)
                             Just x' -> return x'
-  mask_ (loop (2 :: Int) `finally` cleanup)
+  loop (2 :: Int) `finally` cleanup
 
 
 -- A thread can bottom-out efficiently by throwing that exception.
diff --git a/unamb.cabal b/unamb.cabal
--- a/unamb.cabal
+++ b/unamb.cabal
@@ -1,17 +1,20 @@
 Name:                unamb
-Version:             0.2.5
-Cabal-Version:       >= 1.2
+Version:             0.2.7
+Cabal-Version:       >= 1.6
 Synopsis:            Unambiguous choice
 Category:            Concurrency, Data, Other
 Description:
-  unamb contains the "unambiguous choice" operator "unamb", which
+  unamb contains the \"unambiguous choice\" operator 'unamb', which
   wraps thread racing up in a purely functional, semantically simple
   wrapper.  Originally a part of Reactive, I moved unamb to its own
   package in order to encourage experimentation.
   .
+  Note: unamb correctly implements lub (least upper bound) for flat
+  types only. I suggest using the lub package instead of unamb.
+  .
   Project wiki page: <http://haskell.org/haskellwiki/unamb>
   .
-  &#169; 2008-2012 by Conal Elliott; BSD3 license.
+  &#169; 2008-2014 by Conal Elliott; BSD3 license.
   .
   Contributions from: Luke Palmer, Spencer Janssen, Sterling Clover,
   Bertram Felgenhauer, Peter Verswyvelen, Svein Ove Aas, and Edward Kmett.
@@ -20,10 +23,14 @@
 Maintainer:          conal@conal.net
 Homepage:            http://haskell.org/haskellwiki/unamb
 Package-Url:         http://code.haskell.org/unamb
-Copyright:           (c) 2008-2012 by Conal Elliott
+Copyright:           (c) 2008-2014 by Conal Elliott
 License:             BSD3
 Stability:           experimental
 build-type:          Simple
+
+source-repository head
+  type:     git
+  location: git://github.com/conal/unamb.git
 
 Flag test
   Description: Enable testing
