diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -3,7 +3,6 @@
 {-# LANGUAGE TypeFamilies #-}
 
 -- base
-import qualified Control.Category as Category
 import Data.Maybe (maybeToList)
 
 -- rhine-gloss
@@ -28,6 +27,7 @@
     1 -> flowGloss defaultSettings pureClSF
     2 -> flowGlossCombined defaultSettings pureRhine
     3 -> flowGlossIO defaultSettings ioRhine
+    _ -> error "Invalid input"
 
 -- | Run the gears simulation with the pure backend synchronously.
 pureClSF = currentEvent >>> arr maybeToList >>> sim
diff --git a/rhine-gloss.cabal b/rhine-gloss.cabal
--- a/rhine-gloss.cabal
+++ b/rhine-gloss.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                rhine-gloss
-version:             0.7.1
+version:             0.8.0.0
 synopsis:            Gloss backend for Rhine
 description:
   This package provides a simple wrapper for the `gloss` library,
@@ -26,7 +26,7 @@
 source-repository this
   type:     git
   location: git@github.com:turion/rhine.git
-  tag:      v0.7.1
+  tag:      v0.8.0.0
 
 
 library
@@ -38,12 +38,14 @@
     FRP.Rhine.Gloss.Pure.Combined
   build-depends:       base         >= 4.11 && < 4.16
                      , transformers >= 0.5
-                     , rhine        == 0.7.1
-                     , dunai        >= 0.6
+                     , rhine        == 0.8.0.0
+                     , dunai        >= 0.8
                      , gloss        >= 1.12
   hs-source-dirs:      src
   default-language:    Haskell2010
-  ghc-options:         -Wall
+  ghc-options:         -W
+  if flag(dev)
+    ghc-options: -Werror
 
 executable rhine-gloss-gears
   main-is:             Main.hs
@@ -51,4 +53,11 @@
   build-depends:       base         >= 4.9 && < 5
                      , rhine-gloss
   default-language:    Haskell2010
-  ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
+  ghc-options:         -W -threaded -rtsopts -with-rtsopts=-N
+  if flag(dev)
+    ghc-options: -Werror
+
+flag dev
+  description: Enable warnings as errors. Active on ci.
+  default: False
+  manual: True
diff --git a/src/FRP/Rhine/Gloss/IO.hs b/src/FRP/Rhine/Gloss/IO.hs
--- a/src/FRP/Rhine/Gloss/IO.hs
+++ b/src/FRP/Rhine/Gloss/IO.hs
@@ -20,9 +20,7 @@
   where
 
 -- base
-import qualified Control.Category as Category
 import Control.Concurrent
-import Control.Concurrent.MVar
 import Data.Functor (void)
 import Data.IORef
 
@@ -125,10 +123,10 @@
       getPic               (_, _, _, picRef)   = readIORef picRef
       -- Only try to put so this doesn't hang in case noone is listening for events or ticks
       handleEvent event    vars@(_, eventVar, _, _) = do
-        result <- tryPutMVar eventVar event
+        void $ tryPutMVar eventVar event
         return vars
       simStep     diffTime vars@(timeVar,  _, _, _) = do
-        result <- tryPutMVar timeVar diffTime
+        void $ tryPutMVar timeVar diffTime
         return vars
   void $ liftIO $ forkIO $ playIO display backgroundColor stepsPerSecond vars getPic handleEvent simStep
   runReaderT (unGlossConcT glossLoop) vars
diff --git a/src/FRP/Rhine/Gloss/Pure/Combined.hs b/src/FRP/Rhine/Gloss/Pure/Combined.hs
--- a/src/FRP/Rhine/Gloss/Pure/Combined.hs
+++ b/src/FRP/Rhine/Gloss/Pure/Combined.hs
@@ -11,15 +11,6 @@
 
 module FRP.Rhine.Gloss.Pure.Combined where
 
--- transformers
-import Control.Monad.Trans.Class
-import Control.Monad.Trans.Reader
-import Control.Monad.Trans.Writer
-
--- dunai
-import qualified Control.Monad.Trans.MSF.Reader as MSFReader
-import Data.MonadicStreamFunction.InternalCore
-
 -- rhine
 import FRP.Rhine
 import FRP.Rhine.Reactimation.ClockErasure
