diff --git a/System/IO/SaferFileHandles.hs b/System/IO/SaferFileHandles.hs
--- a/System/IO/SaferFileHandles.hs
+++ b/System/IO/SaferFileHandles.hs
@@ -279,14 +279,14 @@
 
 -- from regions:
 import Control.Monad.Trans.Region -- (re-exported entirely)
-import Control.Monad.Trans.Region.Internal ( Resource
-                                           , openResource
-                                           , closeResource
-                                           , internalHandle
-                                           , ParentOf
-                                           , Dup
-                                           )
-import qualified Control.Monad.Trans.Region.Internal as R ( Handle )
+import Control.Monad.Trans.Region.Unsafe ( Resource
+                                         , openResource
+                                         , closeResource
+                                         , internalHandle
+                                         , ParentOf
+                                         , Dup
+                                         )
+import qualified Control.Monad.Trans.Region.Unsafe as R ( Handle )
 
 -- from explicit-iomodes
 import System.IO.ExplicitIOModes ( IOMode(..)
@@ -304,6 +304,11 @@
 
 {-| A file scarce resource.
 
+This module provides an instance for 'Resource' for 'File'. This allows you to
+open files in a region which are automatically closed when the region terminates
+but it disallows you to return handles to these closed files from the region so
+preventing I/O with closed files.
+
 You can open a file with one of the following functions:
 
 * 'openFile'
@@ -395,7 +400,7 @@
 newtype RegionalFileHandle ioMode (r ∷ * → *) = RegionalFileHandle
     { unRegionalFileHandle ∷ RegionalHandle File r }
 
-instance Dup (RegionalFileHandle ioMode) File where
+instance Dup (RegionalFileHandle ioMode) where
     dup = liftM RegionalFileHandle ∘ dup ∘ unRegionalFileHandle
 
 {-| Open a file yielding a regional handle to it. This provides a safer
@@ -412,8 +417,8 @@
 openFile ∷ MonadCatchIO pr
          ⇒ FilePath
          → IOMode ioMode
-         → RegionT File s pr
-                   (RegionalFileHandle ioMode (RegionT File s pr))
+         → RegionT s pr
+                   (RegionalFileHandle ioMode (RegionT s pr))
 openFile filePath ioMode = liftM RegionalFileHandle
                          $ open $ File False filePath $ regularIOMode ioMode
 
@@ -424,8 +429,8 @@
 withFile ∷ MonadCatchIO pr
          ⇒ FilePath
          → IOMode ioMode
-         →  (∀ s. RegionalFileHandle ioMode (RegionT File s pr)
-            → RegionT File s pr α
+         →  (∀ s. RegionalFileHandle ioMode (RegionT s pr)
+            → RegionT s pr α
             )
          → pr α
 withFile filePath ioMode f = with (File False filePath (regularIOMode ioMode))
@@ -483,19 +488,19 @@
 -- | Return a regional handle to standard input. This provides a safer
 -- replacement for @System.IO.@'SIO.stdin'.
 stdin ∷ MonadCatchIO pr
-      ⇒ RegionT File s pr (RegionalFileHandle R (RegionT File s pr))
+      ⇒ RegionT s pr (RegionalFileHandle R (RegionT s pr))
 stdin = liftM RegionalFileHandle $ open $ Std In
 
 -- | Return a regional handle to standard output. This provides a safer
 -- replacement for @System.IO.@'SIO.stdout'.
 stdout ∷ MonadCatchIO pr
-       ⇒ RegionT File s pr (RegionalFileHandle W (RegionT File s pr))
+       ⇒ RegionT s pr (RegionalFileHandle W (RegionT s pr))
 stdout = liftM RegionalFileHandle $ open $ Std Out
 
 -- | Return a regional handle to standard error. This provides a safer
 -- replacement for @System.IO.@'SIO.stderr'.
 stderr ∷ MonadCatchIO pr
-       ⇒ RegionT File s pr (RegionalFileHandle W (RegionT File s pr))
+       ⇒ RegionT s pr (RegionalFileHandle W (RegionT s pr))
 stderr = liftM RegionalFileHandle $ open $ Std Err
 
 {- $TODO_cast
@@ -788,8 +793,8 @@
 withBinaryFile ∷ MonadCatchIO pr
                ⇒ FilePath
                → IOMode ioMode
-               →  (∀ s. RegionalFileHandle ioMode (RegionT File s pr)
-                  → RegionT File s pr α
+               →  (∀ s. RegionalFileHandle ioMode (RegionT s pr)
+                  → RegionT s pr α
                   )
                → pr α
 withBinaryFile filePath ioMode f = with (File True filePath (regularIOMode ioMode))
@@ -800,8 +805,8 @@
 openBinaryFile ∷ MonadCatchIO pr
                ⇒ FilePath
                → IOMode ioMode
-               → RegionT File s pr
-                         (RegionalFileHandle ioMode (RegionT File s pr))
+               → RegionT s pr
+                         (RegionalFileHandle ioMode (RegionT s pr))
 openBinaryFile filePath ioMode = liftM RegionalFileHandle
                                $ open $ File True filePath (regularIOMode ioMode)
 
@@ -842,10 +847,7 @@
                 → DefaultPermissions
                 → FilePath
                 → Template
-                → RegionT File s pr
-                          ( FilePath
-                          , RegionalFileHandle RW (RegionT File s pr)
-                          )
+                → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
 genOpenTempFile binary defaultPerms filePath template = do
   rh@(internalHandle → FileHandle (Just fp) _) ← open $ TempFile binary
                                                                  filePath
@@ -859,22 +861,17 @@
 openTempFile ∷ MonadCatchIO pr
              ⇒ FilePath
              → Template
-             → RegionT File s pr
-                       ( FilePath
-                       , RegionalFileHandle RW (RegionT File s pr)
-                       )
+             → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
 openTempFile = genOpenTempFile False False
 
 -- | Open a temporary file in binary mode yielding a regional handle to it
 -- paired with the generated file path. This provides a safer replacement for
 -- @System.IO.@'SIO.openBinaryTempFile'.
-openBinaryTempFile ∷ MonadCatchIO pr
-                   ⇒ FilePath
-                   → Template
-                   → RegionT File s pr
-                             ( FilePath
-                             , RegionalFileHandle RW (RegionT File s pr)
-                             )
+openBinaryTempFile ∷
+    MonadCatchIO pr
+  ⇒ FilePath
+  → Template
+  → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
 openBinaryTempFile = genOpenTempFile True False
 
 #if MIN_VERSION_base(4,2,0)
@@ -885,10 +882,7 @@
     MonadCatchIO pr
   ⇒ FilePath
   → Template
-  → RegionT File s pr
-            ( FilePath
-            , RegionalFileHandle RW (RegionT File s pr)
-            )
+  → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
 openTempFileWithDefaultPermissions = genOpenTempFile False True
 
 -- | Open a temporary file in binary mode with default permissions yielding a
@@ -899,10 +893,7 @@
     MonadCatchIO pr
   ⇒ FilePath
   → Template
-  → RegionT File s pr
-            ( FilePath
-            , RegionalFileHandle RW (RegionT File s pr)
-            )
+  → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
 openBinaryTempFileWithDefaultPermissions = genOpenTempFile True True
 #endif
 
diff --git a/safer-file-handles.cabal b/safer-file-handles.cabal
--- a/safer-file-handles.cabal
+++ b/safer-file-handles.cabal
@@ -1,5 +1,5 @@
 name:          safer-file-handles
-version:       0.1
+version:       0.2
 cabal-version: >=1.6
 build-type:    Simple
 license:       BSD3
@@ -61,7 +61,7 @@
   GHC-Options: -O2 -Wall
   build-depends: base                      >= 4 && < 4.3
                , base-unicode-symbols      >= 0.1.1 && < 0.2
-               , regions                   == 0.1.*
+               , regions                   == 0.2.*
                , transformers              >= 0.1.4 && < 0.2
                , MonadCatchIO-transformers == 0.0.2.*
                , explicit-iomodes          >= 0.1.5 && < 0.2
