diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,6 @@
+0.2.11
+------
+
+Switch to MTL 2.3 and fix [`Control.Monad.Fix` reexport
+issue](https://github.com/nilscc/mstate/issues/2).
+
diff --git a/mstate.cabal b/mstate.cabal
--- a/mstate.cabal
+++ b/mstate.cabal
@@ -8,13 +8,15 @@
 Author:         Nils Schweinsberg
 Maintainer:     <mail@nils.cc>
 
-Version:        0.2.10
+Version:        0.2.11
 Category:       Concurrency, Monads
 License:        BSD3
 License-File:   LICENSE
 Cabal-Version:  >= 1.10
 Build-Type:     Simple
 
+extra-source-files: CHANGELOG.md
+
 source-repository head
   type:         git
   location:     https://github.com/nilscc/mstate
@@ -25,7 +27,7 @@
     default-language:   Haskell2010
     Build-Depends:
         base                  == 4.*,
-        mtl                   >= 2.2.2 && < 2.3,
+        mtl                   >= 2.3 && < 2.4,
         stm                   >= 2.5.0 && < 2.6,
         monad-peel            >= 0.3 && < 0.4,
         fail                  >= 4.9.0 && < 4.10
diff --git a/src/Control/Concurrent/MState.hs b/src/Control/Concurrent/MState.hs
--- a/src/Control/Concurrent/MState.hs
+++ b/src/Control/Concurrent/MState.hs
@@ -41,6 +41,7 @@
 
 import Control.Applicative
 import Control.Monad
+import Control.Monad.Fix
 import Control.Monad.State.Class
 import Control.Monad.Cont
 import Control.Monad.Except
@@ -229,7 +230,6 @@
     fail str = MState $ \_ -> Fail.fail str
 
 instance (Monad m) => Monad (MState t m) where
-    return a = MState $ \_ -> return a
     m >>= k  = MState $ \t -> do
         a <- runMState' m t
         runMState' (k a) t
@@ -238,7 +238,7 @@
     fmap f m = MState $ \t -> fmap f (runMState' m t)
 
 instance (Applicative m, Monad m) => Applicative (MState t m) where
-    pure  = return
+    pure a = MState $ \_ -> return a
     (<*>) = ap
 
 instance (Alternative m, Monad m) => Alternative (MState t m) where
