diff --git a/cblrepo.cabal b/cblrepo.cabal
--- a/cblrepo.cabal
+++ b/cblrepo.cabal
@@ -1,5 +1,5 @@
 name: cblrepo
-version: 0.14.0
+version: 0.15.0
 cabal-version: >= 1.6
 license: OtherLicense
 license-file: LICENSE-2.0
@@ -25,12 +25,13 @@
     main-is: Main.hs
     other-modules: PkgDB Add BumpPkgs BuildPkgs Sync Versions Updates ListPkgs PkgBuild OldPkgDB ConvertDB Remove Extract
         Util.Translation Util.Cabal Util.HackageIndex Util.Misc Util.Dist
-    build-depends: base ==4.7.*, filepath ==1.3.*,
-        directory ==1.2.*, Cabal ==1.18.*,
-        bytestring ==0.10.*, tar ==0.4.*, zlib ==0.5.*, mtl >=2.0 && <2.2,
+    build-depends: base ==4.8.*, filepath ==1.4.*,
+        directory ==1.2.*, Cabal ==1.22.*,
+        bytestring ==0.10.*, tar ==0.4.*, zlib ==0.5.*, mtl ==2.2.*,
         process ==1.2.*, Unixutils ==1.52.*, unix ==2.7.*,
         ansi-wl-pprint ==0.6.*, aeson ==0.8.*,
-        optparse-applicative ==0.11.*, safe, containers, utf8-string
+        optparse-applicative ==0.11.*, safe ==0.3.*, containers ==0.5.*,
+        utf8-string ==1
 
 Source-Repository head
     Type:                 git
