diff --git a/hierarchical-spectral-clustering.cabal b/hierarchical-spectral-clustering.cabal
--- a/hierarchical-spectral-clustering.cabal
+++ b/hierarchical-spectral-clustering.cabal
@@ -1,76 +1,80 @@
-name:                hierarchical-spectral-clustering
-version:             0.2.1.0
-synopsis:            Hierarchical spectral clustering of a graph.
-description:         Generate a tree of hierarchical spectral clustering using Newman-Girvan modularity as a stopping criteria.
-homepage:            http://github.com/GregorySchwartz/hierarchical-spectral-clustering#readme
-license:             GPL-3
-license-file:        LICENSE
-author:              Gregory W. Schwartz
-maintainer:          gsch@pennmedicine.upenn.edu
-copyright:           2018 Gregory W. Schwartz
-category:            Bioinformatics
-build-type:          Simple
--- extra-source-files:
-cabal-version:       >=1.10
+cabal-version: >=1.10
+name: hierarchical-spectral-clustering
+version: 0.2.1.1
+license: GPL-3
+license-file: LICENSE
+copyright: 2018 Gregory W. Schwartz
+maintainer: gsch@pennmedicine.upenn.edu
+author: Gregory W. Schwartz
+homepage: http://github.com/GregorySchwartz/hierarchical-spectral-clustering#readme
+synopsis: Hierarchical spectral clustering of a graph.
+description:
+    Generate a tree of hierarchical spectral clustering using Newman-Girvan modularity as a stopping criteria.
+category: Bioinformatics
+build-type: Simple
 
+source-repository head
+    type: git
+    location: https://github.com/GregorySchwartz/hierarchical-spectral-clustering
+
 library
-  hs-source-dirs:      src
-  exposed-modules:     Math.Clustering.Hierarchical.Spectral.Dense
-                     , Math.Clustering.Hierarchical.Spectral.Sparse
-                     , Math.Clustering.Hierarchical.Spectral.Load
-                     , Math.Clustering.Hierarchical.Spectral.Eigen.AdjacencyMatrix
-                     , Math.Clustering.Hierarchical.Spectral.Eigen.FeatureMatrix
-                     , Math.Clustering.Hierarchical.Spectral.Types
-                     , Math.Clustering.Hierarchical.Spectral.Utility
-                     , Math.Graph.Components
-                     , Math.Graph.Types
-  other-modules:       Math.Clustering.Hierarchical.Spectral.Test
-  build-depends:       base >= 4.7 && < 5
-                     , aeson
-                     , cassava
-                     , clustering
-                     , containers
-                     , eigen == 3.3.4.1
-                     , hierarchical-clustering
-                     , hmatrix
-                     , fgl
-                     , managed
-                     , modularity
-                     , mtl
-                     , safe
-                     , sparse-linear-algebra
-                     , spectral-clustering
-                     , streaming
-                     , streaming-bytestring
-                     , streaming-cassava
-                     , streaming-with
-                     , text
-                     , tree-fun
-                     , vector
-  ghc-options:         -O2
-  default-language:    Haskell2010
+    exposed-modules:
+        Math.Clustering.Hierarchical.Spectral.Dense
+        Math.Clustering.Hierarchical.Spectral.Sparse
+        Math.Clustering.Hierarchical.Spectral.Load
+        Math.Clustering.Hierarchical.Spectral.Eigen.AdjacencyMatrix
+        Math.Clustering.Hierarchical.Spectral.Eigen.FeatureMatrix
+        Math.Clustering.Hierarchical.Spectral.Types
+        Math.Clustering.Hierarchical.Spectral.Utility
+        Math.Graph.Components
+        Math.Graph.Types
+    hs-source-dirs: src
+    other-modules:
+        Math.Clustering.Hierarchical.Spectral.Test
+    default-language: Haskell2010
+    ghc-options: -O2
+    build-depends:
+        base >=4.7 && <5,
+        aeson >=1.3.1.1,
+        cassava >=0.5.1.0,
+        clustering >=0.4.0,
+        containers >=0.5.11.0,
+        eigen ==3.3.4.1,
+        hierarchical-clustering >=0.4.6,
+        hmatrix >=0.19.0.0,
+        fgl >=5.6.0.0,
+        managed >=1.0.6,
+        modularity >=0.2.0.3,
+        mtl >=2.2.2,
+        safe >=0.3.17,
+        sparse-linear-algebra >=0.3.1,
+        spectral-clustering >=0.2.1.2,
+        streaming >=0.2.1.0,
+        streaming-bytestring >=0.1.6,
+        streaming-cassava >=0.1.0.1,
+        streaming-with >=0.2.0.0,
+        text >=1.2.3.0,
+        tree-fun >=0.8.1.0,
+        vector >=0.12.0.1
 
 executable cluster-tree
-  hs-source-dirs:      app
-  main-is:             Main.hs
-  ghc-options:         -threaded -rtsopts -O2
-  build-depends:       base
-                     , hierarchical-spectral-clustering
-                     , aeson
-                     , aeson-pretty
-                     , bytestring
-                     , cassava
-                     , containers
-                     , filepath
-                     , hmatrix
-                     , lens
-                     , optparse-generic
-                     , safe
-                     , text
-                     , text-show
-                     , vector
-  default-language:    Haskell2010
-
-source-repository head
-  type:     git
-  location: https://github.com/GregorySchwartz/hierarchical-spectral-clustering
+    main-is: Main.hs
+    hs-source-dirs: app
+    default-language: Haskell2010
+    ghc-options: -threaded -rtsopts -O2
+    build-depends:
+        base >=4.11.1.0,
+        hierarchical-spectral-clustering -any,
+        aeson >=1.3.1.1,
+        aeson-pretty >=0.8.7,
+        bytestring >=0.10.8.2,
+        cassava >=0.5.1.0,
+        containers >=0.5.11.0,
+        filepath >=1.4.2,
+        hmatrix >=0.19.0.0,
+        lens >=4.16.1,
+        optparse-generic >=1.3.0,
+        safe >=0.3.17,
+        text >=1.2.3.0,
+        text-show >=3.7.4,
+        vector >=0.12.0.1
