diff --git a/Data/Array/Accelerate/Array/Data.hs b/Data/Array/Accelerate/Array/Data.hs
--- a/Data/Array/Accelerate/Array/Data.hs
+++ b/Data/Array/Accelerate/Array/Data.hs
@@ -45,23 +45,24 @@
 ) where
 
 -- standard libraries
-import Foreign            (Ptr)
+import Foreign                                  ( Ptr )
 import Foreign.C.Types
 import Data.Bits
-import Data.Functor       ((<$>))
-import Data.Typeable      (Typeable)
+import Data.Functor
+import Data.Typeable                            ( Typeable )
 import Control.Monad
 #ifdef ACCELERATE_UNSAFE_CHECKS
-import qualified Data.Array.Base    as MArray (readArray, writeArray)
+import qualified Data.Array.Base                as MArray ( readArray, writeArray )
 #else
-import qualified Data.Array.Base    as MArray (unsafeRead, unsafeWrite)
+import qualified Data.Array.Base                as MArray ( unsafeRead, unsafeWrite )
 #endif
 import Data.Array.Storable.Internals
 import Foreign.ForeignPtr.Unsafe
 import System.IO.Unsafe
-import Data.Array.MArray  (MArray)
-import Data.Array.Base    (unsafeNewArray_)
+import Data.Array.MArray                        ( MArray )
+import Data.Array.Base                          ( unsafeNewArray_ )
 import Language.Haskell.TH
+import Prelude
 
 -- friends
 import Data.Array.Accelerate.Type
diff --git a/Data/Array/Accelerate/Array/Sugar.hs b/Data/Array/Accelerate/Array/Sugar.hs
--- a/Data/Array/Accelerate/Array/Sugar.hs
+++ b/Data/Array/Accelerate/Array/Sugar.hs
@@ -1037,9 +1037,9 @@
 
 -- | Creates a new, uninitialized Accelerate array.
 --
-allocateArray :: (Shape sh, Elt e) => sh -> Array sh e
+allocateArray :: (Shape sh, Elt e) => sh -> IO (Array sh e)
 {-# INLINE allocateArray #-}
-allocateArray sh = adata `seq` Array (fromElt sh) adata
+allocateArray sh = adata `seq` return (Array (fromElt sh) adata)
   where
     (adata, _) = runArrayData $ (,undefined) `fmap` newArrayData (size sh)
 
diff --git a/Data/Array/Accelerate/Data/Complex.hs b/Data/Array/Accelerate/Data/Complex.hs
--- a/Data/Array/Accelerate/Data/Complex.hs
+++ b/Data/Array/Accelerate/Data/Complex.hs
@@ -28,7 +28,7 @@
 
 import Prelude
 import Data.Complex                             ( Complex(..) )
-import Data.Array.Accelerate
+import Data.Array.Accelerate                    as A
 import Data.Array.Accelerate.Smart
 import Data.Array.Accelerate.Tuple
 import Data.Array.Accelerate.Array.Sugar
@@ -92,11 +92,11 @@
           x :+ y        = unlift z
           v'            = abs y / (u'*2)
           u'            = sqrt ((magnitude z + abs x) / 2)
-          (u, v)        = unlift ( x <* 0 ? ( lift (v',u'), lift (u',v') ) )
+          (u, v)        = unlift ( x A.<* 0 ? ( lift (v',u'), lift (u',v') ) )
       in
       x ==* 0 &&* y ==* 0 ?
         {- then -} ( 0
-        {- else -} , lift (u :+ (y <* 0 ? (-v,v))) )
+        {- else -} , lift (u :+ (y A.<* 0 ? (-v,v))) )
 
   pi            = lift (pi :+ constant 0)
   log z         = lift (log (magnitude z) :+ phase z)
diff --git a/Data/Array/Accelerate/Language.hs b/Data/Array/Accelerate/Language.hs
--- a/Data/Array/Accelerate/Language.hs
+++ b/Data/Array/Accelerate/Language.hs
@@ -572,7 +572,7 @@
 toIndex :: Shape sh => Exp sh -> Exp sh -> Exp Int
 toIndex = Exp $$ ToIndex
 
--- | Inverse of 'fromIndex'
+-- | Inverse of 'toIndex'
 --
 fromIndex :: Shape sh => Exp sh -> Exp Int -> Exp sh
 fromIndex = Exp $$ FromIndex
