diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -24,6 +24,7 @@
 import Math.Graph.Types
 import Options.Generic
 import Safe (atMay)
+import System.Directory (createDirectoryIfMissing)
 import System.IO (stdin)
 import Text.Read (readMaybe)
 import TextShow (showt)
@@ -129,6 +130,11 @@
                             { CSV.encDelimiter =
                                 fromIntegral (ord . unDelimiter $ delim')
                             }
+
+    -- Make output directory
+    mapM_
+      (createDirectoryIfMissing True . File.takeDirectory . unOutputTree)
+      outputTree'
 
     clusteringTree <-
         case clusteringType' of
diff --git a/hierarchical-spectral-clustering.cabal b/hierarchical-spectral-clustering.cabal
--- a/hierarchical-spectral-clustering.cabal
+++ b/hierarchical-spectral-clustering.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: hierarchical-spectral-clustering
-version: 0.3.0.0
+version: 0.3.0.1
 license: GPL-3
 license-file: LICENSE
 copyright: 2019 Gregory W. Schwartz
@@ -48,7 +48,7 @@
         mtl >=2.2.2,
         safe >=0.3.17,
         sparse-linear-algebra >=0.3.1,
-        spectral-clustering >=0.3.0.0,
+        spectral-clustering >=0.3.0.1,
         streaming >=0.2.1.0,
         streaming-bytestring >=0.1.6,
         streaming-cassava >=0.1.0.1,
@@ -70,6 +70,7 @@
         bytestring >=0.10.8.2,
         cassava >=0.5.1.0,
         containers >=0.5.11.0,
+        directory >=1.3.1.5,
         filepath >=1.4.2,
         hmatrix >=0.19.0.0,
         lens >=4.16.1,
