diff --git a/classify-frog.cabal b/classify-frog.cabal
--- a/classify-frog.cabal
+++ b/classify-frog.cabal
@@ -1,5 +1,5 @@
 Name:           classify-frog
-Version:        0.2.4.1
+Version:        0.2.4.2
 License:        BSD3
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
@@ -42,7 +42,7 @@
   model/diclo/hmm-supervised.csv
 
 Source-Repository this
-  Tag:         0.2.4.1
+  Tag:         0.2.4.2
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/classify-frog
 
@@ -98,9 +98,9 @@
   Hs-Source-Dirs: src
 
   Build-Depends:
-    hmm-lapack >=0.3 && <0.4,
-    lapack >=0.2 && <0.3,
-    comfort-array >=0.2 && <0.3,
+    hmm-lapack >=0.4 && <0.5,
+    lapack >=0.3 && <0.4,
+    comfort-array >=0.4 && <0.5,
     text >=1.1 && <1.3,
     lazy-csv >=0.5 && <0.6,
     tagchup >=0.4 && <0.5,
@@ -125,12 +125,11 @@
     filemanip >=0.3.6 && <0.4,
     pathtype >=0.8 && <0.9,
     non-empty >=0.3 && <0.4,
-    semigroups >=0.1 && <1.0,
     containers >=0.4 && <0.7,
     explicit-exception >=0.1.8 && <0.2,
     transformers >=0.2 && <0.6,
     bifunctors >=5 && <6,
-    semigroups >=0.8.4.1 && <0.19,
+    semigroups >=0.8.4.1 && <1.0,
     utility-ht >=0.0.12 && <0.1,
     numeric-prelude >=0.4 && <0.5,
     deepseq >=1.3 && <1.5,
diff --git a/src/Feature.hs b/src/Feature.hs
--- a/src/Feature.hs
+++ b/src/Feature.hs
@@ -634,7 +634,7 @@
    LabelChain.T Int String
 _fineFromCoarseIntervalsBand20 _params rate =
    LabelChain.fineFromCoarseIntervalsInt
-      (case 3::Int of
+      (case fromInteger 3 :: Int of
          0 -> LabelChain.detectClicksExtrema
                  (timeCeil rate (Time 0.01),
                   timeCeil rate (Time 0.03))
diff --git a/src/HiddenMarkovModel.hs b/src/HiddenMarkovModel.hs
--- a/src/HiddenMarkovModel.hs
+++ b/src/HiddenMarkovModel.hs
@@ -10,7 +10,6 @@
 
 import qualified Numeric.LAPACK.Matrix as Matrix
 import qualified Numeric.LAPACK.Vector as Vector
-import Numeric.LAPACK.Matrix (ZeroInt)
 import Numeric.LAPACK.Vector (Vector)
 
 import qualified Data.Array.Comfort.Storable as ComfortArray
@@ -154,7 +153,7 @@
    (Storable a) => NonEmpty.T SVL.Vector a -> SVL.Vector a
 flattenStorableVectorLazy (NonEmpty.Cons x xs) = SVL.cons x xs
 
-prepare :: [Named.NonEmptySignal] -> NonEmpty.T [] (Vector ZeroInt Double)
+prepare :: [Named.NonEmptySignal] -> NonEmpty.T [] (Vector ShapeInt Double)
 prepare nxs =
    let xs = map Named.body nxs
        vecFromList = ComfortArray.map realToFrac . Vector.autoFromList
diff --git a/src/HiddenMarkovModel/Hardwired.hs b/src/HiddenMarkovModel/Hardwired.hs
--- a/src/HiddenMarkovModel/Hardwired.hs
+++ b/src/HiddenMarkovModel/Hardwired.hs
@@ -16,7 +16,6 @@
 import qualified Numeric.LAPACK.Matrix.Square as Square
 import qualified Numeric.LAPACK.Matrix as Matrix
 import qualified Numeric.LAPACK.Vector as Vector
-import Numeric.LAPACK.Matrix (ZeroInt)
 
 import qualified Data.Array.Comfort.Boxed as Array
 import Data.Array.Comfort.Boxed (Array)
@@ -135,21 +134,16 @@
 
 hmmPattern :: Gaussian
 hmmPattern =
-   (HMM.finishTraining $
-    Pat.finish statesShape
-      (Distr.GaussianTrained $
-       Array.fromList statesShape (replicate numberOfStates Nothing) ::
-         Distr.GaussianTrained ShapeInt ShapeState Double)
-      pattern)
-       {HMM.distribution =
-          Distr.gaussian $ Array.fromList statesShape $
+   HMM.finishTraining $ flip Pat.finish pattern $
+      Distr.gaussianTrained $ Array.fromList statesShape $
+         map (\(center,cov) -> (1,center,cov)) $
             (Vector.autoFromList [1.00], covariance [[0.17]]) :
             (Vector.autoFromList [1.60], covariance [[0.60]]) :
             (Vector.autoFromList [0.75], covariance [[0.40]]) :
             (Vector.autoFromList [1.00], covariance [[0.20]]) :
             (Vector.autoFromList [0.60], covariance [[0.30]]) :
             (Vector.autoFromList [1.60], covariance [[0.60]]) :
-            []}
+            []
 
 hmmNamed :: NamedGaussian
 hmmNamed =
@@ -160,13 +154,13 @@
    }
 
 
-type HermitianMatrix = Hermitian.Hermitian ZeroInt
+type HermitianMatrix = Hermitian.Hermitian ShapeInt
 
 covariance :: [[Double]] -> HermitianMatrix Double
 covariance =
    maybe
       (Hermitian.autoFromList MatrixShape.RowMajor [])
-      (Hermitian.covariance . Matrix.fromRowsNonEmpty) .
+      (Hermitian.gramian . Matrix.fromRowsNonEmpty) .
    NonEmpty.fetch . map Vector.autoFromList
 
 
@@ -176,5 +170,5 @@
       HMM.distribution =
          let Distr.Gaussian arr = HMM.distribution model
          in  Distr.Gaussian $
-             fmap (\(center,dev,c) -> (center, Vector.scale k dev, c/k)) arr
+             fmap (\(c,center,dev) -> (c/k, center, Matrix.scale k dev)) arr
    }
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -143,6 +143,8 @@
 import System.Path ((</>), (<.>), )
 import Text.Printf (printf, )
 
+import qualified Numeric.LAPACK.Matrix.Array as ArrMatrix
+import qualified Numeric.LAPACK.Matrix as Matrix
 import qualified Numeric.LAPACK.Vector as Vector
 import qualified Algebra.RealRing as Real
 import qualified Algebra.Ring as Ring
@@ -559,8 +561,8 @@
 printModelDifference :: HMM.Gaussian -> HMM.Gaussian -> IO ()
 printModelDifference hmmSup hmmUnsup =
    void $ printf "difference between supervised and unsupervised: %f\n" $
-      Vector.normInf $
-      Vector.sub (HMM0.transition hmmSup) (HMM0.transition hmmUnsup)
+      Vector.normInf $ ArrMatrix.toVector $
+      Matrix.sub (HMM0.transition hmmSup) (HMM0.transition hmmUnsup)
 
 
 
