diff --git a/Data/Repa/Array/Auto.hs b/Data/Repa/Array/Auto.hs
--- a/Data/Repa/Array/Auto.hs
+++ b/Data/Repa/Array/Auto.hs
@@ -1,6 +1,6 @@
 
 module Data.Repa.Array.Auto
-        ( Array
+        ( Data.Repa.Array.Auto.Operator.Array
         , Elem, Build
 
         -- * Basics
diff --git a/Data/Repa/Array/Auto/Operator.hs b/Data/Repa/Array/Auto/Operator.hs
--- a/Data/Repa/Array/Auto/Operator.hs
+++ b/Data/Repa/Array/Auto/Operator.hs
@@ -642,8 +642,7 @@
 
 
 -- | Apply a generic stream process to an array.
-process :: ( Build a, Build b, Elem b
-           , G.Target A.A b)
+process :: ( Build a, Build b, Elem b)
         => (s -> a -> (s, Array b))     -- ^ Worker function
         -> s                            -- ^ Initial state.
         -> Array a                      -- ^ Input array.
@@ -686,7 +685,7 @@
 --
 --   The result segments do not include the terminator.
 segmentOn 
-        :: (Elem a, Eq a, U.Unbox a)
+        :: (Elem a, U.Unbox a)
         => (a -> Bool)  -- ^ Detect the end of a segment.
         -> Array a      -- ^ Array to segment.
         -> Array (Array a)
@@ -719,7 +718,7 @@
 -- | O(len src). Given field and row terminating values, 
 --   split an array into rows and fields.
 --
-diceSep :: (Elem a, Eq a, U.Unbox a)
+diceSep :: (Elem a, Eq a)
         => a            -- ^ Terminating element for inner segments.
         -> a            -- ^ Terminating element for outer segments.
         -> Array a      -- ^ Vector to dice.
diff --git a/Data/Repa/Array/Internals/Operator/Process.hs b/Data/Repa/Array/Internals/Operator/Process.hs
--- a/Data/Repa/Array/Internals/Operator/Process.hs
+++ b/Data/Repa/Array/Internals/Operator/Process.hs
@@ -47,7 +47,6 @@
 -- | Apply a generic stream process to an array.
 --
 unfolds :: ( BulkI   lSrc a
-           , BulkI   lDst b
            , TargetI lDst b)
         => Name lDst                            -- ^ Name of destination layout.
         -> (a -> s -> (StepUnfold s b))         -- ^ Worker function.
diff --git a/Data/Repa/Array/Material/Auto.hs b/Data/Repa/Array/Material/Auto.hs
--- a/Data/Repa/Array/Material/Auto.hs
+++ b/Data/Repa/Array/Material/Auto.hs
@@ -22,4 +22,3 @@
 import Data.Repa.Array.Material.Auto.InstText
 import Data.Repa.Array.Material.Auto.InstUnit
 import Data.Repa.Array.Material.Auto.InstWord
-import Data.Repa.Array.Internals.Target
diff --git a/Data/Repa/Array/Material/Auto/InstProduct.hs b/Data/Repa/Array/Material/Auto/InstProduct.hs
--- a/Data/Repa/Array/Material/Auto/InstProduct.hs
+++ b/Data/Repa/Array/Material/Auto/InstProduct.hs
@@ -4,7 +4,6 @@
 where
 import Data.Repa.Array.Material.Auto.Base       as A
 import Data.Repa.Array.Material.Auto.InstUnit   as A
-import Data.Repa.Array.Meta.Tuple               as A
 import Data.Repa.Array.Meta.Window              as A
 import Data.Repa.Array.Internals.Bulk           as A
 import Data.Repa.Array.Internals.Target         as A
diff --git a/Data/Repa/Array/Material/Nested.hs b/Data/Repa/Array/Material/Nested.hs
--- a/Data/Repa/Array/Material/Nested.hs
+++ b/Data/Repa/Array/Material/Nested.hs
@@ -354,7 +354,7 @@
 -- @
 --
 segmentOn 
-        :: (BulkI l a, Eq a, U.Unbox a)
+        :: (BulkI l a, U.Unbox a)
         => (a -> Bool)          -- ^ Detect the end of a segment.
         -> Array l a            -- ^ Vector to segment.
         -> Array N (Array l a)
@@ -403,7 +403,7 @@
 -- | O(len src). Given field and row terminating values, 
 --   split an array into rows and fields.
 --
-diceSep  :: (BulkI l a, Windowable l a, U.Unbox a, Eq a)
+diceSep  :: (BulkI l a, Eq a)
         => a            -- ^ Terminating element for inner segments.
         -> a            -- ^ Terminating element for outer segments.
         -> Array l a    -- ^ Vector to dice.
diff --git a/Data/Repa/Array/Material/Unboxed.hs b/Data/Repa/Array/Material/Unboxed.hs
--- a/Data/Repa/Array/Material/Unboxed.hs
+++ b/Data/Repa/Array/Material/Unboxed.hs
@@ -154,15 +154,13 @@
 
 ---------------------------------------------------------------------------------------------------
 -- | O(1). Wrap an unboxed vector as an array.
-fromUnboxed :: U.Unbox a
-            => U.Vector a -> Array U a
+fromUnboxed :: U.Vector a -> Array U a
 fromUnboxed vec = UArray vec
 {-# INLINE_ARRAY fromUnboxed #-}
 
 
 -- | O(1). Unwrap an unboxed vector from an array.
-toUnboxed   :: U.Unbox a
-            => Array U a -> U.Vector a
+toUnboxed   :: Array U a -> U.Vector a
 toUnboxed (UArray vec) = vec
 {-# INLINE_ARRAY toUnboxed #-}
 
diff --git a/Data/Repa/Array/Meta/Delayed.hs b/Data/Repa/Array/Meta/Delayed.hs
--- a/Data/Repa/Array/Meta/Delayed.hs
+++ b/Data/Repa/Array/Meta/Delayed.hs
@@ -108,8 +108,7 @@
 
 -- | Produce the extent of an array, and a function to retrieve an
 --   arbitrary element.
-toFunction  :: Bulk  l a
-            => Array (D l) a -> (l, Index l -> a)
+toFunction  :: Array (D l) a -> (l, Index l -> a)
 toFunction (ADelayed l f) = (l, f)
 {-# INLINE_ARRAY toFunction #-}
 
diff --git a/Data/Repa/Array/Meta/Tuple.hs b/Data/Repa/Array/Meta/Tuple.hs
--- a/Data/Repa/Array/Meta/Tuple.hs
+++ b/Data/Repa/Array/Meta/Tuple.hs
@@ -147,8 +147,7 @@
 --   different extents. The extent of the result is the intersection
 --   of the extents of the two argument arrays.
 --
-tup2    :: (Bulk l1 a, Bulk l2 b, Index l1 ~ Index l2)
-        => Array l1 a -> Array l2 b
+tup2    :: Array l1 a -> Array l2 b
         -> Array (T2 l1 l2) (a, b)
 tup2 arr1 arr2
         = T2Array arr1 arr2
diff --git a/repa-array.cabal b/repa-array.cabal
--- a/repa-array.cabal
+++ b/repa-array.cabal
@@ -1,5 +1,5 @@
 Name:           repa-array
-Version:        4.2.2.1
+Version:        4.2.3.1
 License:        BSD3
 License-file:   LICENSE
 Author:         The Repa Development Team
@@ -24,17 +24,17 @@
 
 Library
   build-Depends: 
-        base               == 4.8.*,
+        base               == 4.9.*,
         primitive          == 0.6.*,
         vector             == 0.10.*,
         bytestring         == 0.10.*,
         mtl                == 2.2.*,
         double-conversion  == 2.0.*,
         text               == 1.2.*,
-        repa-eval          == 4.0.0.*,
-        repa-stream        == 4.2.2.*,
-        repa-scalar        == 4.2.2.*,
-        repa-convert       == 4.2.2.*,
+        repa-eval          == 4.2.3.*,
+        repa-stream        == 4.2.3.*,
+        repa-scalar        == 4.2.3.*,
+        repa-convert       == 4.2.3.*,
         filelock           >= 0.1.0 && < 0.2
 
 
@@ -131,7 +131,9 @@
         repa-array.h
 
   ghc-options:
-        -Wall -fno-warn-missing-signatures
+        -Wall 
+        -fno-warn-missing-signatures
+        -fno-warn-missing-pattern-synonym-signatures
         -O2
 
   extensions:
