diff --git a/Kit/CmdArgs.hs b/Kit/CmdArgs.hs
--- a/Kit/CmdArgs.hs
+++ b/Kit/CmdArgs.hs
@@ -4,7 +4,7 @@
   import System.Console.CmdArgs as CA
 
   appVersion :: String
-  appVersion = "0.7.0" -- TODO how to keep this up to date with kit.cabal?
+  appVersion = "0.7.4" -- TODO how to keep this up to date with kit.cabal?
 
   data KitCmdArgs = Update
                   | Package
@@ -32,5 +32,5 @@
     ]
 
   parseArgs :: IO KitCmdArgs
-  parseArgs = cmdArgs $ parseMode &= program "kit" &= summary ("Kit " ++ appVersion)
+  parseArgs = cmdArgs $ parseMode &= program "kit" &= summary ("Kit " ++ appVersion) &= versionArg [CA.name "v"] &= helpArg [CA.name "h"]
 
diff --git a/Kit/Contents.hs b/Kit/Contents.hs
--- a/Kit/Contents.hs
+++ b/Kit/Contents.hs
@@ -41,10 +41,9 @@
       resourceDir = liftIO $ do
         let r = base </> kitDir </> specResourcesDirectory spec
         b <- doesDirectoryExist r
-        if b then
-                Just <$> canonicalizePath r
-             else
-                return Nothing
+        if b 
+          then Just <$> canonicalizePath r
+          else return Nothing
   in  KitContents spec <$> headers <*> sources <*> libs <*> config <*> prefix <*> resourceDir
 
 -- TODO report missing file
