diff --git a/criterion-plus.cabal b/criterion-plus.cabal
--- a/criterion-plus.cabal
+++ b/criterion-plus.cabal
@@ -1,7 +1,7 @@
 name:
   criterion-plus
 version:
-  0.1.2
+  0.1.3
 synopsis:
   Enhancement of the "criterion" benchmarking library
 description:
@@ -71,7 +71,7 @@
     string-conversions == 0.3.*,
     th-printf == 0.3.*,
     -- control:
-    monad-control == 0.3.*,
+    monad-control == 1.0.*,
     transformers-base == 0.4.*,
     deepseq == 1.3.*,
     transformers,
diff --git a/library/CriterionPlus/Monads.hs b/library/CriterionPlus/Monads.hs
--- a/library/CriterionPlus/Monads.hs
+++ b/library/CriterionPlus/Monads.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UndecidableInstances #-}
 -- |
 -- Builder monads.
 module CriterionPlus.Monads where
@@ -161,11 +162,11 @@
   deriving (Functor, Applicative, Monad, MonadIO, MonadBase IO)
 
 instance MonadBaseControl IO Subject where
-  newtype StM Subject a = SubjectStM (StM (StateT SampleStartTime (StateT SampleTotalTime IO)) a)
+  type StM Subject a = StM (StateT SampleStartTime (StateT SampleTotalTime IO)) a
   liftBaseWith run =
     Subject $ liftBaseWith $ \runStateInBase -> 
-    run $ \(Subject s) -> liftM SubjectStM $ runStateInBase s
-  restoreM (SubjectStM s) = Subject $ restoreM s
+    run $ \(Subject s) -> runStateInBase s
+  restoreM s = Subject $ restoreM s
 
 
 type SubjectReport = (Name, S.Sample, C.SampleAnalysis, C.Outliers)
