diff --git a/Control/Monad/Ref.hs b/Control/Monad/Ref.hs
--- a/Control/Monad/Ref.hs
+++ b/Control/Monad/Ref.hs
@@ -24,12 +24,16 @@
                                     writeTVar)
 import Control.Monad.ST (ST)
 import Control.Monad.Trans.Cont (ContT)
+#if !MIN_VERSION_transformers(0,6,0)
 import Control.Monad.Trans.Error (ErrorT, Error)
+#endif /* !MIN_VERSION_transformers(0,4,0) */
 #if MIN_VERSION_transformers(0,4,0)
 import Control.Monad.Trans.Except (ExceptT)
 #endif /* MIN_VERSION_transformers(0,4,0) */
 import Control.Monad.Trans.Identity (IdentityT)
+#if !MIN_VERSION_transformers(0,6,0)
 import Control.Monad.Trans.List (ListT)
+#endif /* !MIN_VERSION_transformers(0,4,0) */
 import Control.Monad.Trans.Maybe (MaybeT)
 import Control.Monad.Trans.Reader (ReaderT)
 import Control.Monad.Trans.State.Lazy as Lazy (StateT)
@@ -127,6 +131,7 @@
     modifyRef  r f = lift $ modifyRef  r f
     modifyRef' r f = lift $ modifyRef' r f
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance (Error e, MonadRef m) => MonadRef (ErrorT e m) where
     type Ref (ErrorT e m) = Ref m
 
@@ -135,6 +140,7 @@
     writeRef   r x = lift $ writeRef   r x
     modifyRef  r f = lift $ modifyRef  r f
     modifyRef' r f = lift $ modifyRef' r f
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 #if MIN_VERSION_transformers(0,4,0)
 instance (MonadRef m) => MonadRef (ExceptT e m) where
@@ -156,6 +162,7 @@
     modifyRef  r f = lift $ modifyRef  r f
     modifyRef' r f = lift $ modifyRef' r f
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance MonadRef m => MonadRef (ListT m) where
     type Ref (ListT m) = Ref m
 
@@ -164,6 +171,7 @@
     writeRef   r x = lift $ writeRef   r x
     modifyRef  r f = lift $ modifyRef  r f
     modifyRef' r f = lift $ modifyRef' r f
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance MonadRef m => MonadRef (MaybeT m) where
     type Ref (MaybeT m) = Ref m
@@ -225,6 +233,19 @@
     atomicModifyRef' = atomicModifyIORef'
 #endif /* MIN_VERSION_base(4,6,0) */
 
+-- Since there's no forking, it's automatically atomic.
+instance MonadAtomicRef (ST s) where
+    atomicModifyRef r f = do
+      v <- readRef r
+      let (a, b) = f v
+      writeRef r a
+      return b
+    atomicModifyRef' r f = do
+      v <- readRef r
+      let (a, b) = f v
+      writeRef r $! a
+      return b
+
 instance MonadAtomicRef STM where
     atomicModifyRef r f = do x <- readRef r
                              let (x', y) = f x
@@ -235,17 +256,21 @@
     atomicModifyRef  r f = lift $ atomicModifyRef  r f
     atomicModifyRef' r f = lift $ atomicModifyRef' r f
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance (Error e, MonadAtomicRef m) => MonadAtomicRef (ErrorT e m) where
     atomicModifyRef  r f = lift $ atomicModifyRef  r f
     atomicModifyRef' r f = lift $ atomicModifyRef' r f
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance MonadAtomicRef m => MonadAtomicRef (IdentityT m) where
     atomicModifyRef  r f = lift $ atomicModifyRef  r f
     atomicModifyRef' r f = lift $ atomicModifyRef' r f
 
+#if !MIN_VERSION_transformers(0,6,0)
 instance MonadAtomicRef m => MonadAtomicRef (ListT m) where
     atomicModifyRef  r f = lift $ atomicModifyRef  r f
     atomicModifyRef' r f = lift $ atomicModifyRef' r f
+#endif /* !MIN_VERSION_transformers(0,6,0) */
 
 instance MonadAtomicRef m => MonadAtomicRef (MaybeT m) where
     atomicModifyRef  r f = lift $ atomicModifyRef  r f
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -25,7 +25,7 @@
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGE.
 
-Copyright (c) 2011-2017, Geoffrey Mainland
+Copyright (c) 2011-2021, Geoffrey Mainland
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
diff --git a/ref-tf.cabal b/ref-tf.cabal
--- a/ref-tf.cabal
+++ b/ref-tf.cabal
@@ -1,10 +1,10 @@
 name:           ref-tf
-version:        0.4.0.2
-cabal-version:  >= 1.6
+version:        0.5.0.1
+cabal-version:  >= 1.10
 license:        BSD3
 license-file:   LICENSE
 copyright:      (c) 2006-2011 Harvard University
-                (c) 2011-2018 Geoffrey Mainland
+                (c) 2011-2021 Geoffrey Mainland
 author:         Geoffrey Mainland <mainland@drexel.edu>
 maintainer:     Geoffrey Mainland <mainland@drexel.edu>
 stability:      alpha
@@ -14,18 +14,22 @@
 description:    Contains a 'MonadRef' type class that abstracts over the
                 details of manipulating references, allowing one to write code
                 that can operate in either the ST monad or the IO monad.
-tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.3, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.1
+tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2,
+                GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.4, GHC==8.10.7,
+                GHC==9.0.1, GHC==9.2.1
 
 build-type:     Simple
 
 library
+  default-language: Haskell2010
+
   exposed-modules:
     Control.Monad.Ref
 
   build-depends:
     base         >= 4   && < 5,
     stm          >= 2.1 && < 2.6,
-    transformers >= 0.2 && < 0.6
+    transformers >= 0.2 && < 0.7
 
 source-repository head
   type:     git
