diff --git a/Data/Yarr/Base.hs b/Data/Yarr/Base.hs
--- a/Data/Yarr/Base.hs
+++ b/Data/Yarr/Base.hs
@@ -1,3 +1,9 @@
+{-# LANGUAGE CPP                    #-}
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE FlexibleInstances      #-}
 
 -- | Core type system
 module Data.Yarr.Base (
diff --git a/Data/Yarr/Eval.hs b/Data/Yarr/Eval.hs
--- a/Data/Yarr/Eval.hs
+++ b/Data/Yarr/Eval.hs
@@ -1,3 +1,10 @@
+{-# LANGUAGE BangPatterns          #-}
+{-# LANGUAGE CPP                   #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE UndecidableInstances  #-}
 
 -- | 'Load'ing and computing arrays
 module Data.Yarr.Eval (
diff --git a/Data/Yarr/Flow.hs b/Data/Yarr/Flow.hs
--- a/Data/Yarr/Flow.hs
+++ b/Data/Yarr/Flow.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE FlexibleContexts      #-}
 
 -- | Dataflow (fusion operations)
 module Data.Yarr.Flow (
@@ -13,7 +14,7 @@
     dzipElems, dzipElemsM,
 
     -- * High level shortcuts
-    traverse, zipElems, mapElems, mapElemsM,
+    Data.Yarr.Flow.traverse, zipElems, mapElems, mapElemsM,
 
     -- ** Cartesian products
     cartProduct2, icartProduct2, icartProduct2M,
diff --git a/Data/Yarr/Fusion.hs b/Data/Yarr/Fusion.hs
--- a/Data/Yarr/Fusion.hs
+++ b/Data/Yarr/Fusion.hs
@@ -1,3 +1,10 @@
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE UndecidableInstances   #-}
+
 -- | Fusion type system. Use re-exported in "Data.Yarr.Flow" functions.
 module Data.Yarr.Fusion where
 
diff --git a/Data/Yarr/Repr/Delayed.hs b/Data/Yarr/Repr/Delayed.hs
--- a/Data/Yarr/Repr/Delayed.hs
+++ b/Data/Yarr/Repr/Delayed.hs
@@ -1,3 +1,8 @@
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE OverlappingInstances  #-}
 
 module Data.Yarr.Repr.Delayed (
     -- * Delayed source
diff --git a/Data/Yarr/Repr/Foreign.hs b/Data/Yarr/Repr/Foreign.hs
--- a/Data/Yarr/Repr/Foreign.hs
+++ b/Data/Yarr/Repr/Foreign.hs
@@ -1,3 +1,10 @@
+{-# LANGUAGE RankNTypes             #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE TypeFamilies           #-}
 
 module Data.Yarr.Repr.Foreign (
     F, FS,
@@ -17,7 +24,7 @@
 import Foreign
 import Foreign.ForeignPtr
 import Foreign.Marshal.Alloc
-import Foreign.Marshal.MissingAlloc
+import Foreign.Marshal.MissingAlloc as FMMA
 
 import Data.Yarr.Base as B
 import Data.Yarr.Fusion
@@ -25,7 +32,6 @@
 import Data.Yarr.Repr.Separate
 import Data.Yarr.Shape
 
-import Data.Yarr.Utils.Storable
 import Data.Yarr.Utils.FixedVector as V
 
 -- | Foreign representation is the heart of Yarr framework.
@@ -126,7 +132,7 @@
 instance Shape sh => DefaultIFusion FS L D SH sh
 
 
-instance (Shape sh, Vector v e, Storable e) => VecRegular F FS L sh v e where
+instance (Shape sh, Vector v e, Storable e, Storable (v e)) => VecRegular F FS L sh v e where
     slices (ForeignArray sh fptr ptr) =
         let esize = sizeOf (undefined :: e)
             vsize = sizeOf (undefined :: (v e))
@@ -136,7 +142,7 @@
             ForeignSlice sh vsize feptr (eptr `plusPtr` (i * esize))
     {-# INLINE slices #-}
 
-instance (Shape sh, Vector v e, Storable e) => UVecSource F FS L sh v e
+instance (Shape sh, Vector v e, Storable e, Storable (v e)) => UVecSource F FS L sh v e
 
 instance (Shape sh, Vector v e, Storable e) => UVecSource (SE F) F L sh v e
 
@@ -164,7 +170,7 @@
 newEmpty :: (Shape sh, Storable a, Integral a) => sh -> IO (UArray F L sh a)
 {-# INLINE newEmpty #-}
 newEmpty sh = do
-    arr <- internalNew callocBytes sh
+    arr <- internalNew FMMA.callocBytes sh
     arr `deepseq` return ()
     return arr
 
@@ -184,7 +190,8 @@
         pokeByteOff ptr (i * vsize) x
     {-# INLINE linearWrite #-}
 
-instance (Shape sh, Vector v e, Storable e) => UVecTarget F FS L sh v e
+instance (Shape sh, Vector v e, Storable e, Storable (v e)) =>
+         UVecTarget F FS L sh v e
 
 -- | /O(1)/ Returns pointer to memory block used by the given foreign
 -- array.
diff --git a/Data/Yarr/Repr/Separate.hs b/Data/Yarr/Repr/Separate.hs
--- a/Data/Yarr/Repr/Separate.hs
+++ b/Data/Yarr/Repr/Separate.hs
@@ -1,3 +1,9 @@
+{-# LANGUAGE BangPatterns          #-}
+{-# LANGUAGE TypeFamilies          #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleContexts      #-}
+{-# LANGUAGE UndecidableInstances  #-}
 
 module Data.Yarr.Repr.Separate (
     -- * @Separate@ representation
diff --git a/Data/Yarr/Shape.hs b/Data/Yarr/Shape.hs
--- a/Data/Yarr/Shape.hs
+++ b/Data/Yarr/Shape.hs
@@ -1,4 +1,15 @@
-{-# LANGUAGE InstanceSigs #-}
+{-# LANGUAGE InstanceSigs           #-}
+{-# LANGUAGE RankNTypes             #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE TypeSynonymInstances   #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE MagicHash              #-}
+{-# LANGUAGE UnboxedTuples          #-}
+{-# LANGUAGE BangPatterns           #-}
 
 module Data.Yarr.Shape (
     -- * Flow types hierarchy
diff --git a/Data/Yarr/Utils/FixedVector.hs b/Data/Yarr/Utils/FixedVector.hs
--- a/Data/Yarr/Utils/FixedVector.hs
+++ b/Data/Yarr/Utils/FixedVector.hs
@@ -5,13 +5,17 @@
 {-# OPTIONS_GHC -fno-warn-missing-methods #-}
 {-# OPTIONS_GHC -fno-warn-orphans         #-}
 
+{-# LANGUAGE RankNTypes                   #-}
+{-# LANGUAGE ScopedTypeVariables          #-}
+{-# LANGUAGE FlexibleContexts             #-}
+
 module Data.Yarr.Utils.FixedVector (
     -- * Fixed Vector  
     module Data.Vector.Fixed,
     arity,
     
     -- * Missed utility
-    zipWith3, zipWithM_, apply, zero,
+    apply, zero,
     iifoldl, iifoldM,
 
     -- * Aliases and shortcuts
@@ -37,8 +41,6 @@
     foldl, zipWith, zipWith3,
     all, any, sequence_, replicate)
 
-import Control.DeepSeq
-
 import Data.Vector.Fixed
 import Data.Vector.Fixed.Cont ( accum, arity )
 
@@ -65,26 +67,6 @@
 vl_4 :: a -> a -> a -> a -> VecList N4 a
 {-# INLINE vl_4 #-}
 vl_4 a b c d = a `Cons` (b `Cons` (c `Cons` (d `Cons` Nil)))
-
-
-instance (Arity n, NFData e) => NFData (VecList n e) where
-    rnf = Data.Vector.Fixed.foldl (\r e -> r `seq` rnf e) ()
-    {-# INLINE rnf #-}
-
-    
-zipWith3
-  :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v (b, c))
-  => (a -> b -> c -> d)
-  -> v a -> v b -> v c
-  -> v d
-{-# INLINE zipWith3 #-}
-zipWith3 f v1 v2 v3 = zipWith (\a (b, c) -> f a b c) v1 (zipWith (,) v2 v3)
-
-zipWithM_
-  :: (Vector v a, Vector v b, Vector v c, Monad m, Vector v (m c))
-  => (a -> b -> m c) -> v a -> v b -> m ()
-{-# INLINE zipWithM_ #-}
-zipWithM_ f xs ys = sequence_ (zipWith f xs ys)
 
 
 apply :: (Vector v a, Vector v (a -> b), Vector v b)
diff --git a/Data/Yarr/Utils/FixedVector/InlinableArity.hs b/Data/Yarr/Utils/FixedVector/InlinableArity.hs
--- a/Data/Yarr/Utils/FixedVector/InlinableArity.hs
+++ b/Data/Yarr/Utils/FixedVector/InlinableArity.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TemplateHaskell       #-}
+{-# LANGUAGE TypeFamilies          #-}
 
 module Data.Yarr.Utils.FixedVector.InlinableArity where
 
diff --git a/Data/Yarr/Utils/FixedVector/VecTuple.hs b/Data/Yarr/Utils/FixedVector/VecTuple.hs
--- a/Data/Yarr/Utils/FixedVector/VecTuple.hs
+++ b/Data/Yarr/Utils/FixedVector/VecTuple.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies    #-}
 
 module Data.Yarr.Utils.FixedVector.VecTuple (
     VecTuple(..), makeVecTupleInstance
@@ -15,6 +17,14 @@
         inline = pragInlD name Inline ConLike AllPhases
     in [fd, inline]
 
+#if MIN_VERSION_template_haskell(2,11,0)
+newtypeInstD' ctxt tc tys con derivs =
+    let kindSig = Nothing
+    in newtypeInstD ctxt tc tys kindSig con (cxt derivs)
+#else
+newtypeInstD' = newtypeInstD
+#endif
+
 makeVecTupleInstance arityType a = do
 
     let n = arity a
@@ -28,7 +38,7 @@
         tupleType = foldl appT (tupleT n) $ replicate n e
 
     familyInst <-
-        newtypeInstD
+        newtypeInstD'
             (cxt [])
             ''VecTuple
             [arityType, e]
diff --git a/Data/Yarr/Utils/FixedVector/VecTupleInstances.hs b/Data/Yarr/Utils/FixedVector/VecTupleInstances.hs
--- a/Data/Yarr/Utils/FixedVector/VecTupleInstances.hs
+++ b/Data/Yarr/Utils/FixedVector/VecTupleInstances.hs
@@ -1,8 +1,9 @@
-
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP                   #-}
+{-# LANGUAGE StandaloneDeriving    #-}
+{-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TemplateHaskell       #-}
+{-# LANGUAGE TypeFamilies          #-}
 
 module Data.Yarr.Utils.FixedVector.VecTupleInstances where
 
diff --git a/Data/Yarr/Utils/Fork.hs b/Data/Yarr/Utils/Fork.hs
--- a/Data/Yarr/Utils/Fork.hs
+++ b/Data/Yarr/Utils/Fork.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module Data.Yarr.Utils.Fork where
 
diff --git a/Data/Yarr/Utils/LowLevelFlow.hs b/Data/Yarr/Utils/LowLevelFlow.hs
--- a/Data/Yarr/Utils/LowLevelFlow.hs
+++ b/Data/Yarr/Utils/LowLevelFlow.hs
@@ -1,3 +1,8 @@
+{-# LANGUAGE RankNTypes          #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE MagicHash           #-}
+{-# LANGUAGE UnboxedTuples       #-}
+{-# LANGUAGE BangPatterns        #-}
 
 module Data.Yarr.Utils.LowLevelFlow where
 
diff --git a/Data/Yarr/Utils/Parallel.hs b/Data/Yarr/Utils/Parallel.hs
--- a/Data/Yarr/Utils/Parallel.hs
+++ b/Data/Yarr/Utils/Parallel.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE BangPatterns #-}
 
 module Data.Yarr.Utils.Parallel where
 
diff --git a/Data/Yarr/Utils/Primitive.hs b/Data/Yarr/Utils/Primitive.hs
--- a/Data/Yarr/Utils/Primitive.hs
+++ b/Data/Yarr/Utils/Primitive.hs
@@ -1,3 +1,7 @@
+{-# LANGUAGE FlexibleInstances        #-}
+{-# LANGUAGE UndecidableInstances     #-}
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
+{-# LANGUAGE CPP                      #-}
 
 module Data.Yarr.Utils.Primitive where
 
diff --git a/Data/Yarr/Utils/Split.hs b/Data/Yarr/Utils/Split.hs
--- a/Data/Yarr/Utils/Split.hs
+++ b/Data/Yarr/Utils/Split.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE BangPatterns #-}
 
 module Data.Yarr.Utils.Split where
 
diff --git a/Data/Yarr/Utils/Storable.hs b/Data/Yarr/Utils/Storable.hs
deleted file mode 100644
--- a/Data/Yarr/Utils/Storable.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-
-module Data.Yarr.Utils.Storable where
-
-import Foreign
-import Data.Yarr.Utils.FixedVector as V
-
-instance (Storable e, Vector v e) => Storable (v e) where
-    sizeOf _ =
-        let esize = sizeOf (undefined :: e)
-            n = arity (undefined :: (Dim v))
-        in n * esize
-
-    alignment _ = alignment (undefined :: e)
-
-    peek ptr =
-        let eptr = castPtr ptr
-        in V.generateM (\i -> peekElemOff eptr i)
-
-    poke ptr v =
-        let eptr = castPtr ptr
-        in imapM_ (\i e -> pokeElemOff eptr i e) v
-
-    {-# INLINE sizeOf #-}
-    {-# INLINE alignment #-}
-    {-# INLINE peek #-}
-    {-# INLINE poke #-}
diff --git a/Data/Yarr/Walk/Internal.hs b/Data/Yarr/Walk/Internal.hs
--- a/Data/Yarr/Walk/Internal.hs
+++ b/Data/Yarr/Walk/Internal.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FunctionalDependencies #-}
 
 module Data.Yarr.Walk.Internal where
 
diff --git a/Debug/Yarr.hs b/Debug/Yarr.hs
--- a/Debug/Yarr.hs
+++ b/Debug/Yarr.hs
@@ -1,3 +1,9 @@
+{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE TypeFamilies           #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE UndecidableInstances   #-}
 
 module Debug.Yarr (
     -- * @Checked@ meta repr
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,13 @@
+* Changes in version 0.9.2:
+    * Safe folds -- see "Data.Yarr.Walk"
+    * Issue with slice-wise loading with unrolled filling function solved
+* Changes in 1.3 (ex. 0.9.3):
+    * IFusion -- mapping/zipping with index
+    * Rename: Work -> Walk
 * Changes in 1.3.3.1: This now compiles with ghc 7.8.3 but probably
   won't compile with earlier versions of ghc. Let me know if this is a
   requirement and I will see what I can do. Even better submit a pull
   request.
+* Changes in 1.4.0.0: This works (and will only work) with the
+  breaking change release of fixed-vector 0.8.0.0.
+* Changes in 1.4.0.2: Build with GHC 7.10 and 8.0.
diff --git a/yarr.cabal b/yarr.cabal
--- a/yarr.cabal
+++ b/yarr.cabal
@@ -1,5 +1,5 @@
 Name:                yarr
-Version:             1.3.3.3
+Version:             1.4.0.2
 Synopsis:            Yet another array library
 Description:
     Yarr is a new blazing fast dataflow framework (array library),
@@ -20,18 +20,6 @@
     .
     Shortcoming by design: lack of pure indexing interface.
     .
-    /Changes in 1.3 (ex. 0.9.3):/
-    .
-        * IFusion -- mapping/zipping with index
-    .
-        * Rename: Work -> Walk
-    .
-    /Changes in version 0.9.2:/
-    .
-        * Safe folds -- see "Data.Yarr.Walk"
-    .
-        * Issue with slice-wise loading with unrolled filling function solved
-    .
     To start with, read documentation in the root module: "Data.Yarr".
     .
     [@Yarr!@] 
@@ -56,12 +44,12 @@
 
 Library
     build-depends:
-        base >=4.6 && <4.8,
-        ghc-prim         == 0.3.*,
-        deepseq          == 1.3.*,
-        fixed-vector     >= 0.7 && < 0.8,
-        primitive        >= 0.2 && < 0.6,
-        template-haskell >= 2.8 && < 2.10,
+        base             >= 4.6 && < 4.10,
+        ghc-prim         >= 0.3 && < 0.6,
+        deepseq          >= 1.3 && < 1.5,
+        fixed-vector     >= 0.8 && < 0.9,
+        primitive        >= 0.6 && < 0.7,
+        template-haskell >= 2.8 && < 2.12,
         missing-foreign  == 0.1.1
 
     extensions:
@@ -113,5 +101,4 @@
         Data.Yarr.WorkTypes
 
         Data.Yarr.Walk.Internal
-        Data.Yarr.Utils.Storable
         Data.Yarr.Utils.LowLevelFlow
