diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -87,9 +87,9 @@
       concurrently (readPackages isUrl1 mmgr t1) (readPackages isUrl2 mmgr t2)
 
     readPackages isUrl mmgr loc = do
-      fs <- (if isUrl then httpPackages recursive (fromJust mmgr) else dirPackages) loc
+      fs <- (if isUrl then httpPackages True (fromJust mmgr) else dirPackages True) loc
       let ps = map ((if igArch then binToPkg else id) . readPkg) fs
-      return $ (if igArch then nub else id) ps
+      return $ sort (nub ps)
 
     binToPkg :: Package -> Package
     binToPkg (Pkg n vr _) = Pkg n vr Nothing
@@ -97,14 +97,15 @@
     httpPackages recurse mgr url = do
       exists <- httpExists mgr url
       fs <- if exists
-            then filter (not <$> \ f -> "/" `T.isPrefixOf` f || "?" `T.isPrefixOf` f || f == "../") <$> httpDirectory mgr url
+               -- nub here because opensuse has dup img links
+            then nub . filter (\ f -> f /= "../" && (not . isHttp) (T.unpack f) && not ("/" `T.isPrefixOf` f) && ("/" `T.isSuffixOf` f || ".rpm" `T.isSuffixOf` f)) <$> httpDirectory mgr url
             else error' $ "Could not get " <> url
-      if recurse && all isDir fs then concatMapM (httpPackages False mgr) (map ((url </>) . T.unpack) fs) else return fs
+      if (recurse || recursive) && all isDir fs then concatMapM (httpPackages False mgr) (map ((url </>) . T.unpack) fs) else return $ filter (not . isDir) fs
 
-    dirPackages dir = do
+    dirPackages recurse dir = do
       fs <- sort <$> listDirectory dir
       alldirs <- mapM doesDirectoryExist fs
-      if recursive && and alldirs then concatMapM dirPackages (map (dir </>) fs) else return $ map T.pack fs
+      if (recurse || recursive) && and alldirs then concatMapM (dirPackages False) (map (dir </>) fs) else return $ filter (not . isDir) $ map T.pack fs
 
     isHttp :: String -> Bool
     isHttp loc = "http:" `isPrefixOf` loc || "https:" `isPrefixOf` loc
@@ -115,7 +116,7 @@
 type Arch = Text
 
 data VersionRelease = VerRel Text Text
-  deriving Eq
+  deriving (Eq,Ord)
 
 -- eqVR True ignore release
 eqVR :: Ignore -> VersionRelease -> VersionRelease -> Bool
@@ -129,7 +130,7 @@
     txtVerRel (VerRel v r) = v <> "-" <> r
 
 data Package = Pkg {pkgName :: Name, pkgVerRel :: VersionRelease, pkgMArch :: Maybe Arch}
-  deriving Eq
+  deriving (Eq, Ord)
 
 pkgIdent :: Package -> Text
 pkgIdent p  = pkgName p <> appendArch p
@@ -171,7 +172,7 @@
 showPkgDiff mode (PkgAdd p) | isDefault mode = Just $ "+ " <> showPkg p
 showPkgDiff mode (PkgDel p) | isDefault mode  = Just $ "- " <> showPkg p
 showPkgDiff mode (PkgUpdate p1 p2) | isDefault mode = Just $ " " <> showPkgUpdate p1 p2
-showPkgDiff mode (PkgArch p1 p2) | isDefault mode = Just $ "* " <> showArchChange p1 p2
+showPkgDiff mode (PkgArch p1 p2) | isDefault mode = Just $ "! " <> showArchChange p1 p2
 showPkgDiff _ _ = Nothing
 
 showPkgUpdate :: Package -> Package -> Text
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -14,3 +14,10 @@
 - packageOld v'
  updatedPackage: v1 -> v2
 ```
+
+## Builds
+
+Builds are available in
+[copr](https://copr.fedorainfracloud.org/coprs/petersen/pkgtreediff/)
+for Fedora, EPEL, and OpenSuSE
+([more details](https://copr.fedorainfracloud.org/coprs/petersen/pkgtreediff/monitor/detailed)).
diff --git a/pkgtreediff.cabal b/pkgtreediff.cabal
--- a/pkgtreediff.cabal
+++ b/pkgtreediff.cabal
@@ -1,6 +1,6 @@
 cabal-version:       1.18
 name:                pkgtreediff
-version:             0.2
+version:             0.2.1
 synopsis:            Package tree diff tool
 description:         Tool for comparing RPM package files in OS dist trees.
 homepage:            https://github.com/juhp/pkgtreediff
