diff --git a/Data/Repa/Flow/Auto/Base.hs b/Data/Repa/Flow/Auto/Base.hs
--- a/Data/Repa/Flow/Auto/Base.hs
+++ b/Data/Repa/Flow/Auto/Base.hs
@@ -112,15 +112,14 @@
 --   * All elements are stuffed into a single chunk,
 --     and each stream is given the same chunk.
 --
-fromArray :: Build a
-          => Int -> Array a -> IO (Sources a)
+fromArray :: Int -> Array a -> IO (Sources a)
 fromArray n arr = G.fromList n [arr]
 {-# INLINE_FLOW fromArray #-}
 
 
 -- | Like `fromArray` but take an array of arrays.
 --   Each of the inner arrays is packed into a single chunk.
-fromArrays :: (Elem a, Build a)
+fromArrays :: Elem a
            => Int -> Array (Array a) -> IO (Sources a)
 fromArrays n arrs = G.fromList n (A.toList arrs)
 {-# INLINE_FLOW fromArrays #-}
diff --git a/Data/Repa/Flow/Auto/IO.hs b/Data/Repa/Flow/Auto/IO.hs
--- a/Data/Repa/Flow/Auto/IO.hs
+++ b/Data/Repa/Flow/Auto/IO.hs
@@ -187,7 +187,7 @@
 -- @
 --
 sinkFormatLn
-        :: (Packable format, Bulk A (Value format), Show format)
+        :: (Packable format, Bulk A (Value format))
         => format                       -- ^ Binary format for each value.
         -> IO ()                        -- ^ Action when a value cannot be serialized.
         -> Array B Bucket               -- ^ Output buckets.
diff --git a/Data/Repa/Flow/Chunked/Map.hs b/Data/Repa/Flow/Chunked/Map.hs
--- a/Data/Repa/Flow/Chunked/Map.hs
+++ b/Data/Repa/Flow/Chunked/Map.hs
@@ -29,7 +29,7 @@
 
 -- | Combine the elements of two flows with the given function.
 szipWith_ii 
-        :: ( Ord i, States i m
+        :: ( States i m
            , BulkI   lSrc1 a, BulkI lSrc2 b
            , TargetI lDst c
            , Windowable lSrc1 a, Windowable lSrc2 b)
diff --git a/Data/Repa/Flow/Generic/Connect.hs b/Data/Repa/Flow/Generic/Connect.hs
--- a/Data/Repa/Flow/Generic/Connect.hs
+++ b/Data/Repa/Flow/Generic/Connect.hs
@@ -23,7 +23,7 @@
 --   Given two argument sinks, yield a result sink.
 --   Pushing to the result sink causes the same element to be pushed to both
 --   argument sinks. 
-dup_oo  :: (Ord i, States i m)
+dup_oo  :: (States i m)
         => Sinks i m a -> Sinks i m a -> m (Sinks i m a)
 dup_oo (Sinks n1 push1 eject1) (Sinks n2 push2 eject2)
  = return $ Sinks (min n1 n2) push_dup eject_dup
diff --git a/Data/Repa/Flow/Generic/Operator.hs b/Data/Repa/Flow/Generic/Operator.hs
--- a/Data/Repa/Flow/Generic/Operator.hs
+++ b/Data/Repa/Flow/Generic/Operator.hs
@@ -177,9 +177,8 @@
 -- 
 --   Example: groups [4, 4, 4, 3, 3, 1, 1, 1, 4] = [3, 2, 3, 1]
 --
-groups_i 
-        :: (Ord i, Monad m, Eq a)
-        => Sources i m a -> m (Sources i m Int)
+groups_i :: (Monad m, Eq a)
+         => Sources i m a -> m (Sources i m Int)
 
 groups_i (Sources n pullV)
  = return $ Sources n pull_n
diff --git a/Data/Repa/Flow/Generic/Process.hs b/Data/Repa/Flow/Generic/Process.hs
--- a/Data/Repa/Flow/Generic/Process.hs
+++ b/Data/Repa/Flow/Generic/Process.hs
@@ -18,7 +18,7 @@
 --   At each point we can chose to emit an element, or not.
 --
 compact_i
-        :: (Monad m, States i m)
+        :: States i m
         => (s -> a -> (s, Maybe b))
         -> s
         -> Sources i m a 
@@ -52,8 +52,7 @@
 
 
 -- | Start-to-end scan over each stream in a bundle.
-scan_i 
-        :: (Monad m, States i m)
+scan_i  :: States i m
         => (s -> a -> s)
         -> s
         -> Sources i m a
@@ -73,7 +72,7 @@
 --   associated the element with their corresponding position in the stream.
 -- 
 indexed_i
-        :: (Monad m, States i m)
+        :: States i m
         => Sources i m a
         -> m (Sources i m (Int, a))
 
diff --git a/Data/Repa/Flow/States.hs b/Data/Repa/Flow/States.hs
--- a/Data/Repa/Flow/States.hs
+++ b/Data/Repa/Flow/States.hs
@@ -127,7 +127,7 @@
  {-# INLINE writeRefs #-}
 
 
-instance States Int m => States () m  where
+instance (Monad m, States Int m) => States () m  where
 
  data Refs () m a               = URefs !(Refs Int m a)
 
diff --git a/repa-flow.cabal b/repa-flow.cabal
--- a/repa-flow.cabal
+++ b/repa-flow.cabal
@@ -1,5 +1,5 @@
 Name:           repa-flow
-Version:        4.2.2.1
+Version:        4.2.3.1
 License:        BSD3
 License-file:   LICENSE
 Author:         The Repa Development Team
@@ -15,7 +15,7 @@
 
 Library
   build-Depends: 
-        base                    == 4.8.*,
+        base                    == 4.9.*,
         directory               == 1.2.*,
         filepath                == 1.4.*,
         vector                  == 0.10.*,
@@ -24,11 +24,11 @@
         containers              == 0.5.*,
         hashtables              == 1.2.1.*,
         text                    == 1.2.*,
-        repa-eval               == 4.0.0.*,
-        repa-stream             == 4.2.2.*,
-        repa-scalar             == 4.2.2.*,
-        repa-convert            == 4.2.2.*,
-        repa-array              == 4.2.2.*
+        repa-eval               == 4.2.3.*,
+        repa-stream             == 4.2.3.*,
+        repa-scalar             == 4.2.3.*,
+        repa-convert            == 4.2.3.*,
+        repa-array              == 4.2.3.*
 
   exposed-modules:
         Data.Repa.Flow.Auto
@@ -94,10 +94,8 @@
         repa-flow.h
 
   ghc-options:
-        -threaded
         -Wall -fno-warn-missing-signatures
         -O2
-        -fcpr-off
 
   extensions:
         CPP
