diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+0.4.2.0
+-------
+* Remove MonadCatch constraint from MonadFork
+
 0.4.1.0
 -------
 * Add forkWithUnmask, forkOnWithUnmask to Control.Concurrent.Lifted.Fork
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.4.1.0
+version:             0.4.2.0
 synopsis:            MTL-like library using TVars
 description:         State 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
@@ -20,7 +20,7 @@
 import           Control.Monad.Reader
 
 -- | Generalize 'forkIO' to 'MonadIO'.
-class (MonadIO m, MonadCatch m) => MonadFork m where
+class MonadIO m => MonadFork m where
     fork :: m () -> m C.ThreadId
     forkOn :: Int -> m () -> m C.ThreadId
     forkOS :: m () -> m C.ThreadId
@@ -36,14 +36,14 @@
     forkOS (ReaderT m) = ReaderT (forkOS . m)
 
 -- | Generalized 'C.forkFinally'.
-forkFinally :: MonadFork m => m a -> (Either SomeException a -> m ()) -> m C.ThreadId
+forkFinally :: (MonadCatch m, MonadFork m) => m a -> (Either SomeException a -> m ()) -> m C.ThreadId
 forkFinally action andThen = mask $ \restore ->
     fork $ try (restore action) >>= andThen
 
 -- | Generalized 'C.forkIOWithUnmask'.
-forkWithUnmask :: MonadFork m => ((forall a. m a -> m a) -> m ()) -> m C.ThreadId
+forkWithUnmask :: (MonadCatch m, MonadFork m) => ((forall a. m a -> m a) -> m ()) -> m C.ThreadId
 forkWithUnmask = fork . mask
 
 -- | Generalized 'C.forkOnWithUnmask'.
-forkOnWithUnmask :: MonadFork m => Int -> ((forall a. m a -> m a) -> m ()) -> m C.ThreadId
+forkOnWithUnmask :: (MonadCatch m, MonadFork m) => Int -> ((forall a. m a -> m a) -> m ()) -> m C.ThreadId
 forkOnWithUnmask i = forkOn i . mask
