diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,5 +1,5 @@
 name:                ats-pkg
-version:             1.1.0.1
+version:             1.1.0.2
 synopsis:            Package manager for ATS
 description:         A collection of scripts to make building ATS projects easy.
 homepage:            https://github.com/vmchale/ats-pkg#readme
@@ -43,7 +43,7 @@
                      , unix
                      , lens
                      , dhall
-                     , shake-ext >= 1.1.0.0
+                     , shake-ext >= 1.2.0.0
                      , composition-prelude >= 1.1.0.1
   default-language:    Haskell2010
   if flag(development)
diff --git a/src/Language/ATS/Package.hs b/src/Language/ATS/Package.hs
--- a/src/Language/ATS/Package.hs
+++ b/src/Language/ATS/Package.hs
@@ -29,6 +29,7 @@
         (removeDirectoryRecursive =<< compilerDir v)
 
 newtype Version = Version [Integer]
+    deriving (Eq)
 
 instance Show Version where
     show (Version is) = intercalate "." (show <$> is)
@@ -56,7 +57,7 @@
 
         putStrLn "Fetching compiler..."
         manager <- newManager tlsManagerSettings
-        initialRequest <- parseRequest $ pkgUrl v -- "https://github.com/vmchale/fastcat/releases/download/0.1.5/ATS2-Postiats-0.3.8.tar.gz"
+        initialRequest <- parseRequest $ pkgUrl v
         response <- responseBody <$> httpLbs (initialRequest { method = "GET" }) manager
 
         putStrLn "Unpacking compiler..."
diff --git a/src/Language/ATS/Package/Dependency.hs b/src/Language/ATS/Package/Dependency.hs
--- a/src/Language/ATS/Package/Dependency.hs
+++ b/src/Language/ATS/Package/Dependency.hs
@@ -26,16 +26,12 @@
                              }
     deriving (Eq, Show, Generic, Interpret)
 
--- https://github.com/vmchale/polyglot/archive/0.3.27.tar.gz
-
 fetchDeps :: [Dependency] -> IO ()
-fetchDeps deps = do
-
-    putStrLn "Setting up ATS dependencies..."
-
-    let libs = fmap buildHelper deps
-
-    parallel_ libs >> stopGlobalPool
+fetchDeps deps =
+    unless (null deps) $ do
+        putStrLn "Setting up ATS dependencies..."
+        let libs = fmap buildHelper deps
+        parallel_ libs >> stopGlobalPool
 
 buildHelper :: Dependency -> IO ()
 buildHelper (Dependency lib' dirName' url'') = do
diff --git a/src/Language/ATS/Package/Exec.hs b/src/Language/ATS/Package/Exec.hs
--- a/src/Language/ATS/Package/Exec.hs
+++ b/src/Language/ATS/Package/Exec.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE OverloadedStrings #-}
+
 module Language.ATS.Package.Exec ( exec
                                  , buildAll
                                  ) where
 
+import           Control.Composition
 import           Data.Bool                 (bool)
+import           Dhall                     hiding (bool)
 import           Language.ATS.Package
 import           Language.ATS.Package.Type
 import           System.Directory          (doesFileExist)
@@ -11,15 +15,14 @@
 check :: IO Bool
 check = do
     home <- getEnv "HOME"
-    doesFileExist (home ++ "/.atspkg/0.3.8/bin/patscc") -- FIXME version
+    v <- want
+    doesFileExist (home ++ "/.atspkg/" ++ show v ++ "/bin/patscc")
 
 exec :: IO ()
 exec = bool (buildAll >> mkPkg) mkPkg =<< check
 
-latest :: Version
-latest = Version [0,3,8]
+want :: IO Version
+want = Version . compiler <$> input auto "./atspkg.dhall"
 
 buildAll :: IO ()
-buildAll =
-    fetchCompiler latest >>
-    setupCompiler latest
+buildAll = on (>>) (=<< want) fetchCompiler setupCompiler
diff --git a/src/Language/ATS/Package/Type.hs b/src/Language/ATS/Package/Type.hs
--- a/src/Language/ATS/Package/Type.hs
+++ b/src/Language/ATS/Package/Type.hs
@@ -4,7 +4,6 @@
 
 module Language.ATS.Package.Type ( Pkg (..)
                                  , Bin (..)
-                                 , printConfig
                                  , pkgToAction
                                  , mkPkg
                                  , mkManpage
@@ -56,7 +55,7 @@
         bins <- fmap (TL.unpack . target) . bin <$> getConfig
         need bins
         home <- fromMaybe "" <$> getEnv "HOME"
-        let binDest = fmap (((home <> "/.local/bin/") <>) . takeBaseName) bins
+        let binDest = ((home <> "/.local/bin/") <>) . takeBaseName <$> bins
         void $ zipWithM copyFile' bins binDest
         case man config of
             Just mt -> do
@@ -82,7 +81,8 @@
         mapM_ cmd_ tests
 
 pkgToAction :: Pkg -> Rules ()
-pkgToAction (Pkg bs ts mt v _) = do
+pkgToAction (Pkg bs ts mt v v' ds) = do
+    liftIO $ fetchDeps ds
     action (need ["atspkg.dhall"])
     mapM_ g (bs ++ ts)
     let bins = TL.unpack . target <$> bs
@@ -90,15 +90,19 @@
         (Just m) -> want (manTarget m : bins)
         Nothing  -> want bins
 
-    where g (Bin s t ls gc') = atsBin (Version v) gc' (TL.unpack <$> ls) (TL.unpack s) (TL.unpack t)
-
-data Bin = Bin { src :: Text, target :: Text, libs :: [Text], gc :: Bool }
-    deriving (Show, Eq, Generic, Interpret)
+    where g (Bin s t ls gc') = atsBin (Version v) (Version v') gc' (TL.unpack <$> ls) (TL.unpack s) (TL.unpack t)
 
-data Pkg = Pkg { bin :: [Bin], test :: [Bin], man :: Maybe Text, version :: [Integer], dependencies :: [Dependency] }
-    deriving (Show, Eq, Generic, Interpret)
+data Bin = Bin { src    :: Text -- ^ Source file (should end with @.dats@)
+               , target :: Text -- ^ Binary to be built
+               , libs   :: [Text] -- ^ Libraries to link against (e.g. @[ "pthread" ]@)
+               , gc     :: Bool } -- ^ Whether to use the garbage collector
+         deriving (Show, Eq, Generic, Interpret)
 
-printConfig :: IO ()
-printConfig = do
-    x <- input auto "./atspkg.dhall"
-    print (x :: Pkg)
+data Pkg = Pkg { bin          :: [Bin] -- ^ List of binaries to be built
+               , test         :: [Bin] -- ^ List of test suites
+               , man          :: Maybe Text -- ^ Optional (markdown) manpages to be converted using @pandoc@.
+               , version      :: [Integer] -- ^ Library version
+               , compiler     :: [Integer] -- ^ Compiler version
+               , dependencies :: [Dependency] -- ^ List of dependencies
+               }
+         deriving (Show, Eq, Generic, Interpret)
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -3,7 +3,7 @@
 packages:
   - '.'
 extra-deps:
-  - shake-ext-1.1.0.0
+  - shake-ext-1.2.0.0
   - composition-prelude-1.1.0.1
   - language-ats-0.1.0.3
 flags:
