diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Version history of koji-tool
 
+# 0.6.1 (2022-01-14)
+- install --list: now lists the rpms of a unique nvr
+- install --list: new --latest option which only finds the latest build
+- install --nv: now actually looks for N-V nor N-V-R
+- install --exclude: don't exclude subpackage when a rpm package matches
+
 ## 0.6 (2022-01-13)
 - renamed from koji-install to koji-tool, which combines koji-query and koji-progress
 - subcommands are 'install', 'query', 'progress', and 'buildlog-sizes'
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@
 ```shellsession
 $ koji-tool install --help
 Usage: koji-tool install [-n|--dry-run] [-D|--debug] [-H|--hub HUB]
-                         [-P|--packages-url URL] [-l|--list]
+                         [-P|--packages-url URL] [-l|--list] [-L|--latest]
                          [(-a|--all) | (-A|--ask) | [-p|--package SUBPKG]
                            [-x|--exclude SUBPKG]] [-d|--disttag DISTTAG]
                          [(-R|--nvr) | (-V|--nv)] PKG|NVR|TASKID...
@@ -127,6 +127,7 @@
                            rpmfusion, or URL) [default: fedora]
   -P,--packages-url URL    KojiFiles packages url [default: Fedora]
   -l,--list                List builds
+  -L,--latest              Latest build
   -a,--all                 all subpackages
   -A,--ask                 ask for each subpackge [default if not installed]
   -p,--package SUBPKG      Subpackage (glob) to install
diff --git a/koji-tool.cabal b/koji-tool.cabal
--- a/koji-tool.cabal
+++ b/koji-tool.cabal
@@ -1,9 +1,9 @@
 name:                koji-tool
-version:             0.6
+version:             0.6.1
 synopsis:            Koji CLI tool for querying tasks and installing builds
 description:
         koji-tool is a CLI interface to Koji with commands to query tasks,
-        install rpms, and check buildlog sizes.
+        install rpms, and track buildlog sizes.
         .
         Koji is the RPM-based buildsystem of Fedora Linux and CentOS.
 license:             BSD3
diff --git a/src/Install.hs b/src/Install.hs
--- a/src/Install.hs
+++ b/src/Install.hs
@@ -70,9 +70,9 @@
 -- FIXME --arch (including src)
 -- FIXME --debuginfo
 -- FIXME --delete after installing
-installCmd :: Bool -> Bool -> Maybe String -> Maybe String -> Bool -> Mode
-        -> String -> Request -> [String] -> IO ()
-installCmd dryrun debug mhuburl mpkgsurl listmode mode disttag request pkgbldtsks = do
+installCmd :: Bool -> Bool -> Maybe String -> Maybe String -> Bool -> Bool
+           -> Mode -> String -> Request -> [String] -> IO ()
+installCmd dryrun debug mhuburl mpkgsurl listmode latest mode disttag request pkgbldtsks = do
   let huburl = maybe fedoraKojiHub hubURL mhuburl
       pkgsurl = fromMaybe (defaultPkgsURL huburl) mpkgsurl
   when debug $ do
@@ -95,11 +95,14 @@
 
     kojiBuildRPMs :: String -> String -> String -> String -> IO [String]
     kojiBuildRPMs huburl pkgsurl dlDir pkgbld = do
-      nvrs <- kojiBuildOSBuilds debug huburl listmode disttag request pkgbld
+      nvrs <- kojiBuildOSBuilds debug huburl listmode latest disttag request pkgbld
       if listmode
         then if mode /= PkgsReq [] []
+                -- FIXME:
              then error' "modes not supported for listing build"
-             else return nvrs
+             else case nvrs of
+                    [nvr] -> ([nvr,""] ++) . map (<.> "rpm") . sort . filter (not . debugPkg) <$> kojiGetBuildRPMs huburl nvr
+                    _ -> return nvrs
         else
         case nvrs of
           [] -> error' $ pkgbld ++ " not found for " ++ disttag
@@ -214,6 +217,8 @@
   -- FIXME somehow determine unused excludes
   foldl' (exclude subpkgs) [] rpms
   where
+    rpmnames = map nvraName rpms
+
     exclude :: [String] -> [String] -> String -> [String]
     exclude [] acc rpm = acc ++ [rpm]
     exclude (pat:pats) acc rpm =
@@ -226,6 +231,7 @@
           let comppat = compile pat
           in if isLiteral comppat
              then pat == rpmname ||
+                  pat `notElem` rpmnames &&
                   maybe False (\b -> (b ++ '-' : pat) == rpmname) mbase
              else match comppat rpmname
 selectRPMs mbase (subpkgs,exclpkgs) rpms =
@@ -246,16 +252,22 @@
     'n' -> return Nothing
     _ -> rpmPrompt rpm
 
-kojiBuildOSBuilds :: Bool -> String -> Bool -> String -> Request -> String
-                  -> IO [String]
-kojiBuildOSBuilds debug hub listmode disttag request pkgpat = do
-  let (pkg,full) = packageOfPattern pkgpat
+kojiBuildOSBuilds :: Bool -> String -> Bool -> Bool -> String -> Request
+                  -> String -> IO [String]
+kojiBuildOSBuilds debug hub listmode latest disttag request pkgpat = do
+  when debug $ putStrLn pkgpat
+  let (pkg,full) = packageOfPattern request pkgpat
       oldkoji = "rpmfusion" `isInfixOf` hub
+  when debug $ putStrLn pkg
+  when (latest && request == ReqNVR) $
+    error' "cannot use --latest with --nvr"
+  when (latest && not listmode) $
+    putStrLn "--latest is implied when not using --list"
   when (oldkoji && ("*" `isInfixOf` pkgpat || request /= ReqName)) $
     error' "cannot use pattern with this kojihub"
   mpkgid <- Koji.getPackageID hub pkg
   case mpkgid of
-    Nothing -> error $ "package not found: " ++ pkg
+    Nothing -> error' $ "package not found: " ++ pkg
     Just pkgid -> do
       -- strictly should getAPIVersion
       let opts = (if oldkoji
@@ -264,7 +276,7 @@
                  [("packageID", ValueInt pkgid),
                   ("state", ValueInt (fromEnum BuildComplete)),
                   ("queryOpts",ValueStruct
-                    [("limit",ValueInt $ if listmode || oldkoji then 10 else 1),
+                    [("limit",ValueInt $ if listmode && not latest || oldkoji then 10 else 1),
                      ("order",ValueString "-build_id")])]
       when debug $ print opts
       nvrs <- mapMaybe (lookupStruct "nvr") <$> Koji.listBuilds hub opts
@@ -279,17 +291,17 @@
                rs@(r:_) ->
                  if listmode then rs else [r]
         else nvrs
-  where
-    packageOfPattern :: String -> (String, Bool)
-    packageOfPattern pat =
-      case request of
-        ReqName -> (dropSuffix "-" $ takeWhile (/= '*') pat, False)
-        ReqNV ->
-          case readNV pat of
-            NV n _ -> (n, False)
-        ReqNVR ->
-          case readNVR pat of
-            NVR n _ -> (n, True)
+
+packageOfPattern :: Request -> String -> (String, Bool)
+packageOfPattern request pat =
+  case request of
+    ReqName -> (dropSuffix "-" $ takeWhile (/= '*') pat, False)
+    ReqNV ->
+      case readNV pat of
+        NV n _ -> (n, False)
+    ReqNVR ->
+      case readNVR pat of
+        NVR n _ -> (n, True)
 
 kojiGetBuildRPMs :: String -> String -> IO [String]
 kojiGetBuildRPMs huburl nvr = do
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -35,10 +35,11 @@
       <*> optional (strOptionWith 'P' "packages-url" "URL"
                     "KojiFiles packages url [default: Fedora]")
       <*> switchWith 'l' "list" "List builds"
+      <*> switchWith 'L' "latest" "Latest build"
       <*> modeOpt
       <*> disttagOpt sysdisttag
       <*> (flagWith' ReqNVR 'R' "nvr" "Give an N-V-R instead of package name"
-           <|> flagWith ReqName ReqNVR 'V' "nv" "Give an N-V instead of package name")
+           <|> flagWith ReqName ReqNV 'V' "nv" "Give an N-V instead of package name")
       <*> some (strArg "PKG|NVR|TASKID...")
 
     , Subcommand "query"