diff --git a/Kit/Dependency.hs b/Kit/Dependency.hs
--- a/Kit/Dependency.hs
+++ b/Kit/Dependency.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE TupleSections #-}
 module Kit.Dependency (
     totalSpecDependencies,
-    Dependency(..),
+    Dependency,
     depSpec,
     isDevDep,
     dependencyTree,
@@ -15,15 +15,15 @@
 import Data.Tree
 import Data.List
 
-data Dependency = Dep KitSpec | Dev KitSpec FilePath deriving (Eq, Show)
+data Location = Repo | Dev FilePath deriving (Eq, Show)
+data Dependency = Dependency KitSpec Location deriving (Eq, Show)
 
 depSpec :: Dependency -> KitSpec
-depSpec (Dep k) = k
-depSpec (Dev k _) = k
+depSpec (Dependency k _) = k
   
 isDevDep :: Dependency -> Bool
-isDevDep (Dep _) = False
-isDevDep (Dev _ _) = True
+isDevDep (Dependency _ Repo) = False
+isDevDep (Dependency _ (Dev _)) = True
 
 -- | Return all the (unique) children of this tree (except the top node), in reverse depth order.
 refineDeps :: Eq a => Tree a -> [a]
@@ -35,8 +35,11 @@
 totalSpecDependencies repo workingCopy = refineDeps <$> dependencyTree repo workingCopy
 
 dependencyTree :: KitRepository -> WorkingCopy -> KitIO (Tree Dependency)
-dependencyTree repo workingCopy = unfoldTreeM (unfoldDeps repo) (workingKitSpec workingCopy)
+dependencyTree repo workingCopy = unfoldTreeM (unfoldDeps repo workingCopy) (workingKitSpec workingCopy)
 
-unfoldDeps :: KitRepository -> KitSpec -> KitIO (Dependency, [KitSpec])
-unfoldDeps kr ks = (Dep ks,) <$> mapM (readKitSpec kr) (specDependencies ks) 
+unfoldDeps :: KitRepository -> WorkingCopy -> KitSpec -> KitIO (Dependency, [KitSpec])
+unfoldDeps kr wc ks = let devPackages = workingDevPackages wc 
+                          thisDev = find ((packageName ks ==) . packageName . fst) devPackages
+                          theDep = maybe (Dependency ks Repo) (\(ks',fp) -> Dependency ks' (Dev fp)) thisDev
+                       in (theDep,) <$> mapM (readKitSpec kr) (specDependencies $ depSpec theDep) 
 
diff --git a/Kit/Main.hs b/Kit/Main.hs
--- a/Kit/Main.hs
+++ b/Kit/Main.hs
@@ -96,13 +96,7 @@
   handleArgs (KA.CreateSpec name version) = doCreateSpec name version
   handleArgs KA.ShowTree = doShowTree
 
-  kitMain :: IO ()
-  kitMain = do
-    let f = runCommand . handleArgs =<< KA.parseArgs
-    h <- getHomeDirectory
-    fs <- inDirectory h $ glob ".kit/repository/kits/*/*/*.tar.gz"
-    let c = length fs
-    when (c > 0) $ do
+  warnOldRepo c = do
       say Red $ "Warning: Kit now expects packages in '.kit/cache/local' instead of '.kit/repository/kits'. (Found " ++ show c ++ " packages in the old location.)"
       puts ""
       say Red "To fix it, move the old directory into the new path:"
@@ -110,6 +104,13 @@
       say Red "\t$ mv ~/.kit/repository/kits/* ~/.kit/cache/local"
       say Red "\t$ rmdir ~/.kit/repository/kits && rmdir ~/.kit/repository"
       puts ""
+
+  kitMain :: IO ()
+  kitMain = do
+    let f = runCommand . handleArgs =<< KA.parseArgs
+    h <- getHomeDirectory
+    fs <- inDirectory h $ glob ".kit/repository/kits/*/*/*.tar.gz"
+    when (not $ null fs) $ warnOldRepo (length fs)
     catch f $ \e -> do
         alert $ show e
         exitWith $ ExitFailure 1 
diff --git a/Kit/Repository.hs b/Kit/Repository.hs
--- a/Kit/Repository.hs
+++ b/Kit/Repository.hs
@@ -71,13 +71,13 @@
       let source = (localCacheDir kr </> kitPackagePath kit)
       let dest = packagesDirectory kr
       d <- doesDirectoryExist $ dest </> packageFileName kit
-      if not d then do
+      if not d 
+        then do
           putStrLn $ " -> Unpacking from cache: " ++ packageFileName kit
           mkdirP dest 
           inDirectory dest $ system ("tar zxf " ++ source)
           return ()
-        else 
-          putStrLn $ " -> Using local package: " ++ packageFileName kit
+        else putStrLn $ " -> Using local package: " ++ packageFileName kit
       return ()
 
   -- TODO: on publish local, need to flush this particular name/version out
diff --git a/Kit/WorkingCopy.hs b/Kit/WorkingCopy.hs
--- a/Kit/WorkingCopy.hs
+++ b/Kit/WorkingCopy.hs
@@ -19,7 +19,7 @@
 data WorkingCopy = WorkingCopy {
   workingKitSpec :: KitSpec,
   workingSpecFile :: FilePath,
-  workingDevPackages :: [(FilePath, KitSpec)]
+  workingDevPackages :: [(KitSpec, FilePath)]
 } deriving (Eq, Show)
 
 currentWorkingCopy :: KitIO WorkingCopy
@@ -27,17 +27,19 @@
   let specFile = "KitSpec"
   spec <- readSpec specFile
   devKitSpecFiles <- liftIO $ glob "dev-packages/*/KitSpec"
-  let f path = (takeFileName . takeDirectory $ path,) <$> readSpec path
+  let f path = (,takeFileName . takeDirectory $ path) <$> readSpec path
   devKitSpecs <- mapM f devKitSpecFiles
   return $ WorkingCopy spec specFile devKitSpecs
 
 isDevPackage :: WorkingCopy -> KitSpec -> Bool
-isDevPackage wc spec = any (\s -> packageName spec == packageName s) $ map snd (workingDevPackages wc)
+isDevPackage wc spec = any (\s -> packageName spec == packageName s) $ map fst (workingDevPackages wc)
 
 readSpec :: FilePath -> KitIO KitSpec
 readSpec path = checkExists path >>= liftIO . BS.readFile >>= ErrorT . return . parses
   where checkExists pathToSpec = do
           doesExist <- liftIO $ doesFileExist pathToSpec 
-          if doesExist then return pathToSpec else throwError $ "Couldn't find the spec at " ++ pathToSpec 
+          if doesExist 
+            then return pathToSpec 
+            else throwError ("Couldn't find the spec at " ++ pathToSpec)
         parses = maybeToRight "Parse error in KitSpec file" . decodeSpec
 
diff --git a/kit.cabal b/kit.cabal
--- a/kit.cabal
+++ b/kit.cabal
@@ -1,5 +1,5 @@
 name:           kit
-version:        0.7.3
+version:        0.7.4
 cabal-version:  >=1.2
 build-type:     Simple
 license:        BSD3
