diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2.8.0 - 140122
+* added MonadIO and MonadBase instances for SignalGen (Mitsutoshi Aoe)
+
 2.7.0.2 - 120401
 * added some inlining annotations (courtesy of Takano Akio)
 
diff --git a/FRP/Elerea/Clocked.hs b/FRP/Elerea/Clocked.hs
--- a/FRP/Elerea/Clocked.hs
+++ b/FRP/Elerea/Clocked.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 
 {-|
 
@@ -98,7 +99,9 @@
 import Control.Applicative
 import Control.Concurrent.MVar
 import Control.Monad
+import Control.Monad.Base
 import Control.Monad.Fix
+import Control.Monad.IO.Class
 import Data.IORef
 import Data.Maybe
 import Prelude hiding (until)
@@ -176,6 +179,12 @@
 
 instance MonadFix SignalGen where
     mfix f = SG $ \p1 p2 -> mfix $ \x -> unSG (f x) p1 p2
+
+instance MonadIO SignalGen where
+    liftIO = execute
+
+instance MonadBase SignalGen SignalGen where
+    liftBase = id
 
 getUpdate :: Update -> IO (Maybe (Update, UpdateAction))
 getUpdate upd@(USig ptr) = (fmap.fmap) ((,) upd) (deRefWeak ptr)
diff --git a/FRP/Elerea/Param.hs b/FRP/Elerea/Param.hs
--- a/FRP/Elerea/Param.hs
+++ b/FRP/Elerea/Param.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 
 {-|
 
@@ -47,7 +48,9 @@
 import Control.Applicative
 import Control.Concurrent.MVar
 import Control.Monad
+import Control.Monad.Base
 import Control.Monad.Fix
+import Control.Monad.IO.Class
 import Data.IORef
 import Data.Maybe
 import Prelude hiding (until)
@@ -117,6 +120,12 @@
 
 instance MonadFix (SignalGen p) where
   mfix f = SG $ \p i -> mfix $ \x -> unSG (f x) p i
+
+instance MonadIO (SignalGen p) where
+  liftIO = execute
+
+instance MonadBase (SignalGen p) (SignalGen p) where
+  liftBase = id
 
 -- | Embedding a signal into an 'IO' environment.  Repeated calls to
 -- the computation returned cause the whole network to be updated, and
diff --git a/FRP/Elerea/Simple.hs b/FRP/Elerea/Simple.hs
--- a/FRP/Elerea/Simple.hs
+++ b/FRP/Elerea/Simple.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 
 {-|
 
@@ -43,7 +44,9 @@
 import Control.Applicative
 import Control.Concurrent.MVar
 import Control.Monad
+import Control.Monad.Base
 import Control.Monad.Fix
+import Control.Monad.IO.Class
 import Data.IORef
 import Data.Maybe
 import Prelude hiding (until)
@@ -111,6 +114,12 @@
 
 instance MonadFix SignalGen where
     mfix f = SG $ \p -> mfix $ \x -> unSG (f x) p
+
+instance MonadIO SignalGen where
+    liftIO = execute
+
+instance MonadBase SignalGen SignalGen where
+    liftBase = id
 
 -- | Embedding a signal into an 'IO' environment.  Repeated calls to
 -- the computation returned cause the whole network to be updated, and
diff --git a/elerea.cabal b/elerea.cabal
--- a/elerea.cabal
+++ b/elerea.cabal
@@ -1,5 +1,5 @@
 Name:                elerea
-Version:             2.7.0.2
+Version:             2.8.0
 Cabal-Version:       >= 1.2
 Synopsis:            A minimalistic FRP library
 Category:            reactivity, FRP
@@ -37,7 +37,7 @@
  paper /Efficient and Compositional Higher-Order Streams/
  (<http://sgate.emt.bme.hu/documents/patai/publications/PataiWFLP2010.pdf>).
  .
- Additional contributions: Takano Akio
+ Additional contributions: Takano Akio, Mitsutoshi Aoe
 
 Author:              Patai Gergely
 Maintainer:          Patai Gergely (patai.gergely@gmail.com)
@@ -57,5 +57,5 @@
     FRP.Elerea.Param
     FRP.Elerea.Clocked
 
-  Build-Depends:       base >= 4 && < 5, containers
+  Build-Depends:       base >= 4 && < 5, containers, transformers, transformers-base
   ghc-options:         -Wall -O2
