diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # ATSPackage
 
 [![Build Status](https://travis-ci.org/vmchale/atspkg.svg?branch=master)](https://travis-ci.org/vmchale/atspkg)
+[![Hackage](https://img.shields.io/hackage/v/ats-pkg.svg)](http://hackage.haskell.org/package/ats-pkg)
 
 This is a build system for ATS written in Haskell and configured with Dhall. It
 is not fully working, but the configuration format is now stable.
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -41,6 +41,7 @@
              | Test { _targets    :: [String]
                     , _rebuildAll :: Bool
                     , _lint       :: Bool
+                    , _prof       :: Bool
                     }
              | Fetch { _url :: String }
              | Nuke
@@ -50,6 +51,7 @@
                    , _rebuildAll :: Bool
                    , _verbosity  :: Int
                    , _lint       :: Bool
+                   , _prof       :: Bool
                    }
              | Check { _filePath :: String, _details :: Bool }
              | CheckSet { _filePath :: String, _details :: Bool }
@@ -116,12 +118,14 @@
     <*> rebuild
     <*> verbosity
     <*> noLint
+    <*> profile
 
 test' :: Parser Command
 test' = Test
     <$> targets "test"
     <*> rebuild
     <*> noLint
+    <*> profile
 
 valgrind :: Parser Command
 valgrind = Valgrind <$> targets "run with valgrind"
@@ -208,8 +212,8 @@
 run (Fetch u)                     = fetchPkg u
 run Clean                         = mkPkg False True False mempty ["clean"] Nothing 0
 run (Build rs tgt rba v lint tim) = runHelper rba lint tim rs tgt v
-run (Test ts rba lint)            = runHelper rba lint False ("test" : ts) Nothing 0
-run (Run ts rba v lint)           = runHelper rba lint False ("run" : ts) Nothing v
+run (Test ts rba lint tim)        = runHelper rba lint tim ("test" : ts) Nothing 0
+run (Run ts rba v lint tim)       = runHelper rba lint tim ("run" : ts) Nothing v
 run (Install tgt)                 = runHelper False True False ["install"] tgt 0
 run (Valgrind ts)                 = runHelper False True False ("valgrind" : ts) Nothing 0
 run (Pack dir')                   = packageCompiler dir'
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.9.0.2
+version: 2.10.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -88,7 +88,7 @@
         mtl -any,
         dhall >=1.11.0 && <=1.12.0,
         ansi-wl-pprint -any,
-        shake-ats >=1.6.0.2,
+        shake-ats >=1.8.0.0,
         shake-ext >=2.6.0.0,
         composition-prelude >=1.3.0.0,
         zip-archive -any,
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
@@ -94,7 +94,7 @@
             Just com -> if not co then pure () else do
                 let com' = unpack com
                     comDest = home <> "/.compleat/" <> takeFileName com'
-                need [com']
+                need [com'] -- FIXME do this all in one step
                 copyFile' com' comDest
             Nothing -> pure ()
 
@@ -251,7 +251,7 @@
             -> Maybe String -- ^ Optional compiler triple (overrides 'ccompiler')
             -> Pkg -- ^ Package data type
             -> Rules ()
-pkgToAction setup rs tgt ~(Pkg bs ts lbs mt _ v v' ds cds bdeps ccLocal cf as dl) =
+pkgToAction setup rs tgt ~(Pkg bs ts lbs mt _ v v' ds cds bdeps ccLocal cf as dl slv) =
 
     unless (rs == ["clean"]) $ do
 
@@ -278,15 +278,15 @@
         mapM_ (g ph) (bs ++ ts)
 
     where g ph (Bin s t ls hs' atg gc' extra) =
-            atsBin (ATSTarget (unpack <$> cf) (atsToolConfig ph) gc' (unpack <$> ls) [unpack s] hs' (unpackTgt <$> atg) mempty (unpack t) (deps extra) Executable)
+            atsBin (ATSTarget (unpack <$> cf) (atsToolConfig ph) gc' (unpack <$> ls) [unpack s] hs' (unpackTgt <$> atg) mempty (unpack t) (deps extra) Executable True)
 
           h ph (Lib _ s t ls _ hs' lnk atg extra sta) =
-            atsBin (ATSTarget (unpack <$> cf) (atsToolConfig ph) False (unpack <$> ls) (unpack <$> s) hs' (unpackTgt <$> atg) (unpackLinks <$> lnk) (unpack t) (deps extra) (k sta))
+            atsBin (ATSTarget (unpack <$> cf) (atsToolConfig ph) False (unpack <$> ls) (unpack <$> s) hs' (unpackTgt <$> atg) (unpackLinks <$> lnk) (unpack t) (deps extra) (k sta) False)
 
           k False = SharedLibrary
           k True  = StaticLibrary
 
-          atsToolConfig ph = ATSToolConfig ph (patsHomeLocsAtsPkg 5) False (ccFromString cc') (not dl)
+          atsToolConfig ph = ATSToolConfig ph (patsHomeLocsAtsPkg 5) False (ccFromString cc') (not dl) slv
 
           cDepsRules ph = unless (null as) $ do
               let targets = fmap (unpack . cTarget) as
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
@@ -49,6 +49,8 @@
         atsDeps' <- setBuildPlan "atsbld" libBldDeps pkgSet atsBld
         cdeps' <- setBuildPlan "c" libDeps pkgSet cdeps
 
+        -- ~/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/c
+
         -- Set up actions
         d <- (<> "lib/") <$> cpkgHome cc'
         let tgt' = getTgt cc'
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
@@ -72,6 +72,9 @@
 
 deriving instance Interpret ForeignCabal
 
+deriving instance Hashable Solver
+deriving instance Interpret Solver
+
 data Src = Src { atsSrc  :: Text
                , cTarget :: Text
                , atsGen  :: [TargetPair]
@@ -117,5 +120,6 @@
                , cflags       :: [Text] -- ^ List of flags to pass to the C compiler
                , atsSource    :: [Src] -- ^ ATS source to be compile to C.
                , dynLink      :: Bool -- ^ Don't link statically, instead, use libraries installed by @atspkg@.
+               , extSolve     :: Solver -- ^ Solver to use.
                }
          deriving (Generic, Interpret, Binary, Hashable)