diff --git a/Data/Array/Accelerate/Trafo/Sharing.hs b/Data/Array/Accelerate/Trafo/Sharing.hs
--- a/Data/Array/Accelerate/Trafo/Sharing.hs
+++ b/Data/Array/Accelerate/Trafo/Sharing.hs
@@ -43,6 +43,7 @@
 import qualified Data.HashSet                           as Set
 import System.IO.Unsafe                                 ( unsafePerformIO )
 import System.Mem.StableName
+import Prelude
 
 -- friends
 import Data.Array.Accelerate.Error
diff --git a/Data/Array/Accelerate/Trafo/Shrink.hs b/Data/Array/Accelerate/Trafo/Shrink.hs
--- a/Data/Array/Accelerate/Trafo/Shrink.hs
+++ b/Data/Array/Accelerate/Trafo/Shrink.hs
@@ -36,6 +36,11 @@
 
 ) where
 
+-- standard library
+import Data.Monoid
+import Control.Applicative                              hiding ( Const )
+import Prelude                                          hiding ( exp )
+
 -- friends
 import Data.Array.Accelerate.AST
 import Data.Array.Accelerate.Tuple
@@ -43,11 +48,6 @@
 import Data.Array.Accelerate.Trafo.Substitution
 
 import qualified Data.Array.Accelerate.Debug            as Stats
-
--- standard library
-import Prelude                                          hiding ( exp )
-import Data.Monoid
-import Control.Applicative                              hiding ( Const )
 
 
 class Shrink f where
diff --git a/Data/Array/Accelerate/Trafo/Simplify.hs b/Data/Array/Accelerate/Trafo/Simplify.hs
--- a/Data/Array/Accelerate/Trafo/Simplify.hs
+++ b/Data/Array/Accelerate/Trafo/Simplify.hs
@@ -23,12 +23,12 @@
 ) where
 
 -- standard library
-import Prelude                                          hiding ( exp, iterate )
 import Data.List                                        ( nubBy )
 import Data.Maybe
 import Data.Monoid
 import Data.Typeable
 import Control.Applicative                              hiding ( Const )
+import Prelude                                          hiding ( exp, iterate )
 
 -- friends
 import Data.Array.Accelerate.AST                        hiding ( prj )
diff --git a/accelerate.cabal b/accelerate.cabal
--- a/accelerate.cabal
+++ b/accelerate.cabal
@@ -1,7 +1,7 @@
 Name:                   accelerate
-Version:                0.15.0.0
+Version:                0.15.1.0
 Cabal-version:          >= 1.8
-Tested-with:            GHC == 7.8.*
+Tested-with:            GHC >= 7.8
 Build-type:             Simple
 
 Synopsis:               An embedded language for accelerated array processing
@@ -102,43 +102,16 @@
     * Bug reports and issue tracking:
       <https://github.com/AccelerateHS/accelerate/issues>
   .
-  [/Release notes/]
-  .
-    * /0.15.0.0:/ Bug fixes and performance improvements.
-  .
-    * /0.14.0.0:/ New iteration constructs. Additional Prelude-like functions.
-      Improved code generation and fusion optimisation. Concurrent kernel
-      execution. Bug fixes.
-  .
-    * /0.13.0.0:/ New array fusion optimisation. New foreign function
-      interface for array and scalar expressions. Additional Prelude-like
-      functions. New example programs. Bug fixes and performance improvements.
-  .
-    * /0.12.0.0:/ Full sharing recovery in scalar expressions and array
-      computations. Two new example applications in package
-      @accelerate-examples@: Real-time Canny edge detection and fluid flow
-      simulator (both including a graphical frontend). Bug fixes.
-  .
-    * /0.11.0.0:/ New Prelude-like functions @zip*@, @unzip*@,
-      @fill@, @enumFrom*@, @tail@, @init@, @drop@, @take@, @slit@, @gather*@,
-      @scatter*@, and @shapeSize@. New simplified AST (in package
-      @accelerate-backend-kit@) for backend writers who want to avoid the
-      complexities of the type-safe AST.
-  .
-    * /0.10.0.0:/ Complete sharing recovery for scalar expressions (but
-      currently disabled by default). Also bug fixes in array sharing recovery
-      and a few new convenience functions.
+  [/Hackage note/]
   .
-    * /0.9.0.0:/ Streaming, precompilation, Repa-style indices,
-      @stencil@s, more @scan@s, rank-polymorphic @fold@, @generate@, block I/O &
-      many bug fixes.
+  The module documentation list generated by Hackage is incorrect. The only
+  exposed modules should be:
   .
