diff --git a/reactive-glut.cabal b/reactive-glut.cabal
--- a/reactive-glut.cabal
+++ b/reactive-glut.cabal
@@ -1,5 +1,5 @@
 Name:                reactive-glut
-Version:             0.1.6
+Version:             0.1.7
 Cabal-Version:       >= 1.2
 Synopsis:            Connects Reactive and GLUT
 Category:            FRP, graphics
diff --git a/src/FRP/Reactive/GLUT/Adapter.hs b/src/FRP/Reactive/GLUT/Adapter.hs
--- a/src/FRP/Reactive/GLUT/Adapter.hs
+++ b/src/FRP/Reactive/GLUT/Adapter.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE Rank2Types, TypeOperators #-}
 {-# OPTIONS -Wall #-}
 ----------------------------------------------------------------------
 -- |
@@ -22,12 +23,17 @@
 
 import qualified Graphics.UI.GLUT as G
 
-import FRP.Reactive (Behavior,stepper)
+import FRP.Reactive (Event,Behavior,stepper)
 import FRP.Reactive.LegacyAdapters
 
 import FRP.Reactive.GLUT.UI
 import FRP.Reactive.GLUT.SimpleGL
 
+-- while debugging
+-- import Control.Concurrent (forkIO)
+-- import FRP.Reactive.Internal.Reactive (eFutures,isNeverE)
+
+
 -- | Adapter to connect @FRP.Reactive@ with @GLUT@.  Uses given window
 -- title and a simple canned initialization.  Or do your own
 -- initialization and then invoke 'adapt'.
@@ -39,15 +45,23 @@
 adapt :: Sink (UI -> Behavior Action)
 adapt f =
   do clock <- makeClock
-     let mkE = makeEvent clock
+     let mkE :: forall a. Show a => (a :+-> Event a)
+         mkE = makeEvent clock
      (mousePosSink , mousePosE ) <- mkE
      (leftDownSink , leftDown  ) <- mkE
      (rightDownSink, rightDown ) <- mkE
      (keyActionSink, keyActions) <- mkE
      (tickSink     , tick      ) <- mkE
+
+     -- Debugging:
+     -- isNeverE leftDown ==   C-c C-c
+     -- putStrLn ("isNeverE leftDown == " ++ show (isNeverE leftDown))
+     -- forkIO $ do putStrLn ("mouse motion: " ++ show mousePosE)
+     -- forkIO $ do putStrLn ("lbp: " ++ show (eFutures leftDown))
+
      -- TODO: let the initial mouse position be its actual position
-     let windowPoint' p = do -- putStrLn $ "window point " ++ show p
-                             windowPoint p
+     let windowPoint'  p = do -- putStrLn $ "window point " ++ show p
+                              windowPoint p
          mousePosSink' p = do -- putStrLn $ "mouse " ++ show p
                               mousePosSink p
                               -- yield
@@ -61,10 +75,10 @@
        case (k,ks) of
          (G.MouseButton G.LeftButton ,G.Down) -> leftDownSink  ()
          (G.MouseButton G.RightButton,G.Down) -> rightDownSink ()
-         (G.Char c      ,G.Down) -> keyActionSink (Down, Char c)
+         (G.Char       c,G.Down) -> keyActionSink (Down, Char       c)
          (G.SpecialKey s,G.Down) -> keyActionSink (Down, SpecialKey s)
-         (G.Char c      ,G.Up)   -> keyActionSink (Up  , Char c)
-         (G.SpecialKey s,G.Up)   -> keyActionSink (Up  , SpecialKey s)
+         (G.Char       c,G.Up  ) -> keyActionSink (Up  , Char       c)
+         (G.SpecialKey s,G.Up  ) -> keyActionSink (Up  , SpecialKey s)
          _ -> return ()
       )
      updater <- mkUpdater
diff --git a/src/FRP/Reactive/GLUT/UI.hs b/src/FRP/Reactive/GLUT/UI.hs
--- a/src/FRP/Reactive/GLUT/UI.hs
+++ b/src/FRP/Reactive/GLUT/UI.hs
@@ -25,6 +25,8 @@
 import qualified Graphics.UI.GLUT as G
 
 import Data.VectorSpace
+import Data.AffineSpace
+
 import FRP.Reactive
 
 -- | Simple UI type.
@@ -49,6 +51,6 @@
 keyPressed = fmap snd . filterE ((==Down) . fst) . keyAction
 
 -- | Integral tracking frame sampling
-uiIntegral :: (VectorSpace v, Scalar v ~ TimeT) =>
+uiIntegral :: (VectorSpace v, Scalar v ~ Diff TimeT) =>
               (UI -> Behavior v) -> (UI -> Behavior v)
 uiIntegral = liftA2 integral framePass
