diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -49,14 +49,14 @@
 
 ----------------------------------------------------------------------
 -- | Commit a layer stack that changes over time.
-commitLayers :: (ReflexSDL2 t m, MonadDynamicWriter t [Layer m] m)
+commitLayers :: (ReflexSDL2 t m, DynamicWriter t [Layer m] m)
       => Dynamic t [Layer m] -> m ()
 commitLayers = tellDyn
 
 
 ----------------------------------------------------------------------
 -- | Commit one layer that changes over time.
-commitLayer :: (ReflexSDL2 t m, MonadDynamicWriter t [Layer m] m)
+commitLayer :: (ReflexSDL2 t m, DynamicWriter t [Layer m] m)
             => Dynamic t (Layer m) -> m ()
 commitLayer = tellDyn . fmap pure
 
@@ -83,7 +83,7 @@
 
 
 button
-  :: (ReflexSDL2 t m, MonadDynamicWriter t [Layer m] m, MonadReader Renderer m)
+  :: (ReflexSDL2 t m, DynamicWriter t [Layer m] m, MonadReader Renderer m)
   => m (Event t ButtonState)
 button = do
   evMotionData <- getMouseMotionEvent
@@ -118,7 +118,7 @@
 
 
 guest
-  :: (ReflexSDL2 t m, MonadDynamicWriter t [Layer m] m, MonadReader Renderer m)
+  :: (ReflexSDL2 t m, DynamicWriter t [Layer m] m, MonadReader Renderer m)
   => m ()
 guest = do
   -- Print some stuff after the network is built.
@@ -249,10 +249,10 @@
 main = do
   initializeAll
   let ogl = defaultOpenGL{ glProfile = Core Debug 3 3 }
-      cfg = defaultWindow{ windowOpenGL      = Just ogl
-                         , windowResizable   = True
-                         , windowHighDPI     = False
-                         , windowInitialSize = V2 640 480
+      cfg = defaultWindow{ windowGraphicsContext = OpenGLContext ogl
+                         , windowResizable       = True
+                         , windowHighDPI         = False
+                         , windowInitialSize     = V2 640 480
                          }
   window <- createWindow "reflex-sdl2-exe" cfg
   void $ glCreateContext window
diff --git a/reflex-sdl2.cabal b/reflex-sdl2.cabal
--- a/reflex-sdl2.cabal
+++ b/reflex-sdl2.cabal
@@ -1,5 +1,5 @@
 name:                reflex-sdl2
-version:             0.3.0.0
+version:             0.3.0.3
 synopsis:            SDL2 and reflex FRP
 description:         A minimal host for sdl2 based reflex apps.
 homepage:            https://github.com/schell/reflex-sdl2#readme
@@ -23,13 +23,12 @@
   build-depends:       async                  >= 2.1   && < 2.3
                      , base                   >= 4.7   && < 5
                      , containers             >= 0.5   && < 0.7
-                     , dependent-sum          >= 0.4   && < 0.5
+                     , dependent-sum          >= 0.7   && < 0.8
                      , exception-transformers >= 0.4   && < 0.5
-                     , ref-tf                 >= 0.4   && < 0.5
-                     , mtl                    >= 2.2   && < 2.3
-                     , primitive              >= 0.6   && < 0.7
-                     , reflex                 >= 0.5   && < 0.6
-                     , sdl2                   >= 2.3   && < 2.5
+                     , ref-tf                 >= 0.5   && < 0.6
+                     , mtl                    >= 2.3   && < 2.4
+                     , reflex                 >= 0.9   && < 0.10
+                     , sdl2                   >= 2.5   && < 2.6
                      , stm                    >= 2.4   && < 2.6
 
   default-language:    Haskell2010
@@ -40,7 +39,7 @@
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
   build-depends:       base
                      , mtl
-                     , reflex                 >= 0.5   && < 0.6
+                     , reflex                 >= 0.9
                      , reflex-sdl2
   default-language:    Haskell2010
 
diff --git a/src/Reflex/SDL2.hs b/src/Reflex/SDL2.hs
--- a/src/Reflex/SDL2.hs
+++ b/src/Reflex/SDL2.hs
@@ -7,7 +7,6 @@
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE RecordWildCards            #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
-{-# LANGUAGE TupleSections              #-}
 {-# LANGUAGE TypeFamilies               #-}
 {-# LANGUAGE UndecidableInstances       #-}
 -- | This module contains a minimum yet convenient API needed to get started
@@ -55,10 +54,9 @@
 import           Control.Concurrent       (newChan, newEmptyMVar, putMVar,
                                            readChan, takeMVar)
 import           Control.Concurrent.Async (async, cancel)
-import           Control.Monad            (forM_, unless, void)
+import           Control.Monad            (forM_, unless, void, guard)
 import           Control.Monad.Fix        (MonadFix)
 import           Control.Monad.Identity   (Identity (..))
-import           Control.Monad.IO.Class   (MonadIO, liftIO)
 import           Control.Monad.Reader
 import           Control.Monad.Ref        (readRef)
 import           Data.Dependent.Sum       (DSum ((:=>)))
@@ -66,7 +64,7 @@
 import           Data.Word                (Word32)
 import           GHC.Conc                 (atomically, newTVar, readTVar,
                                            readTVarIO, writeTVar)
-import           Reflex                   hiding (Additive)
+import           Reflex
 import           Reflex.Host.Class
 import           SDL                      hiding (Event, delay)
 
diff --git a/src/Reflex/SDL2/Base.hs b/src/Reflex/SDL2/Base.hs
--- a/src/Reflex/SDL2/Base.hs
+++ b/src/Reflex/SDL2/Base.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE KindSignatures             #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
@@ -15,10 +14,11 @@
   ) where
 
 
+import           Control.Monad.Fix        (MonadFix)
 import           Control.Monad.Exception  (MonadException)
-import           Control.Monad.IO.Class   (MonadIO)
 import           Control.Monad.Reader
-import           Reflex                   hiding (Additive)
+import           Data.Kind                (Type)
+import           Reflex
 import           Reflex.Host.Class
 
 import           Reflex.SDL2.Class
@@ -27,7 +27,7 @@
 
 ------------------------------------------------------------------------------
 -- | Provides an implementation of the 'HasSDL2Events' type class.
-newtype ReflexSDL2T t (m :: * -> *) a =
+newtype ReflexSDL2T t (m :: Type -> Type) a =
   ReflexSDL2T { unReflexSDL2T :: ReaderT (SystemEvents t) m a }
 
 
