diff --git a/easytensor.cabal b/easytensor.cabal
--- a/easytensor.cabal
+++ b/easytensor.cabal
@@ -1,13 +1,11 @@
-cabal-version: 1.12
-
--- This file has been generated from package.yaml by hpack version 0.31.1.
+-- This file has been generated from package.yaml by hpack version 0.28.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 295fd017e3f09157b9e9a28d1db9beb6ecb080f0612228ac49f18e78ee08d01b
+-- hash: c1b3d6ebe751438aebdd514a166566c79aa2a98083755f019015772fc95cb34e
 
 name:           easytensor
-version:        2.0.0.0
+version:        2.0.1.0
 synopsis:       Pure, type-indexed haskell vector, matrix, and tensor library.
 description:    Pure, type-indexed haskell vector, matrix, and tensor library. Features dimensionality type-checking for all operations. Generic n-dimensional versions are implemented using low-level prim ops. Allows ad-hoc replacement with fixed low-dimensionality vectors and matrices without changing user interface. Please see the README on GitHub at <https://github.com/achirkin/easytensor#readme>
 category:       math, geometry
@@ -19,6 +17,7 @@
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
+cabal-version:  >= 1.10
 
 source-repository head
   type: git
diff --git a/src-base/Numeric/DataFrame/Internal/Backend/Family/ArrayBase.hs b/src-base/Numeric/DataFrame/Internal/Backend/Family/ArrayBase.hs
--- a/src-base/Numeric/DataFrame/Internal/Backend/Family/ArrayBase.hs
+++ b/src-base/Numeric/DataFrame/Internal/Backend/Family/ArrayBase.hs
@@ -97,18 +97,16 @@
           | W# nw <- totalDim' @ds
           , n <- word2Int# nw
           , tbs <- byteSize t -> go tbs (tbs *# n) t
-        (# | (# off, arr, steps, _ #) #) ->
+        (# | (# off, arr, _, _ #) #) ->
           if isTrue# (isByteArrayPinned# arr)
           then case runRW# (\s -> (# touch# arr s, arr #)) of (# _, ba #) -> ba
           else case runRW#
-           ( \s0 -> case (# cdTotalDim# steps
-                          , byteSize @t undefined
+           ( \s0 -> case (# sizeofByteArray# arr
                           , byteAlign @t undefined
                           #) of
-               (# n, tbs, tba #)
-                 | bsize <- tbs *# n
-                 , (# s1, mba #) <- newAlignedPinnedByteArray# bsize tba s0
-                 , s2 <- copyByteArray# arr off mba 0# bsize s1
+               (# bsize, tba #)
+                 | (# s1, mba #) <- newAlignedPinnedByteArray# bsize tba s0
+                 , s2 <- copyByteArray# arr off mba off bsize s1
                    -> unsafeFreezeByteArray# mba s2
            ) of (# _, ba #) -> ba
       where
