diff --git a/lapack.cabal b/lapack.cabal
--- a/lapack.cabal
+++ b/lapack.cabal
@@ -1,5 +1,5 @@
 Name:             lapack
-Version:          0.3
+Version:          0.3.0.1
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -48,7 +48,7 @@
   Makefile
 
 Source-Repository this
-  Tag:         0.3
+  Tag:         0.3.0.1
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/lapack/
 
diff --git a/src/Numeric/LAPACK/Matrix/Plain/Class.hs b/src/Numeric/LAPACK/Matrix/Plain/Class.hs
--- a/src/Numeric/LAPACK/Matrix/Plain/Class.hs
+++ b/src/Numeric/LAPACK/Matrix/Plain/Class.hs
@@ -45,6 +45,9 @@
 class (Shape.C shape) => Admissible shape where
    check :: (Class.Floating a) => Array shape a -> Maybe String
 
+assert :: msg -> Bool -> Maybe msg
+assert msg = flip toMaybe msg . not
+
 instance
    (Extent.C vert, Extent.C horiz, Shape.C height, Shape.C width) =>
       Admissible (MatrixShape.Full vert horiz height width) where
@@ -52,7 +55,7 @@
 
 instance (Shape.C size) => Admissible (MatrixShape.Hermitian size) where
    check =
-      flip toMaybe "Hermitian with non-real diagonal" .
+      assert "Hermitian with non-real diagonal" .
       isReal . Triangular.takeDiagonal . Hermitian.takeUpper
 
 instance
@@ -73,7 +76,7 @@
    MatrixShape.Content lo, MatrixShape.TriDiag diag, MatrixShape.Content up) =>
    Triangular.Triangular lo diag up size a -> Maybe String
 checkUnitDiagonal =
-   flip toMaybe "Triangular.Unit with non-unit diagonal elements" .
+   assert "Triangular.Unit with non-unit diagonal elements" .
    all (Scalar.equal Scalar.one) . Vector.toList . Triangular.takeDiagonal
 
 instance
@@ -85,7 +88,7 @@
             Banded.mapHeight Shape.Deferred $
             Banded.mapWidth Shape.Deferred $
             Banded.mapExtent Extent.toGeneral arr0
-      in flip toMaybe "Banded with non-zero unused elements" $
+      in assert "Banded with non-zero unused elements" $
          all (Scalar.isZero . (arr!)) $
          filter
             (\ix -> case ix of MatrixShape.InsideBox _ _ -> False; _ -> True) $
@@ -97,7 +100,7 @@
    check arr =
       let u = BandedHermitian.takeUpper arr
       in check u <|>
-         (flip toMaybe "BandedHermitian with non-real diagonal" .
+         (assert "BandedHermitian with non-real diagonal" .
           isReal . Banded.takeDiagonal $ u)
 
 isReal :: (Shape.C sh, Class.Floating a) => Vector sh a -> Bool
