diff --git a/Yampa.cabal b/Yampa.cabal
--- a/Yampa.cabal
+++ b/Yampa.cabal
@@ -1,5 +1,5 @@
 name: Yampa
-version: 0.9.2.2
+version: 0.9.2.3
 cabal-Version: >= 1.2
 license: BSD3
 license-file: LICENSE
diff --git a/src/FRP/Yampa.hs b/src/FRP/Yampa.hs
--- a/src/FRP/Yampa.hs
+++ b/src/FRP/Yampa.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE GADTs, Rank2Types #-}
+{-# LANGUAGE GADTs, Rank2Types, CPP #-}
 -----------------------------------------------------------------------------------------
 -- |
 -- Module      :  FRP.Yampa
@@ -308,6 +308,11 @@
 import Control.Monad (unless)
 import System.Random (RandomGen(..), Random(..))
 
+#if __GLASGOW_HASKELL__ >= 610
+import qualified Control.Category (Category(..))
+#else
+#endif
+
 import Control.Arrow
 import FRP.Yampa.Diagnostics
 import FRP.Yampa.Miscellany (( # ), dup, swap)
@@ -626,9 +631,7 @@
 -- wherever that assumption is exploited.
 vfyNoEv :: Event a -> b -> b
 vfyNoEv NoEvent b = b
-vfyNoEv _       _  = usrErr "AFRP" "vfyNoEv"
-                            "Assertion failed: Functions on events must not \
-			    \map NoEvent to Event."
+vfyNoEv _       _  = usrErr "AFRP" "vfyNoEv" "Assertion failed: Functions on events must not map NoEvent to Event."
 
 
 -- Freezes a "running" signal function, i.e., turns it into a continuation in
@@ -644,14 +647,23 @@
 ------------------------------------------------------------------------------
 -- Arrow instance and implementation
 ------------------------------------------------------------------------------
+#if __GLASGOW_HASKELL__ >= 610
+instance Control.Category.Category SF where
+     (.) = flip compPrim 
+     id = SF $ \x -> (sfId,x)
+#else
+#endif
 
 instance Arrow SF where
     arr    = arrPrim
-    (>>>)  = compPrim
     first  = firstPrim
     second = secondPrim
     (***)  = parSplitPrim
     (&&&)  = parFanOutPrim
+#if __GLASGOW_HASKELL__ >= 610
+#else
+    (>>>)  = compPrim
+#endif
 
 
 -- Lifting.
@@ -797,9 +809,7 @@
 		(s1', NoEvent, NoEvent) -> ((s1', s2, cne), cne, cne)
 		(s1', Event b, NoEvent) ->
 		    let (s2', c, cne') = f2 s2 b in ((s1', s2', cne'), c, cne')
-                _ -> usrErr "AFRP" "cpXX"
-                            "Assertion failed: Functions on events must not \
-			    \map NoEvent to Event."
+                _ -> usrErr "AFRP" "cpXX" "Assertion failed: Functions on events must not map NoEvent to Event."
 -- !!! 2005-06-28: Why isn't SFCpAXA (FDC ...) checked for?
 -- !!! No invariant rules that out, and it would allow to drop the
 -- !!! event processor ... Does that happen elsewhere?
@@ -1169,9 +1179,7 @@
                     case f1 s a of
                         (s', NoEvent, NoEvent) -> (s', f2ne,  f2ne)
                         (s', eb,      NoEvent) -> (s', f2 eb, f2ne)
-		        _ -> usrErr "AFRP" "cpXEAux"
-                                    "Assertion failed: Functions on events \
-                                    \must not map NoEvent to Event."
+		        _ -> usrErr "AFRP" "cpXEAux" "Assertion failed: Functions on events must not map NoEvent to Event."
         cpXEAux fd2 _ _ (SFCpAXA _ fd11 sf12 fd13) =
             cpAXA fd11 sf12 (fdComp fd13 fd2)
 	cpXEAux fd2 f2 f2ne sf1 = SFCpAXA tf FDI sf1 fd2
diff --git a/tests/testAFRP.cabal b/tests/testAFRP.cabal
--- a/tests/testAFRP.cabal
+++ b/tests/testAFRP.cabal
@@ -14,7 +14,7 @@
 
 Executable:          testAFRP
 Main-is:             testAFRPMain.hs
-ghc-options:         -O -fglasgow-exts 
+ghc-options:         -O2 -fglasgow-exts 
 Other-modules:      AFRPTests,
                     AFRPTestsCommon,
                     AFRPTestsArr,
