diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -20,6 +20,7 @@
   * Handle flags and libraries for garbage collection when specified
   * Install `patscc` and other ATS tooling
   * Install manual pages and shell completions
+  * Install ATS libraries
 
 Things that `atspkg` will not do for you:
 
@@ -29,7 +30,6 @@
   * Provide a centralized package repository
   * Offer a common architecture for package builds
   * Cache builds locally (like `nix` or `cabal`)
-  * Cache binary builds of ATS libraries (this is planned)
 
 ### Example
 
diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: ats-pkg
-version: 2.6.1.3
+version: 2.6.1.11
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -24,7 +24,7 @@
     location: git@github.com:vmchale/atspkg.git
 
 custom-setup
-    setup-depends: base,
+    setup-depends: base -any,
                    Cabal >=2.0,
                    cli-setup >=0.2.0.1
 
@@ -42,7 +42,7 @@
 library
     exposed-modules:
         Language.ATS.Package
-    build-tools: cpphs
+    build-tools: cpphs -any
     hs-source-dirs: src
     other-modules:
         Paths_ats_pkg
@@ -63,32 +63,32 @@
                  -Wincomplete-record-updates -Wcompat
     build-depends:
         base >=4.7 && <5,
-        http-client,
-        bytestring,
-        file-embed,
-        shake,
-        bzlib,
+        http-client -any,
+        bytestring -any,
+        file-embed -any,
+        shake -any,
+        bzlib -any,
         Cabal >=2.0.0.0,
-        lzma,
-        tar,
-        zlib,
-        http-client-tls,
-        text,
-        directory,
-        process,
-        containers,
-        parallel-io,
-        unix,
-        lens,
-        dhall,
-        ansi-wl-pprint,
+        lzma -any,
+        tar -any,
+        zlib -any,
+        http-client-tls -any,
+        text -any,
+        directory -any,
+        process -any,
+        containers -any,
+        parallel-io -any,
+        unix -any,
+        lens -any,
+        dhall >=1.9.0,
+        ansi-wl-pprint -any,
         shake-ats >=1.3.0.0,
         shake-ext >=2.3.0.0,
         composition-prelude >=1.3.0.0,
-        zip-archive,
-        ansi-wl-pprint,
-        binary,
-        dependency,
+        zip-archive -any,
+        ansi-wl-pprint -any,
+        binary -any,
+        dependency -any,
         ats-setup >=0.3.1.1
     
     if flag(development)
@@ -103,16 +103,16 @@
     ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
                  -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
     build-depends:
-        base,
-        ats-pkg,
-        optparse-applicative,
-        lens,
-        shake-ats,
-        temporary,
-        directory,
-        composition-prelude,
-        text,
-        shake
+        base -any,
+        ats-pkg -any,
+        optparse-applicative -any,
+        lens -any,
+        shake-ats -any,
+        temporary -any,
+        directory -any,
+        composition-prelude -any,
+        text -any,
+        shake -any
     
     if flag(no-executable)
         buildable: False
diff --git a/docs/manual.tex b/docs/manual.tex
--- a/docs/manual.tex
+++ b/docs/manual.tex
@@ -38,16 +38,25 @@
     that the libraries dependend on are written in C, ATS, or Haskell.
 \end{enumerate}
 
+\section{Package Resolution}
+
+As ATS is a statically typed language, some form of dependency resolution is
+necessary if we'd like to be able to share data structures between packages.
+
 \section{Builds}
 
 ATSPackage supports three build types: binary, dynamic library, and static
 library.
 
+\subsection{Binary Builds}
+
+ATSPackage allows 
+
 \subsection{Binary Builds with Haskell Dependencies}
 
 ATSPackage allows binary builds with Haskell dependencies by allowing a package
 to depend on an object file generated by GHC. The object file can be generated
-by cabal, so this is a flexible approach.
+by cabal, allowing full use of the Haskell ecosystem.
 
 ATSPackage can also generate data types for ATS based on Haskell types. You can
 use this to eliminate some of the work involved in writing FFI bindings, and
