diff --git a/blas-carray.cabal b/blas-carray.cabal
--- a/blas-carray.cabal
+++ b/blas-carray.cabal
@@ -1,5 +1,5 @@
 Name:             blas-carray
-Version:          0.0.1.1
+Version:          0.1
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -20,7 +20,7 @@
 Build-Type:       Simple
 
 Source-Repository this
-  Tag:         0.0.1.1
+  Tag:         0.1
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/blas-carray/
 
@@ -31,7 +31,7 @@
 Library
   Build-Depends:
     blas-ffi >=0.0 && <0.1,
-    netlib-carray >=0.0 && <0.1,
+    netlib-carray >=0.1 && <0.2,
     netlib-ffi >=0.0 && <0.2,
     carray >=0.1.5 && <0.2,
     storable-complex >=0.2.2 && <0.3,
diff --git a/src/Numeric/BLAS/CArray/Complex.hs b/src/Numeric/BLAS/CArray/Complex.hs
--- a/src/Numeric/BLAS/CArray/Complex.hs
+++ b/src/Numeric/BLAS/CArray/Complex.hs
@@ -1,7 +1,6 @@
 -- Do not edit! Automatically generated by create-lapack-ffi.
 module Numeric.BLAS.CArray.Complex (
    axpy,
-   cabs1,
    casum,
    cnrm2,
    copy,
@@ -56,12 +55,6 @@
 
 axpy :: Class.Real a => Int -> (Complex a) -> CArray Int (Complex a) -> Int -> IOCArray Int (Complex a) -> Int -> IO ()
 axpy = getAXPY $ Class.switchReal (AXPY C.axpy) (AXPY Z.axpy)
-
-
-newtype CABS1 a = CABS1 {getCABS1 :: (Complex a) -> IO a}
-
-cabs1 :: Class.Real a => (Complex a) -> IO a
-cabs1 = getCABS1 $ Class.switchReal (CABS1 C.cabs1) (CABS1 Z.cabs1)
 
 
 newtype CASUM a = CASUM {getCASUM :: Int -> IOCArray Int (Complex a) -> Int -> IO a}
diff --git a/src/Numeric/BLAS/CArray/ComplexDouble.hs b/src/Numeric/BLAS/CArray/ComplexDouble.hs
--- a/src/Numeric/BLAS/CArray/ComplexDouble.hs
+++ b/src/Numeric/BLAS/CArray/ComplexDouble.hs
@@ -40,14 +40,6 @@
       incyPtr <- Call.cint incy
       liftIO $ FFI.axpy nPtr zaPtr zxPtr incxPtr zyPtr incyPtr
 
-cabs1 ::
-   Complex Double {- ^ z -} ->
-   IO Double
-cabs1 z = do
-   evalContT $ do
-      zPtr <- Call.complexDouble z
-      liftIO $ FFI.cabs1 zPtr
-
 casum ::
    Int {- ^ n -} ->
    IOCArray Int (Complex Double) {- ^ zx -} ->
@@ -89,10 +81,10 @@
       nPtr <- Call.cint n
       zxPtr <- Call.array zx
       incxPtr <- Call.cint incx
-      zyPtr <- Call.array zy
+      zyPtr <- Call.ioarray zy
       incyPtr <- Call.cint incy
       liftIO $ FFI.copy nPtr zxPtr incxPtr zyPtr incyPtr
-      liftIO $ pure zy
+      liftIO $ Call.freezeArray zy
 
 gbmv ::
    Char {- ^ trans -} ->
diff --git a/src/Numeric/BLAS/CArray/ComplexFloat.hs b/src/Numeric/BLAS/CArray/ComplexFloat.hs
--- a/src/Numeric/BLAS/CArray/ComplexFloat.hs
+++ b/src/Numeric/BLAS/CArray/ComplexFloat.hs
@@ -40,14 +40,6 @@
       incyPtr <- Call.cint incy
       liftIO $ FFI.axpy nPtr caPtr cxPtr incxPtr cyPtr incyPtr
 
-cabs1 ::
-   Complex Float {- ^ z -} ->
-   IO Float
-cabs1 z = do
-   evalContT $ do
-      zPtr <- Call.complexFloat z
-      liftIO $ FFI.cabs1 zPtr
-
 casum ::
    Int {- ^ n -} ->
    IOCArray Int (Complex Float) {- ^ cx -} ->
@@ -89,10 +81,10 @@
       nPtr <- Call.cint n
       cxPtr <- Call.array cx
       incxPtr <- Call.cint incx
-      cyPtr <- Call.array cy
+      cyPtr <- Call.ioarray cy
       incyPtr <- Call.cint incy
       liftIO $ FFI.copy nPtr cxPtr incxPtr cyPtr incyPtr
-      liftIO $ pure cy
+      liftIO $ Call.freezeArray cy
 
 gbmv ::
    Char {- ^ trans -} ->
diff --git a/src/Numeric/BLAS/CArray/Double.hs b/src/Numeric/BLAS/CArray/Double.hs
--- a/src/Numeric/BLAS/CArray/Double.hs
+++ b/src/Numeric/BLAS/CArray/Double.hs
@@ -66,10 +66,10 @@
       nPtr <- Call.cint n
       dxPtr <- Call.array dx
       incxPtr <- Call.cint incx
-      dyPtr <- Call.array dy
+      dyPtr <- Call.ioarray dy
       incyPtr <- Call.cint incy
       liftIO $ FFI.copy nPtr dxPtr incxPtr dyPtr incyPtr
-      liftIO $ pure dy
+      liftIO $ Call.freezeArray dy
 
 dot ::
    Int {- ^ n -} ->
@@ -527,13 +527,13 @@
       dd2Ptr <- Call.double dd2
       dx1Ptr <- Call.double dx1
       dy1Ptr <- Call.double dy1
-      dparamPtr <- Call.array dparam
+      dparamPtr <- Call.ioarray dparam
       liftIO $ FFI.rotmg dd1Ptr dd2Ptr dx1Ptr dy1Ptr dparamPtr
       liftIO $ pure (,,,)
          <*> peek dd1Ptr
          <*> peek dd2Ptr
          <*> peek dx1Ptr
-         <*> pure dparam
+         <*> Call.freezeArray dparam
 
 scal ::
    Int {- ^ n -} ->
diff --git a/src/Numeric/BLAS/CArray/Float.hs b/src/Numeric/BLAS/CArray/Float.hs
--- a/src/Numeric/BLAS/CArray/Float.hs
+++ b/src/Numeric/BLAS/CArray/Float.hs
@@ -66,10 +66,10 @@
       nPtr <- Call.cint n
       sxPtr <- Call.array sx
       incxPtr <- Call.cint incx
-      syPtr <- Call.array sy
+      syPtr <- Call.ioarray sy
       incyPtr <- Call.cint incy
       liftIO $ FFI.copy nPtr sxPtr incxPtr syPtr incyPtr
-      liftIO $ pure sy
+      liftIO $ Call.freezeArray sy
 
 dot ::
    Int {- ^ n -} ->
@@ -549,13 +549,13 @@
       sd2Ptr <- Call.float sd2
       sx1Ptr <- Call.float sx1
       sy1Ptr <- Call.float sy1
-      sparamPtr <- Call.array sparam
+      sparamPtr <- Call.ioarray sparam
       liftIO $ FFI.rotmg sd1Ptr sd2Ptr sx1Ptr sy1Ptr sparamPtr
       liftIO $ pure (,,,)
          <*> peek sd1Ptr
          <*> peek sd2Ptr
          <*> peek sx1Ptr
-         <*> pure sparam
+         <*> Call.freezeArray sparam
 
 scal ::
    Int {- ^ n -} ->
