diff --git a/massiv.cabal b/massiv.cabal
--- a/massiv.cabal
+++ b/massiv.cabal
@@ -1,5 +1,5 @@
 name:                massiv
-version:             0.5.3.0
+version:             0.5.3.1
 synopsis:            Massiv (Массив) is an Array Library.
 description:         Multi-dimensional Arrays with fusion, stencils and parallel computation.
 homepage:            https://github.com/lehins/massiv
diff --git a/src/Data/Massiv/Array/Delayed/Windowed.hs b/src/Data/Massiv/Array/Delayed/Windowed.hs
--- a/src/Data/Massiv/Array/Delayed/Windowed.hs
+++ b/src/Data/Massiv/Array/Delayed/Windowed.hs
@@ -26,15 +26,13 @@
   , makeWindowedArray
   ) where
 
-import Control.Exception (Exception(..))
 import Control.Monad (when)
 import Data.Massiv.Array.Delayed.Pull
 import Data.Massiv.Array.Manifest.Boxed
 import Data.Massiv.Array.Manifest.Internal
 import Data.Massiv.Core
 import Data.Massiv.Core.Common
-import Data.Massiv.Core.Index.Internal (Sz(..))
-import Data.Massiv.Core.List (L, showArrayList, showsArrayPrec)
+import Data.Massiv.Core.List (showArrayList, showsArrayPrec)
 import Data.Maybe (fromMaybe)
 import GHC.TypeLits
 
diff --git a/src/Data/Massiv/Array/Manifest.hs b/src/Data/Massiv/Array/Manifest.hs
--- a/src/Data/Massiv/Array/Manifest.hs
+++ b/src/Data/Massiv/Array/Manifest.hs
@@ -99,7 +99,6 @@
 import Data.Massiv.Array.Manifest.Unboxed
 import Data.Massiv.Array.Ops.Fold
 import Data.Massiv.Core.Common
-import Data.Massiv.Core.Index.Internal (Sz(..))
 import Data.Word (Word8)
 
 
diff --git a/src/Data/Massiv/Array/Manifest/Boxed.hs b/src/Data/Massiv/Array/Manifest/Boxed.hs
--- a/src/Data/Massiv/Array/Manifest/Boxed.hs
+++ b/src/Data/Massiv/Array/Manifest/Boxed.hs
@@ -64,7 +64,6 @@
 import qualified Data.Primitive.Array as A
 import qualified Data.Vector as VB
 import qualified Data.Vector.Mutable as MVB
-import GHC.Base (build)
 import GHC.Exts as GHC
 import Prelude hiding (mapM)
 import System.IO.Unsafe (unsafePerformIO)
diff --git a/src/Data/Massiv/Array/Manifest/Primitive.hs b/src/Data/Massiv/Array/Manifest/Primitive.hs
--- a/src/Data/Massiv/Array/Manifest/Primitive.hs
+++ b/src/Data/Massiv/Array/Manifest/Primitive.hs
@@ -49,7 +49,7 @@
   ) where
 
 import Control.DeepSeq (NFData(..), deepseq)
-import Control.Monad.Primitive (PrimMonad(primitive), PrimState, primitive_)
+import Control.Monad.Primitive (PrimMonad(..), primitive_)
 import Data.Massiv.Array.Delayed.Pull (eq, ord)
 import Data.Massiv.Array.Manifest.Internal
 import Data.Massiv.Array.Manifest.List as A
@@ -58,12 +58,10 @@
 import Data.Massiv.Core.List
 import Data.Massiv.Vector.Stream as S (steps, isteps)
 import Data.Maybe (fromMaybe)
-import Data.Primitive (sizeOf)
+import Data.Primitive (sizeOf, Prim)
 import Data.Primitive.ByteArray
-import Data.Primitive.Types
 import qualified Data.Vector.Primitive as VP
 import qualified Data.Vector.Primitive.Mutable as MVP
-import GHC.Base (Int(..))
 import GHC.Exts as GHC
 import Prelude hiding (mapM)
 import System.IO.Unsafe (unsafePerformIO)
