diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+0.5.1.3
+-------
+* Clean up MonadFork instances
+
 0.5.1.2
 -------
 * Add a concurrent chat server example
diff --git a/concurrent-state.cabal b/concurrent-state.cabal
--- a/concurrent-state.cabal
+++ b/concurrent-state.cabal
@@ -1,5 +1,5 @@
 name:                concurrent-state
-version:             0.5.1.2
+version:             0.5.1.3
 synopsis:            MTL-like library using TVars
 description:         State, RWS backed by TVar.
 homepage:            https://github.com/joelteon/concurrent-state
diff --git a/src/Control/Concurrent/Lifted/Fork.hs b/src/Control/Concurrent/Lifted/Fork.hs
--- a/src/Control/Concurrent/Lifted/Fork.hs
+++ b/src/Control/Concurrent/Lifted/Fork.hs
@@ -17,6 +17,7 @@
 
 import qualified Control.Concurrent as C
 import           Control.Monad.Catch
+import           Control.Monad.Trans.Identity
 import           Control.Monad.Reader
 
 -- | Generalize 'forkIO' to 'MonadIO'.
@@ -29,6 +30,11 @@
     fork = C.forkIO
     forkOn = C.forkOn
     forkOS = C.forkOS
+
+instance MonadFork m => MonadFork (IdentityT m) where
+    fork (IdentityT m) = IdentityT (fork m)
+    forkOn i (IdentityT m) = IdentityT (forkOn i m)
+    forkOS (IdentityT m) = IdentityT (forkOS m)
 
 instance MonadFork m => MonadFork (ReaderT r m) where
     fork (ReaderT m) = ReaderT (fork . m)
diff --git a/src/Control/Monad/RWS/Concurrent/Lazy.hs b/src/Control/Monad/RWS/Concurrent/Lazy.hs
--- a/src/Control/Monad/RWS/Concurrent/Lazy.hs
+++ b/src/Control/Monad/RWS/Concurrent/Lazy.hs
@@ -122,7 +122,7 @@
 
 instance (Monoid w, MonadIO m, MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (RWSC r w s m)
 
-instance MonadFork m => MonadFork (RWSC r w s m) where
+instance (Monoid w, MonadFork m) => MonadFork (RWSC r w s m) where
     fork = liftFork fork
     forkOn i = liftFork (forkOn i)
     forkOS = liftFork forkOS
diff --git a/src/Control/Monad/RWS/Concurrent/Strict.hs b/src/Control/Monad/RWS/Concurrent/Strict.hs
--- a/src/Control/Monad/RWS/Concurrent/Strict.hs
+++ b/src/Control/Monad/RWS/Concurrent/Strict.hs
@@ -122,7 +122,7 @@
 
 instance (Monoid w, MonadIO m, MonadReader r m, MonadWriter w m, MonadState s m) => MonadRWS r w s (RWSC r w s m)
 
-instance MonadFork m => MonadFork (RWSC r w s m) where
+instance (Monoid w, MonadFork m) => MonadFork (RWSC r w s m) where
     fork = liftFork fork
     forkOn i = liftFork (forkOn i)
     forkOS = liftFork forkOS
