diff --git a/Control/Linear.hs b/Control/Linear.hs
--- a/Control/Linear.hs
+++ b/Control/Linear.hs
@@ -133,33 +133,6 @@
 {-# INLINE[0] assoc4 #-}
 assoc4 (x, (y, z)) = ((x, y), z)
 
-{-# RULES
-"assoc"[1] forall a a2 a3. assoc1 >>== \_ -> bimap a (bimap a2 a3) = bimap (bimap a a2) a3 >>== \x -> assoc1 >>== \_ -> rtn (assoc3 x)
-"assoc2"[1] forall a a2 a3. assoc2 >>== \_ -> bimap (bimap a a2) a3 = bimap a (bimap a2 a3) >>== \x -> assoc2 >>== \_ -> rtn (assoc4 x)
-"drop"[1] forall a. drop1 >>== \_ -> a = bimap id a >>== \((), x) -> drop1 >>== \_ -> rtn x
-"drop2"[1] forall a. drop2 >>== \_ -> a = bimap a id >>== \(x, ()) -> drop2 >>== \_ -> rtn x
-"swap"[1] forall a a2. swap >>== \_ -> bimap a a2 = bimap a2 a >>== \(x, y) -> swap >>== \_ -> rtn (y, x)
-"fuseMaps"[1] forall a a2 a3 a4. bimap a3 a4 >>== \_ -> bimap a a2
-	= bimap (a3 >>== \_ -> a) (a4 >>== \_ -> a2)
-"fuseMaps2"[1] forall a a2 a3 a4. bimap a3 a4 >>== \(x, y) -> bimap (a x) (a2 y)
-	= bimap (a3 >>== a) (a4 >>== a2)
-"fuseMaps3"[1] forall a a2 a3 a4 a5. bimap a3 a4 >>== \_ -> bimap a a2 >>== a5
-	= bimap (a3 >>== \_ -> a) (a4 >>== \_ -> a2) >>== a5
-"fuseMaps4"[1] forall a a2 a3 a4 a5. bimap a3 a4 >>== \(x, y) -> bimap (a x) (a2 y) >>== a5
-	= bimap (a3 >>== a) (a4 >>== a2) >>== a5
-"monad"[1] forall x a. rtn x >>== a = a x
-"monad2"[1] forall a a2 a3. a >>== a2 >>== a3 = a >>== \x -> a2 x >>== a3
-"drop3"[1] drop1 >>== \_ -> undrop1 = id
-"drop4"[1] drop2 >>== \_ -> undrop2 = id
-"drop5"[1] undrop1 >>== \_ -> drop1 = id
-"drop6"[1] undrop2 >>== \_ -> drop2 = id
-"assoc3"[1] assoc1 >>== \_ -> assoc2 = id
-"assoc4"[1] assoc2 >>== \_ -> assoc1 = id
-"swap2"[1] swap >>== \_ -> swap = id
-"inlinearrow" forall a a2. a >>> a2 = a2 . a
-"inlinecompose" forall a a2. a . a2 = a2 >>== \_ -> a
-  #-}
-
 ------------------------------------------------------
 
 {-# INLINE[2] void' #-}
diff --git a/Control/Monad/Distributive.hs b/Control/Monad/Distributive.hs
--- a/Control/Monad/Distributive.hs
+++ b/Control/Monad/Distributive.hs
@@ -6,7 +6,6 @@
 import Control.Monad.State
 import Control.Monad.Writer
 import Control.Monad.Reader
-import Control.Monad.Maybe
 import Control.Monad.Error
 import Control.Monad.List
 import Control.Monad.Identity
@@ -50,9 +49,9 @@
 class Rightdistr m where
 	rdist :: (Monad (n Identity), Monad (n x), MonadTrans n, MFunctor n, Monad x) => n Identity (m x t) -> m (n x) t
 
-instance Leftdistr MaybeT where
+{-instance Leftdistr MaybeT where
 	ldist m = runMaybeT m >>= return . maybe mzero return
-
+-}
 instance (Error t) => Leftdistr (ErrorT t) where
 	ldist m = runErrorT m >>= return . either throwError return
 
diff --git a/Control/Monad/IOT.hs b/Control/Monad/IOT.hs
--- a/Control/Monad/IOT.hs
+++ b/Control/Monad/IOT.hs
@@ -13,7 +13,7 @@
 import Data.Typeable
 import Unsafe.Coerce
 
-data State = State !(State# RealWorld) !(MVar ())
+data State = State (State# RealWorld) !(MVar ())
 
 -- | An IO monad transformer.
 --
diff --git a/MonadCompose.cabal b/MonadCompose.cabal
--- a/MonadCompose.cabal
+++ b/MonadCompose.cabal
@@ -1,5 +1,5 @@
 name:                MonadCompose
-version:             0.8.3.0
+version:             0.8.3.1
 synopsis:            Methods for composing monads.
 description:         Methods for composing monads.
   .
@@ -21,5 +21,5 @@
 library
   exposed-modules:     Control.Monad.IOT, Control.Monad.Distributive, Control.Monad.PlusMonad, Control.Monad.Lifter, Control.Linear
   -- other-modules: 
-  build-depends:       base >=4 && <=5, ghc-prim ==0.3.*, mtl ==2.1.*, mmorph ==1.0.*, monad-products, transformers, MaybeT, random, data-default, parallel ==3.2.*, comonad ==3.0.*, transformers-compat ==0.4.*, monad-loops >= 0.4.2.1
+  build-depends:       base >=4 && <=5, ghc-prim, mtl >= 2.2, mmorph ==1.0.*, monad-products, transformers, random, data-default, parallel ==3.2.*, transformers-compat ==0.4.*, monad-loops >= 0.4.2.1
   ghc-options:         -fno-cse
