diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Author name here (c) 2020
+Copyright Eric Conlon (c) 2020
 
 All rights reserved.
 
@@ -13,7 +13,7 @@
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Author name here nor the names of other
+    * Neither the name of Eric Conlon nor the names of other
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.
 
diff --git a/little-rio.cabal b/little-rio.cabal
--- a/little-rio.cabal
+++ b/little-rio.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c4d3676360878246e0cc19b1cd117171bed224a6f806b03e54e033317210f478
+-- hash: 5ac2b5e5c9651242e6bae46a58a6674da57dbc16daeff53478cb3b2d8b383e0e
 
 name:           little-rio
-version:        0.2.1
+version:        0.2.2
 synopsis:       When you need just the RIO monad
 description:    Please see the README on GitHub at <https://github.com/ejconlon/little-rio#readme>
 category:       Control
@@ -36,6 +36,7 @@
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds
   build-depends:
       base >=4.12 && <5
+    , deepseq >=1.4.4.0 && <2
     , exceptions >=0.10 && <1
     , microlens >=0.4 && <1
     , microlens-mtl >=0.2 && <1
diff --git a/src/LittleRIO.hs b/src/LittleRIO.hs
--- a/src/LittleRIO.hs
+++ b/src/LittleRIO.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE DeriveAnyClass #-}
+{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE DerivingStrategies #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
@@ -42,6 +45,7 @@
   ) where
 
 import Control.Applicative (liftA2)
+import Control.DeepSeq (NFData (..))
 import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
 import Control.Monad.IO.Class (MonadIO (..))
 import Control.Monad.IO.Unlift (MonadUnliftIO (..), UnliftIO, askUnliftIO)
@@ -52,12 +56,13 @@
 import Control.Monad.Trans.Resource.Internal (MonadResource (..), ReleaseMap, ResourceT (..))
 import Control.Monad.Writer (MonadWriter (..))
 import Data.IORef (IORef, newIORef, readIORef, writeIORef)
+import GHC.Generics (Generic)
 import Lens.Micro (Lens', lens)
 import Lens.Micro.Mtl (view)
 import Prelude
 
 newtype RIO env a = RIO { unRIO :: ReaderT env IO a }
-  deriving (Functor, Applicative, Monad, MonadReader env, MonadIO, MonadThrow, MonadFail, MonadCatch, MonadMask, MonadUnliftIO)
+  deriving newtype (Functor, Applicative, Monad, MonadReader env, MonadIO, MonadThrow, MonadFail, MonadCatch, MonadMask, MonadUnliftIO)
 
 instance Semigroup a => Semigroup (RIO env a) where
   (<>) = liftA2 (<>)
@@ -89,6 +94,9 @@
 
 data SomeRef a = SomeRef !(IO a) !(a -> IO ())
 
+instance NFData (SomeRef a) where
+  rnf (SomeRef r w) = seq r (seq w ())
+
 readSomeRef :: MonadIO m => SomeRef a -> m a
 readSomeRef (SomeRef x _) = liftIO x
 
@@ -113,7 +121,8 @@
 data SimpleStateEnv st env = SimpleStateEnv
   { sseRef :: !(SomeRef st)
   , sseEnv :: !env
-  } deriving (Functor, Foldable, Traversable)
+  } deriving stock (Functor, Foldable, Traversable, Generic)
+    deriving anyclass (NFData)
 
 instance HasStateRef st (SimpleStateEnv st env) where
   stateRefL = lens sseRef (\(SimpleStateEnv _ env) st -> SimpleStateEnv st env)
@@ -153,7 +162,8 @@
 data SimpleWriteEnv w env = SimpleWriteEnv
   { sweRef :: !(SomeRef w)
   , sweEnv :: !env
-  } deriving (Functor, Foldable, Traversable)
+  } deriving stock (Functor, Foldable, Traversable, Generic)
+    deriving anyclass (NFData)
 
 instance HasWriteRef w (SimpleWriteEnv w env) where
   writeRefL = lens sweRef (\(SimpleWriteEnv _ env) w -> SimpleWriteEnv w env)
@@ -208,7 +218,8 @@
 data SimpleResourceEnv env = SimpleResourceEnv
   { sreMap :: !ResourceMap
   , sreEnv :: !env
-  } deriving (Functor, Foldable, Traversable)
+  } deriving stock (Functor, Foldable, Traversable, Generic)
+    deriving anyclass (NFData)
 
 instance HasResourceMap (SimpleResourceEnv env) where
   resourceMapL = lens sreMap (\(SimpleResourceEnv _ env) m -> SimpleResourceEnv m env)