-    * /0.8.1.0:/ Bug fixes and some performance tweaks.
+    * "Data.Array.Accelerate"
   .
-    * /0.8.0.0:/ @replicate@, @slice@ and @foldSeg@ supported in the
-      CUDA backend; frontend and interpreter support for @stencil@. Bug fixes.
+    * "Data.Array.Accelerate.Interpreter"
   .
-    * /0.7.1.0:/ The CUDA backend and a number of scalar functions.
+    * "Data.Array.Accelerate.Data.Complex"
   .
 
 License:                BSD3
@@ -158,6 +131,8 @@
 Category:               Compilers/Interpreters, Concurrency, Data, Parallelism
 Stability:              Experimental
 
+Extra-source-files:     changelog.md
+
 Flag debug
   Default:              False
   Description:
@@ -191,16 +166,16 @@
   Default:              False
 
 Library
-  Build-depends:        array                   >= 0.3,
-                        base                    == 4.7.*,
-                        containers              >= 0.3,
-                        unordered-containers    >= 0.2,
-                        fclabels                >= 2.0,
-                        ghc-prim                >= 0.2,
-                        hashable                >= 1.1,
-                        hashtables              >= 1.0,
-                        pretty                  >= 1.0,
-                        template-haskell        == 2.9.*
+  Build-depends:        array                   >= 0.3  && < 0.6,
+                        base                    >= 4.7  && < 4.9,
+                        containers              >= 0.3  && < 0.6,
+                        unordered-containers    >= 0.2  && < 0.3,
+                        fclabels                >= 2.0  && < 2.1,
+                        ghc-prim,
+                        hashable                >= 1.1  && < 1.3,
+                        hashtables              >= 1.0  && < 1.3,
+                        pretty                  >= 1.0  && < 1.2,
+                        template-haskell
 
   if flag(more-pp)
     Build-depends:      bytestring              >= 0.9,
@@ -278,7 +253,9 @@
   --
   -- Extensions:
 
-Source-repository head
-  Type:                 git
-  Location:             git://github.com/AccelerateHS/accelerate.git
+Source-repository this
+  type:                 git
+  location:             git://github.com/AccelerateHS/accelerate.git
+  branch:               release/0.15
+  tag:                  0.15.1.0
 
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,90 @@
+0.15.1.0
+
+  * Compiles with ghc-7.8 and ghc-7.10
+
+  * Minor bug fixes
+
+0.15.0.0
+
+  * Bug fixes and performance improvements.
+
+0.14.0.0
+
+  * New iteration constructs.
+
+  * Additional Prelude-like functions.
+
+  * Improved code generation and fusion optimisation.
+
+  * Concurrent kernel execution in the CUDA backend.
+
+  * Bug fixes.
+
+0.13.0.0
+
+  * New array fusion optimisation.
+
+  * New foreign function interface for array and scalar expressions.
+
+  * Additional Prelude-like functions.
+
+  * New example programs.
+
+  * Bug fixes and performance improvements.
+
+0.12.0.0
+
+  * Full sharing recovery in scalar expressions and array computations.
+
+  * Two new example applications in package `accelerate-examples`: Real-time
+    Canny edge detection and an interactive fluid flow simulator (both including
+    a graphical frontend).
+
+  * Bug fixes.
+
+0.11.0.0
+
+  * New Prelude-like functions `zip*`, `unzip*`, `fill`, `enumFrom*`, `tail`,
+    `init`, `drop`, `take`, `slit`, `gather*`, `scatter*`, and `shapeSize`.
+
+  * New simplified AST (in package `accelerate-backend-kit`) for backend writers
+    who want to avoid the complexities of the type-safe AST.
+
+0.10.0.0
+
+  * Complete sharing recovery for scalar expressions (but currently disabled by
+    default).
+
+  * Also bug fixes in array sharing recovery and a few new convenience
+    functions.
+
+0.9.0.0
+
+  * Streaming computations
+
+  * Precompilation
+
+  * Repa-style array indices
+
+  * Additional collective operations supported by the CUDA backend: `stencil`s,
+    more `scan`s, rank-polymorphic `fold`, `generate`.
+
+  * Conversions to other array formats
+
+  * Bug fixes
+
+0.8.1.0
+
+  * Bug fixes and some performance tweaks.
+
+0.8.0.0
+
+  * More collective operations supported by the CUDA backend: `replicate`,
+    `slice` and `foldSeg`. Frontend and interpreter support for `stencil`.
+
+  * Bug fixes.
+
+0.7.1.0
+
+  * Initial release of the CUDA backend
+
