diff --git a/persistent-refs.cabal b/persistent-refs.cabal
--- a/persistent-refs.cabal
+++ b/persistent-refs.cabal
@@ -1,5 +1,5 @@
 name:                persistent-refs
-version:             0.2
+version:             0.3
 license:             BSD3
 license-file:        LICENSE
 author:              Adam C. Foltzer
diff --git a/src/Control/Monad/ST/Persistent/Internal.hs b/src/Control/Monad/ST/Persistent/Internal.hs
--- a/src/Control/Monad/ST/Persistent/Internal.hs
+++ b/src/Control/Monad/ST/Persistent/Internal.hs
@@ -3,7 +3,7 @@
 
 module Control.Monad.ST.Persistent.Internal where
 
-import Control.Applicative (Applicative)
+import Control.Applicative (Alternative, Applicative)
 import Control.Monad.State.Strict
 import Data.Functor.Identity
 import Data.IntMap (IntMap, empty)
@@ -15,7 +15,7 @@
 emptyHeap = Heap { heap = empty, next = minBound }
 
 -- | A persistent version of the 'Control.Monad.ST.ST' monad.
-type ST s a = STT s Identity a
+type ST s = STT s Identity
 
 -- | Run a computation that uses persistent references, and return a
 -- pure value. The rank-2 type offers similar guarantees to
@@ -24,7 +24,7 @@
 runST = runIdentity . runSTT
 
 newtype STT s m a = STT (StateT Heap m a)
-    deriving (Functor, Applicative, Monad, MonadIO, MonadTrans)
+    deriving (Functor, Applicative, Alternative, Monad, MonadIO, MonadPlus, MonadTrans)
 
 -- | Run a computation that uses persistent references, and return a
 -- pure value. The rank-2 type offers similar guarantees to
diff --git a/src/Data/STRef/Persistent.hs b/src/Data/STRef/Persistent.hs
--- a/src/Data/STRef/Persistent.hs
+++ b/src/Data/STRef/Persistent.hs
@@ -20,6 +20,7 @@
 module Data.STRef.Persistent (
     -- * 'STRef's
     STRef
+  , asInt
     -- * 'MonadRef' Operations
   , MonadRef(..)
   , modifyRef'
@@ -33,6 +34,11 @@
 import Unsafe.Coerce
 
 newtype STRef s a = STRef Int
+    deriving (Eq, Show)
+
+-- | Get the underlying 'Int' from an 'STRef'. Useful for debugging.
+asInt :: STRef s a -> Int
+asInt (STRef i) = i
 
 newSTRef :: Monad m => a -> STT s m (STRef s a)
 newSTRef x = STT $ do