@@ -582,6 +580,7 @@
 {-# INLINE unsafeAtomicXorIntArray #-}
 
 
+#if !MIN_VERSION_primitive(0,7,1)
 shrinkMutableByteArray :: forall m. (PrimMonad m)
   => MutableByteArray (PrimState m)
   -> Int -- ^ new size
@@ -589,7 +588,7 @@
 shrinkMutableByteArray (MutableByteArray arr#) (I# n#)
   = primitive_ (shrinkMutableByteArray# arr# n#)
 {-# INLINE shrinkMutableByteArray #-}
-
+#endif
 
 resizeMutableByteArrayCompat ::
   PrimMonad m => MutableByteArray (PrimState m) -> Int -> m (MutableByteArray (PrimState m))
diff --git a/src/Data/Massiv/Array/Numeric.hs b/src/Data/Massiv/Array/Numeric.hs
--- a/src/Data/Massiv/Array/Numeric.hs
+++ b/src/Data/Massiv/Array/Numeric.hs
@@ -84,7 +84,6 @@
 import Data.Massiv.Core
 import Data.Massiv.Core.Common
 import Data.Massiv.Core.Operations
-import Data.Massiv.Core.Index.Internal (Sz(SafeSz))
 import Prelude as P
 
 
diff --git a/src/Data/Massiv/Array/Ops/Map.hs b/src/Data/Massiv/Array/Ops/Map.hs
--- a/src/Data/Massiv/Array/Ops/Map.hs
+++ b/src/Data/Massiv/Array/Ops/Map.hs
@@ -67,14 +67,12 @@
   ) where
 
 import Control.Monad (void)
-import Control.Monad.Primitive (PrimMonad)
 import Control.Scheduler
 import Data.Coerce
 import Data.Massiv.Array.Delayed.Pull
 import Data.Massiv.Array.Mutable
 import Data.Massiv.Array.Ops.Construct (makeArrayA, makeArrayLinearA)
 import Data.Massiv.Core.Common
-import Data.Massiv.Core.Index.Internal (Sz(..))
 import Prelude hiding (map, mapM, mapM_, sequenceA, traverse, unzip, unzip3,
                 zip, zip3, zipWith, zipWith3)
 
diff --git a/src/Data/Massiv/Array/Ops/Transform.hs b/src/Data/Massiv/Array/Ops/Transform.hs
--- a/src/Data/Massiv/Array/Ops/Transform.hs
+++ b/src/Data/Massiv/Array/Ops/Transform.hs
@@ -70,7 +70,6 @@
 import Data.Massiv.Array.Ops.Construct
 import Data.Massiv.Array.Ops.Map
 import Data.Massiv.Core.Common
-import Data.Massiv.Core.Index.Internal (Sz(SafeSz))
 import Prelude as P hiding (concat, splitAt, traverse, mapM_, reverse, take, drop)
 
 
diff --git a/src/Data/Massiv/Array/Unsafe.hs b/src/Data/Massiv/Array/Unsafe.hs
--- a/src/Data/Massiv/Array/Unsafe.hs
+++ b/src/Data/Massiv/Array/Unsafe.hs
@@ -94,7 +94,6 @@
 import Data.Massiv.Array.Mutable.Internal
 import Data.Massiv.Array.Ops.Sort (unsafeUnstablePartitionRegionM)
 import Data.Massiv.Core.Common
-import Data.Massiv.Core.Index.Internal (Sz(SafeSz))
 import Data.Massiv.Core.Index.Stride (Stride(SafeStride))
 import Data.Massiv.Vector.Unsafe
 import Data.Massiv.Array.Stencil.Unsafe
diff --git a/src/Data/Massiv/Core.hs b/src/Data/Massiv/Core.hs
--- a/src/Data/Massiv/Core.hs
+++ b/src/Data/Massiv/Core.hs
@@ -38,8 +38,6 @@
   -- * Exceptions
   , MonadThrow(..)
   , throw
-  , Exception(..)
-  , SomeException
   , IndexException(..)
   , SizeException(..)
   , ShapeException(..)
@@ -50,7 +48,6 @@
   , PrimMonad(PrimState)
   ) where
 
-import Control.Exception (Exception(..), SomeException)
 import Control.Scheduler (initWorkerStates)
 import Data.Massiv.Core.Common
 import Data.Massiv.Core.Index
diff --git a/src/Data/Massiv/Core/Exception.hs b/src/Data/Massiv/Core/Exception.hs
--- a/src/Data/Massiv/Core/Exception.hs
+++ b/src/Data/Massiv/Core/Exception.hs
@@ -6,6 +6,8 @@
   , throwImpossible
   , Uninitialized(..)
   , guardNumberOfElements
+  , Exception(..)
+  , SomeException
   ) where
 
 import Control.Exception
diff --git a/src/Data/Massiv/Core/Index/Ix.hs b/src/Data/Massiv/Core/Index/Ix.hs
--- a/src/Data/Massiv/Core/Index/Ix.hs
+++ b/src/Data/Massiv/Core/Index/Ix.hs
@@ -1,15 +1,15 @@
-{-# LANGUAGE BangPatterns           #-}
-{-# LANGUAGE CPP                    #-}
-{-# LANGUAGE DataKinds              #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE PatternSynonyms        #-}
-{-# LANGUAGE ScopedTypeVariables    #-}
-{-# LANGUAGE TypeFamilies           #-}
-{-# LANGUAGE TypeOperators          #-}
-{-# LANGUAGE UndecidableInstances   #-}
+{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE TypeFamilyDependencies #-}
+{-# LANGUAGE UndecidableInstances #-}
 -- |
 -- Module      : Data.Massiv.Core.Index.Ix
 -- Copyright   : (c) Alexey Kuleshevich 2018-2019
@@ -44,16 +44,18 @@
   , pattern Sz5
   ) where
 
-import           Control.Monad.Catch             (MonadThrow(..))
-import           Control.DeepSeq
-import           Control.Monad                   (liftM)
-import           Data.Massiv.Core.Index.Internal
-import           Data.Monoid                     ((<>))
-import           Data.Proxy
-import qualified Data.Vector.Generic             as V
-import qualified Data.Vector.Generic.Mutable     as VM
-import qualified Data.Vector.Unboxed             as VU
-import           GHC.TypeLits
+import Control.Monad.Catch (MonadThrow(..))
+import Control.DeepSeq
+import Control.Monad (liftM)
+import Data.Massiv.Core.Index.Internal
+import Data.Proxy
+import qualified Data.Vector.Generic as V
+import qualified Data.Vector.Generic.Mutable as VM
+import qualified Data.Vector.Unboxed as VU
+import GHC.TypeLits
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup
+#endif
 
 
 infixr 5 :>, :.
