diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,6 @@
+# 0.3.1 (2020-07-04)
+- fix detection of circular dependencies (bug introduced in 0.3)
+
 # 0.3 (2019-10-10)
 - check package provides instead of rpms
 - use ByteString for packages (provides)
@@ -12,4 +15,3 @@
 
 # 0.1 (2018-07-18)
 - initial release with sort, deps and rdeps (reverse dependencies) commands
-
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 import Data.Graph.Inductive.Query.DFS (xdfsWith, topsort', scc, components)
 import Data.Graph.Inductive.Tree (Gr)
 import qualified Data.Graph.Inductive.Graph as Graph
@@ -112,7 +114,7 @@
       if parallel then
         mapM_ ((B.putStrLn . B.cons '\n' . B.unwords . map package) . topsort' . subgraph graph) (components graph)
         else mapM_ (B.putStrLn . package) $ topsort' graph
- 
+
 depsSpecFiles :: Bool -> Bool -> Bool -> Bool -> Maybe FilePath -> [Package] -> IO ()
 depsSpecFiles rev verbose lenient parallel mdir pkgs = do
   allpkgs <- map B.pack . filter (\ f -> head f /= '.') <$> listDirectory "."
@@ -182,7 +184,7 @@
 
 getCycles :: Gr a b -> [[Graph.Node]]
 getCycles =
-   filter (\ x -> length x == 3) . scc
+   filter ((>= 2) . length) . scc
 
 -- returns the first word for each line
 rpmspecQuery :: Bool -> [String] -> FilePath -> IO (Maybe [B.ByteString])
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -32,9 +32,9 @@
 and thus in this case the list of packages cannot be reliably used
 for a sequence of builds.
 
-However `rpmbuild-order deps` and `rpmbuild-order rdeps` take
+However the `deps` and `rdeps` commands take
 other neighbouring package directories into account.
 
 2. repoquery is not used to resolve Requires or filelists for Provides.
-So if a package BuildRequires: /usr/bin/sometool it will not be resolved.
+So if a package BuildRequires a file, it will not be resolved to a package.
 This may get addressed in a future version.
diff --git a/rpmbuild-order.cabal b/rpmbuild-order.cabal
--- a/rpmbuild-order.cabal
+++ b/rpmbuild-order.cabal
@@ -1,11 +1,11 @@
 Name:             rpmbuild-order
-Version:          0.3
+Version:          0.3.1
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
 Maintainer:       Jens Petersen <petersen@redhat.com>
 Copyright:        2010-2018  Henning Thielemann,
-                  2018-2019 Jens Petersen <petersen@redhat.com>
+                  2018-2020 Jens Petersen <petersen@redhat.com>
 Category:         Distribution
 Homepage:         https://github.com/juhp/rpmbuild-order
 Bug-reports:      https://github.com/juhp/rpmbuild-order/issues
@@ -21,8 +21,9 @@
   are affected when a low-level package changes.
 Tested-with:       GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4,
                    GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2,
-                   GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.1
-Cabal-Version:     >=1.6
+                   GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3
+                   GHC == 8.10.1
+Cabal-Version:     >=1.10
 Build-Type:        Simple
 Extra-source-files: README.md TODO ChangeLog.md rpmbuild-order.1
 
@@ -44,5 +45,5 @@
 
   GHC-Options:      -Wall
   Main-Is:          Main.hs
-  Extensions:       CPP
   Other-modules:    Paths_rpmbuild_order
+  Default-language: Haskell2010