diff --git a/src/Add.hs b/src/Add.hs
--- a/src/Add.hs
+++ b/src/Add.hs
@@ -46,15 +46,15 @@
 -- {{{1 add
 add :: Command ()
 add = do
-    dbFn <- optGet  dbFile
+    dbFn <- asks  dbFile
     db <- liftIO $ readDb dbFn
-    dr <- optGet  dryRun
-    ghcVersion <- optGet $ ghcVer . optsCmd
-    filePkgs <- optGet $ cmdAddFileCbls . optsCmd
-    idxPkgs <- optGet $ cmdAddCbls . optsCmd
+    dr <- asks  dryRun
+    ghcVersion <- asks $ ghcVer . optsCmd
+    filePkgs <- asks $ cmdAddFileCbls . optsCmd
+    idxPkgs <- asks $ cmdAddCbls . optsCmd
     --
-    ghcPkgs <- optGet  $ map (uncurry GhcType) . cmdAddGhcPkgs . optsCmd
-    distroPkgs <- optGet $ map (\ (n, v, r) -> DistroType n v r) . cmdAddDistroPkgs . optsCmd
+    ghcPkgs <- asks  $ map (uncurry GhcType) . cmdAddGhcPkgs . optsCmd
+    distroPkgs <- asks $ map (\ (n, v, r) -> DistroType n v r) . cmdAddDistroPkgs . optsCmd
     genFilePkgs <- mapM (runCabalParseWithTempDir . Cbl.readFromFile . fst) filePkgs
     genIdxPkgs <- mapM ((runCabalParseWithTempDir . Cbl.readFromIdx) . (\ (a, b, _) -> (a, b))) idxPkgs
     genPkgs <- liftM (map RepoType) $ exitOnErrors (genFilePkgs ++ genIdxPkgs)
diff --git a/src/BuildPkgs.hs b/src/BuildPkgs.hs
--- a/src/BuildPkgs.hs
+++ b/src/BuildPkgs.hs
@@ -23,6 +23,6 @@
 
 buildPkgs :: Command ()
 buildPkgs = do
-    db <- optGet dbFile >>= liftIO . readDb
-    pkgs <- optGet  $ pkgs . optsCmd
+    db <- asks dbFile >>= liftIO . readDb
+    pkgs <- asks  $ pkgs . optsCmd
     liftIO $ mapM_ putStrLn $ transitiveDependants db pkgs
diff --git a/src/BumpPkgs.hs b/src/BumpPkgs.hs
--- a/src/BumpPkgs.hs
+++ b/src/BumpPkgs.hs
@@ -23,11 +23,11 @@
 
 bumpPkgs :: Command ()
 bumpPkgs = do
-    dbFn <- optGet dbFile
+    dbFn <- asks dbFile
     db <- liftIO $ readDb dbFn
-    dR <- optGet dryRun
-    pkgs <- optGet  $ pkgs . optsCmd
-    incl <- optGet  $ inclusive . optsCmd
+    dR <- asks dryRun
+    pkgs <- asks  $ pkgs . optsCmd
+    incl <- asks  $ inclusive . optsCmd
     let bpkgs = transDependants db incl pkgs
     let newDb = foldl bumpRelease db bpkgs
     liftIO $ if dR
diff --git a/src/ConvertDB.hs b/src/ConvertDB.hs
--- a/src/ConvertDB.hs
+++ b/src/ConvertDB.hs
@@ -21,24 +21,29 @@
 import qualified PkgDB as NDB
 
 import Control.Monad.Reader
+import System.Directory
 
 convertDb :: Command ()
 convertDb = do
-    inDbFn <- optGet $ inDbFile . optsCmd
-    outDbFn <- optGet $ outDbFile . optsCmd
-    newDb <- liftIO $ liftM (map doConvert) (ODB.readDb inDbFn)
-    liftIO $ NDB.saveDb newDb outDbFn
+    inDbFn <- asks $ inDbFile . optsCmd
+    outDbFn <- asks $ outDbFile . optsCmd
+    dbExist <- liftIO $ doesFileExist inDbFn
+    when dbExist $ do
+        newDb <- fmap doConvertDB (liftIO $ ODB.readDb inDbFn)
+        liftIO $ NDB.saveDb newDb outDbFn
 
-doConvert :: ODB.CblPkg -> NDB.CblPkg
-doConvert o
-    | ODB.isGhcPkg o = NDB.createGhcPkg n v
-    | ODB.isDistroPkg o = NDB.createDistroPkg n v r
-    | ODB.isRepoPkg o = NDB.createRepoPkg n v x d f r
-    | otherwise = error ""
+doConvertDB :: ODB.CblDB -> NDB.CblDB
+doConvertDB = map doConvert
     where
-        n = ODB.pkgName o
-        v = ODB.pkgVersion o
-        x = 0
-        d = ODB.pkgDeps o
-        f = ODB.pkgFlags o
-        r = ODB.pkgRelease o
+        doConvert o
+            | ODB.isGhcPkg o = NDB.createGhcPkg n v
+            | ODB.isDistroPkg o = NDB.createDistroPkg n v r
+            | ODB.isRepoPkg o = NDB.createRepoPkg n v x d f r
+            | otherwise = error ""
+            where
+                n = ODB.pkgName o
+                v = ODB.pkgVersion o
+                x = 0
+                d = ODB.pkgDeps o
+                f = ODB.pkgFlags o
+                r = ODB.pkgRelease o
diff --git a/src/ListPkgs.hs b/src/ListPkgs.hs
--- a/src/ListPkgs.hs
+++ b/src/ListPkgs.hs
@@ -26,12 +26,12 @@
 
 listPkgs :: Command ()
 listPkgs = do
-    lG <- optGet $ listGhc . optsCmd
-    lD <- optGet $ listDistro . optsCmd
-    lR <- optGet $ noListRepo . optsCmd
-    lH <- optGet $ hackageFmt . optsCmd
-    ps <- optGet $ pkgs . optsCmd
-    db <- optGet dbFile >>= liftIO . readDb
+    lG <- asks $ listGhc . optsCmd
+    lD <- asks $ listDistro . optsCmd
+    lR <- asks $ noListRepo . optsCmd
+    lH <- asks $ hackageFmt . optsCmd
+    ps <- asks $ pkgs . optsCmd
+    db <- asks dbFile >>= liftIO . readDb
     let allPkgs = filter (pkgFilter lG lD lR) db
     let pkgsToList = if null ps
             then allPkgs
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -37,10 +37,13 @@
 import Options.Applicative as OA
 
 -- -- {{{1 command line arguments
+argAppDir, argDbFile :: Parser String
 argAppDir = strOption (long "appdir" <> value "" <> help "Path to application data directory")
 argDbFile = strOption (long "db" <> value "cblrepo.db" <> help "Path to package database")
+argDryRun :: Parser Bool
 argDryRun = switch (short 'n' <> help "Make no changes, (dry run)")
 
+cmdAddPkgOpts :: Parser Cmds
 cmdAddPkgOpts = CmdAdd
     <$> strOption (long "patchdir" <> value "patches" <> help "Location of patches (patches)")
     <*> option ghcVersionArgReader (long "ghc-version" <> value ghcDefVersion <> help "GHC version to use")
diff --git a/src/PkgBuild.hs b/src/PkgBuild.hs
--- a/src/PkgBuild.hs
+++ b/src/PkgBuild.hs
@@ -37,10 +37,10 @@
 
 generatePkgBuild :: String -> ErrorT String Command ()
 generatePkgBuild pkg = do
-        db <- optGet dbFile >>= liftIO . readDb
+        db <- asks dbFile >>= liftIO . readDb
         patchDir <- asks  $ patchDir . optsCmd
-        ghcVer <- optGet $ ghcVer . optsCmd
-        ghcRel <- optGet $ ghcRel . optsCmd
+        ghcVer <- asks $ ghcVer . optsCmd
+        ghcRel <- asks $ ghcRel . optsCmd
         (ver, fa) <- maybe (throwError $ "Unknown package: " ++ pkg) (return . (pkgVersion &&& pkgFlags)) $ lookupPkg db pkg
         --
         genericPkgDesc <- runCabalParseWithTempDir $ Cbl.readFromIdx (pkg, ver)
diff --git a/src/Remove.hs b/src/Remove.hs
--- a/src/Remove.hs
+++ b/src/Remove.hs
@@ -23,15 +23,16 @@
 
 -- {{{1 system
 import Control.Monad.Error
+import Control.Monad.Reader (asks)
 import System.Exit
 
 -- {{{1 remove
 remove :: Command ()
 remove = do
-    dbFn <- optGet dbFile
+    dbFn <- asks dbFile
     db <- liftIO $ readDb dbFn
-    pkgs <- optGet $ pkgs . optsCmd
-    dR <- optGet dryRun
+    pkgs <- asks $ pkgs . optsCmd
+    dR <- asks dryRun
     liftIO $ either
         (\ s -> putStrLn s >> exitFailure)
         (\ newDb -> unless dR $ saveDb newDb dbFn)
diff --git a/src/Sync.hs b/src/Sync.hs
--- a/src/Sync.hs
+++ b/src/Sync.hs
@@ -23,5 +23,5 @@
 
 sync :: Command ()
 sync = do
-    aD <- optGet appDir
+    aD <- asks appDir
     liftIO $ getFromURL indexUrl (aD </> indexFileName)
diff --git a/src/Updates.hs b/src/Updates.hs
--- a/src/Updates.hs
+++ b/src/Updates.hs
@@ -31,9 +31,9 @@
 
 updates :: Command ()
 updates = do
-    db <- optGet dbFile >>= liftIO . readDb
-    aD <- optGet appDir
-    aCS <- optGet $ idxStyle .optsCmd
+    db <- asks dbFile >>= liftIO . readDb
+    aD <- asks appDir
+    aCS <- asks $ idxStyle .optsCmd
     availPkgsNVers <- liftIO $ buildPkgVersions <$> readIndexFile aD
     let nonBasePkgs = filter (not . isBasePkg) db
         pkgsNVers = map (pkgName &&& pkgVersion &&& pkgXRev) nonBasePkgs
diff --git a/src/Util/Cabal.hs b/src/Util/Cabal.hs
--- a/src/Util/Cabal.hs
+++ b/src/Util/Cabal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-
  - Copyright 2014 Per Magnus Therning
  -
diff --git a/src/Util/Misc.hs b/src/Util/Misc.hs
--- a/src/Util/Misc.hs
+++ b/src/Util/Misc.hs
@@ -1,5 +1,6 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-
- - Copyright 2011-2013 Per Magnus Therning
+ - Copyright 2011-2014 Per Magnus Therning
  -
  - Licensed under the Apache License, Version 2.0 (the "License");
  - you may not use this file except in compliance with the License.
@@ -54,7 +55,7 @@
 progName = "cblrepo"
 dbName = progName ++ ".db"
 
-ghcDefVersion = Version [7, 8, 3] []
+ghcDefVersion = Version [7, 10, 1] []
 ghcVersionDep :: Version -> Int -> String
 ghcVersionDep ghcVer ghcRel = "ghc=" ++ display ghcVer ++ "-" ++ show ghcRel
 
@@ -149,10 +150,6 @@
             Just (r, "") -> return r
             _ -> fail $ "Cannot parse: " ++ s
 
--- Helper for grabbing things out of the options
-optGet :: MonadReader o m => (o -> s) -> m s
-optGet f = liftM f ask
-
 -- {{{1 command line argument type
 data Cmds
     = CmdAdd
@@ -206,7 +203,7 @@
         fa
         (DB.checkAgainstDb db n)
         (Platform X86_64 buildOS) -- platform
-        (CompilerId GHC ghcVersion)  -- compiler version
+        (unknownCompilerInfo (CompilerId GHC ghcVersion) NoAbiTag)  -- compiler version
         [] -- no additional constraints
         gpd
     where
diff --git a/src/Util/Translation.hs b/src/Util/Translation.hs
--- a/src/Util/Translation.hs
+++ b/src/Util/Translation.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE FlexibleInstances, OverlappingInstances #-}
+{-# LANGUAGE FlexibleContexts #-}
 {-
  - Copyright 2011 Per Magnus Therning
  -
@@ -21,6 +21,7 @@
 import Util.Misc
 import Util.Dist
 
+import Prelude hiding ( (<$>) )
 import Control.Monad
 import Control.Monad.Error
 import Data.Char
@@ -208,7 +209,7 @@
                 confFlags = if null flags
                     then empty
                     else text " \\" <>
-                        nest 4 (empty <$> (hsep . map (uncurry (<>)) $ zip (repeat $ text "-f") (map pretty flags)))
+                        nest 4 (empty <$> (hsep . map (uncurry (<>)) $ zip (repeat $ text "-f") (map prettyFlag flags)))
 
                 libPackageFunction = text "package() {" <>
                     nest 4 (empty <$>
@@ -283,9 +284,8 @@
 instance Pretty Version where
     pretty (Version b _) = encloseSep empty empty (char '.') (map pretty b)
 
-instance Pretty (FlagName, Bool) where
-    pretty (FlagName n, True) = text n
-    pretty (FlagName n, False) = text $ '-' : n
+prettyFlag (FlagName n, True) = text n
+prettyFlag (FlagName n, False) = text $ '-' : n
 
 -- {{{1 translate
 -- TODO:
@@ -296,7 +296,7 @@
         pkgVer = packageVersion pd
         pkgRel = maybe "1" pkgRelease (lookupPkg db hkgName)
         hasLib = isJust (library pd)
-        licFn = let l = licenseFile pd in if null l then Nothing else Just l
+        licFn = let l = licenseFiles pd in if null l then Nothing else Just (head l)
         archName = (if hasLib then "haskell-" else "") ++ map toLower hkgName
         pkgDesc = synopsis pd
         url = if null (homepage pd) then "http://hackage.haskell.org/package/${_hkgname}" else homepage pd
diff --git a/src/Versions.hs b/src/Versions.hs
--- a/src/Versions.hs
+++ b/src/Versions.hs
@@ -27,9 +27,9 @@
 
 versions :: Command ()
 versions = do
-    aD <- optGet appDir
-    l <- optGet $ latest . optsCmd
-    pkgs <- optGet $ pkgs . optsCmd
+    aD <- asks appDir
+    l <- asks $ latest . optsCmd
+    pkgs <- asks $ pkgs . optsCmd
     let printFunc = if l then printLatestVersion else printAllVersions
     liftIO $ do
         pkgsNVers <- buildPkgVersions <$> readIndexFile aD
