diff --git a/Control/Monad/Ref.hs b/Control/Monad/Ref.hs
--- a/Control/Monad/Ref.hs
+++ b/Control/Monad/Ref.hs
@@ -225,6 +225,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
diff --git a/ref-tf.cabal b/ref-tf.cabal
--- a/ref-tf.cabal
+++ b/ref-tf.cabal
@@ -1,6 +1,6 @@
 name:           ref-tf
-version:        0.4.0.2
-cabal-version:  >= 1.6
+version:        0.5
+cabal-version:  >= 1.10
 license:        BSD3
 license-file:   LICENSE
 copyright:      (c) 2006-2011 Harvard University
@@ -14,11 +14,15 @@
 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.3, 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.4,
+                GHC==9.0.1
 
 build-type:     Simple
 
 library
+  default-language: Haskell2010
+
   exposed-modules:
     Control.Monad.Ref
 