diff --git a/src/Language/ATS/Package/Build.hs b/src/Language/ATS/Package/Build.hs
--- a/src/Language/ATS/Package/Build.hs
+++ b/src/Language/ATS/Package/Build.hs
@@ -215,7 +215,7 @@
 
         ".atspkg/deps" %> \out -> do
             (_, cfgBin') <- cfgBin
-            need [ cfgBin' ]
+            need [ cfgBin', ".atspkg/config" ]
             liftIO $ fetchDeps (ccFromString cc') setup (unpack . fst <$> ds) (unpack . fst <$> cdps) (unpack . fst <$> bdeps) cfgBin' False >> writeFile out ""
 
         let bins = unpack . target <$> bs
@@ -230,8 +230,11 @@
     where g (Bin s t ls hs' atg gc' cSrc extra) =
             atsBin (BinaryTarget (unpack <$> cf) atsToolConfig gc' (unpack <$> ls) [unpack s] hs' (unpackBoth . asTuple <$> atg) mempty (unpack t) (unpack <$> cSrc) (deps extra) Executable)
 
-          h (Lib _ s t ls _ hs' lnk atg cSrc extra _) =
-            atsBin (BinaryTarget (unpack <$> cf) atsToolConfig False (unpack <$> ls) (unpack <$> s) hs' (unpackBoth . asTuple <$> atg) (both unpack <$> lnk) (unpack t) (unpack <$> cSrc) (deps extra) StaticLibrary)
+          h (Lib _ s t ls _ hs' lnk atg cSrc extra sta) =
+            atsBin (BinaryTarget (unpack <$> cf) atsToolConfig False (unpack <$> ls) (unpack <$> s) hs' (unpackBoth . asTuple <$> atg) (both unpack <$> lnk) (unpack t) (unpack <$> cSrc) (deps extra) (k sta))
+
+          k False = SharedLibrary
+          k True  = StaticLibrary
 
           atsToolConfig = ATSToolConfig v v' False (ccFromString cc')
 
diff --git a/src/Language/ATS/Package/Config.hs b/src/Language/ATS/Package/Config.hs
--- a/src/Language/ATS/Package/Config.hs
+++ b/src/Language/ATS/Package/Config.hs
@@ -54,6 +54,10 @@
 
 readUserConfig :: FilePath -> FilePath -> Rules ()
 readUserConfig h cfg = do
+
     want [cfg]
 
-    cfg %> \_ -> liftIO (defaultFileConfig h)
+    e <- liftIO $ doesFileExist cfg
+
+    cfg %> \_ -> unless e $
+        liftIO (defaultFileConfig h)
diff --git a/src/Language/ATS/Package/PackageSet.hs b/src/Language/ATS/Package/PackageSet.hs
--- a/src/Language/ATS/Package/PackageSet.hs
+++ b/src/Language/ATS/Package/PackageSet.hs
@@ -6,7 +6,6 @@
 
 module Language.ATS.Package.PackageSet ( ATSPackageSet (..)
                                        , setBuildPlan
-                                       , mkBuildPlan
                                        , displayList
                                        ) where
 
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
@@ -88,7 +88,6 @@
                }
          deriving (Show, Eq, Generic, Interpret, Binary)
 
--- TODO make binaries optional
 -- | Data type associated with @atspkg.dhall@ file.
 data Pkg = Pkg { bin          :: [Bin] -- ^ List of binaries to be built
                , test         :: [Bin] -- ^ List of test suites
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,19 +1,20 @@
 ---
-resolver: lts-10.5
+resolver: lts-10.6
 packages:
   - '.'
   - 'dependency'
   - 'shake-ats'
   - 'hs2ats'
 extra-deps:
-  - dhall-1.9.1
-  - shake-ext-2.5.0.0
+  - dhall-1.10.0
+  - shake-ext-2.6.0.0
   - composition-prelude-1.3.0.3
-  - language-ats-1.0.1.0
+  - language-ats-1.0.2.1
   - cli-setup-0.2.0.1
-  - ats-setup-0.3.1.1
+  - ats-setup-0.4.0.2
   - hspec-dirstream-0.3.0.0
   - dirstream-1.0.3
+  - prettyprinter-1.2.0.1
 flags:
   ats-pkg:
     development: false
