diff --git a/reactive.cabal b/reactive.cabal
--- a/reactive.cabal
+++ b/reactive.cabal
@@ -1,5 +1,5 @@
 Name:                reactive
-Version:             0.8.8
+Version:             0.9.0
 Synopsis:            Simple foundation for functional reactive programming
 Category:            reactivity, FRP
 Description:
diff --git a/src/FRP/Reactive/Internal/Timing.hs b/src/FRP/Reactive/Internal/Timing.hs
--- a/src/FRP/Reactive/Internal/Timing.hs
+++ b/src/FRP/Reactive/Internal/Timing.hs
@@ -12,7 +12,7 @@
 -- 
 ----------------------------------------------------------------------
 
-module FRP.Reactive.Internal.Timing (mkUpdater,sleepPast) where
+module FRP.Reactive.Internal.Timing (adaptE,mkUpdater,sleepPast) where
 
 import Data.Monoid (mempty)
 import Control.Applicative ((<$>))
@@ -24,14 +24,23 @@
 -- For IO monoid
 import Control.Instances ()
 
-import FRP.Reactive.Reactive (TimeT)
+import FRP.Reactive.Reactive (TimeT,Event)
 import FRP.Reactive.Improving (Improving,exact)
 import FRP.Reactive.Behavior (Behavior)
 
 import FRP.Reactive.Internal.Misc (Action,Sink)
-import FRP.Reactive.Internal.Reactive (forkR)
+import FRP.Reactive.Internal.Reactive (forkR,runE)
 import FRP.Reactive.Internal.Behavior (unb)
 import FRP.Reactive.Internal.Fun
+import FRP.Reactive.Internal.Clock (makeClock,cGetTime)
+
+
+
+-- | Execute an action-valued event.
+adaptE :: Sink (Event Action)
+adaptE e = do clock <- makeClock
+              runE (sleepPast (cGetTime clock) . exact) e
+
 
 -- | If a sample variable is full, act on the contents, leaving it empty.
 drainS :: SampleVar a -> Sink (Sink a)
diff --git a/src/FRP/Reactive/LegacyAdapters.hs b/src/FRP/Reactive/LegacyAdapters.hs
--- a/src/FRP/Reactive/LegacyAdapters.hs
+++ b/src/FRP/Reactive/LegacyAdapters.hs
@@ -15,11 +15,11 @@
 module FRP.Reactive.LegacyAdapters
   ( Sink, Action
   , Clock, makeClock, cGetTime
-  , makeEvent
-  , mkUpdater
+  , adaptE, makeEvent, mkUpdater
   ) where
 
-import FRP.Reactive.Internal.Misc   (Sink,Action)
-import FRP.Reactive.Internal.Clock  (Clock,makeClock,cGetTime)
-import FRP.Reactive.Internal.TVal   (makeEvent)
-import FRP.Reactive.Internal.Timing (mkUpdater)
+import FRP.Reactive.Internal.Misc     (Sink,Action)
+import FRP.Reactive.Internal.Clock    (Clock,makeClock,cGetTime)
+import FRP.Reactive.Internal.TVal     (makeEvent)
+import FRP.Reactive.Internal.Timing   (adaptE,mkUpdater)
+
