diff --git a/clustering.cabal b/clustering.cabal
--- a/clustering.cabal
+++ b/clustering.cabal
@@ -1,5 +1,5 @@
 name:                clustering
-version:             0.4.0
+version:             0.4.1
 synopsis:            High performance clustering algorithms
 description:
   Following clutering methods are included in this library:
@@ -14,7 +14,7 @@
 license-file:        LICENSE
 author:              Kai Zhang
 maintainer:          kai@kzhang.org
-copyright:           (c) 2015-2018 Kai Zhang
+copyright:           (c) 2015-2019 Kai Zhang
 category:            Math
 build-type:          Simple
 cabal-version:       >=1.10
@@ -33,7 +33,7 @@
       base >=4.0 && <5.0
     , binary
     , containers
-    , matrices >=0.4.0
+    , matrices >=0.5.0
     , mwc-random
     , parallel
     , primitive
diff --git a/src/AI/Clustering/KMeans.hs b/src/AI/Clustering/KMeans.hs
--- a/src/AI/Clustering/KMeans.hs
+++ b/src/AI/Clustering/KMeans.hs
@@ -20,7 +20,7 @@
 import Control.Monad (forM_)
 import Control.Monad.Primitive (PrimMonad, PrimState)
 import qualified Data.Matrix.Unboxed as MU
-import Data.Matrix.Generic (unsafeTakeRow)
+import Data.Matrix.Class (unsafeTakeRow)
 import qualified Data.Matrix.Unboxed.Mutable as MM
 import Data.Ord (comparing)
 import qualified Data.Vector as V
diff --git a/src/AI/Clustering/Utils.hs b/src/AI/Clustering/Utils.hs
--- a/src/AI/Clustering/Utils.hs
+++ b/src/AI/Clustering/Utils.hs
@@ -5,8 +5,8 @@
 
 import Control.Monad (forM_)
 import qualified Data.Vector.Generic as G
-import qualified Data.Matrix.Generic as M
-import qualified Data.Matrix.Generic.Mutable as MM
+import qualified Data.Matrix.Class as M
+import qualified Data.Matrix.Class.Mutable as MM
 
 -- | rearrange the rows of a matrix
 orderBy :: (G.Vector v1 Int, M.Matrix m v2 a) => v1 Int -> m v2 a -> m v2 a
