diff --git a/Control/Monad/ST/Trans/Internal.hs b/Control/Monad/ST/Trans/Internal.hs
--- a/Control/Monad/ST/Trans/Internal.hs
+++ b/Control/Monad/ST/Trans/Internal.hs
@@ -76,6 +76,9 @@
 instance (MF.MonadFail m, Functor m) => MF.MonadFail (STT s m) where
   fail msg = lift (fail msg)
 
+instance (MonadIO m, Functor m) => MonadIO (STT s m) where
+  liftIO = lift . liftIO
+
 instance MonadTrans (STT s) where
   lift m = STT $ \st ->
    do a <- m
diff --git a/STMonadTrans.cabal b/STMonadTrans.cabal
--- a/STMonadTrans.cabal
+++ b/STMonadTrans.cabal
@@ -1,6 +1,6 @@
+cabal-version:  1.18
 name:		STMonadTrans
-version:	0.4.6
-cabal-version:  >= 1.10
+version:	0.4.7
 license:	BSD3
 license-file:	LICENSE
 author:		Josef Svenningsson
@@ -20,18 +20,22 @@
    transparency). Safe monads include the monads State, Reader, Writer,
    Maybe and combinations of their corresponding monad transformers.
 
-Tested-With: GHC == 7.6.3
-           , GHC == 7.8.4
-           , GHC == 7.10.3
-           , GHC == 8.0.2
-           , GHC == 8.2.2
-           , GHC == 8.4.4
-           , GHC == 8.6.5
-           , GHC == 8.8.4
-           , GHC == 8.10.4
-           , GHC == 9.0.1
+Tested-With:
+  GHC == 9.6.1
+  GHC == 9.4.5
+  GHC == 9.2.7
+  GHC == 9.0.2
+  GHC == 8.10.7
+  GHC == 8.8.4
+  GHC == 8.6.5
+  GHC == 8.4.4
+  GHC == 8.2.2
+  GHC == 8.0.2
+  GHC == 7.10.3
+  GHC == 7.8.4
+  GHC == 7.6.3
 
-extra-source-files:
+extra-doc-files:
   README.md
   changelog.md
 
@@ -41,9 +45,11 @@
 
 library
   default-language: Haskell2010
-  build-depends:    base    >= 4.6 && < 5
-                  , mtl     >= 1.1
-                  , array
+  build-depends:
+      base         >= 4.6      && < 5
+    , transformers >= 0.2.0.0  && < 0.7
+    , mtl          >= 1.1
+    , array
 
   -- MonadFail for GHC <= 7
   if impl(ghc < 8.0)
@@ -76,10 +82,11 @@
   type:             exitcode-stdio-1.0
   hs-source-dirs:   test
   main-is:          Main.hs
-  build-depends:    base >= 4 && < 5
-                  , tasty >= 0.11.0.4 && < 1.5
-                  , tasty-quickcheck >= 0.8.4 && < 0.11
-                  , tasty-hunit >= 0.9.2 && < 0.11
-                  , transformers >= 0.2 && < 0.6
-                  , STMonadTrans
-                  , array
+  build-depends:
+      STMonadTrans
+    , array
+    , base
+    , transformers
+    , tasty            >= 0.11.0.4 && < 1.5
+    , tasty-quickcheck >= 0.8.4    && < 0.11
+    , tasty-hunit      >= 0.9.2    && < 0.11
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,10 @@
+0.4.7
+
+  * Added `MonadIO` for `SST` (issue [#29](https://github.com/josefs/STMonadTrans/issues/29)).
+  * Make `transformers` dependency explicit.
+  * Bump `cabal-version` of `STMonadTrans.cabal` to 1.18.
+  * Tested with GHC 7.6.3 - 9.6.1.
+
 0.4.6
 
   * Warning-free for all supported GHC versions (7.6 -- 9.2).
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -5,6 +5,7 @@
 import GHC.STRef (STRef)
 import GHC.Arr (Array, listArray, (//))
 import Control.Monad.ST.Trans
+import Control.Monad.IO.Class
 import Control.Monad.Trans.Class
 import Control.Monad (guard)
 import Data.Array.ST (STUArray, freeze, newArray, newArray_, readArray, thaw, writeArray)
@@ -84,3 +85,9 @@
 
 main :: IO ()
 main = defaultMain (testGroup "All Tests" [props,unitTests])
+
+
+-- Test for presence of MonadIO instance
+
+haveMonadIO :: IO ()
+haveMonadIO = runSTT $ liftIO $ putStrLn "We have the MonadIO instance!"
