diff --git a/monad-dijkstra.cabal b/monad-dijkstra.cabal
--- a/monad-dijkstra.cabal
+++ b/monad-dijkstra.cabal
@@ -1,5 +1,5 @@
 name:                monad-dijkstra
-version:             0.1.1.0
+version:             0.1.1.1
 synopsis:            Monad transformer for weighted graph searches using Dijkstra's or A* algorithm
 description:         Please see README.md
 homepage:            https://github.com/ennocramer/monad-dijkstra
@@ -16,10 +16,10 @@
   hs-source-dirs:      src
   exposed-modules:     Control.Monad.Search
   build-depends:       base >= 4.7 && < 5
-                     , transformers >= 0.4.2.0 && < 0.5.3
+                     , transformers >= 0.4.2.0 && < 0.5.6
                      , mtl >= 2.2.0 && < 2.3
-                     , free >= 4.12.0 && < 4.13
-                     , psqueues >= 0.2.0.0 && < 0.2.3
+                     , free >= 4.12.0 && < 5.2
+                     , psqueues >= 0.2.0.0 && < 0.2.8
   default-language:    Haskell2010
   ghc-options:         -Wall
 
@@ -34,12 +34,15 @@
   default-language:    Haskell2010
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
 
+  if !impl(ghc >= 8.0)
+    build-depends: semigroups >= 0.18.0 && < 0.19
+
 test-suite style-monad-dijkstra
   type:                exitcode-stdio-1.0
   hs-source-dirs:      test
   main-is:             HLint.hs
   build-depends:       base >=4.7 && <5
-                     , hlint ==1.*
+                     , hlint >= 1.0 && <3
   default-language:    Haskell2010
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
+
 module Main ( main ) where
 
 import           Control.Monad        ( mplus, mzero )
 import           Control.Monad.Search
 
+import           Data.Semigroup       as Sem
+
 import           Test.Tasty
 import           Test.Tasty.Hspec
 
@@ -12,9 +16,15 @@
 newtype C = C Int
     deriving (Eq, Ord, Show)
 
+instance Sem.Semigroup C where
+    (C l) <> (C r) = C (l + r)
+
 instance Monoid C where
     mempty = C 0
-    mappend (C l) (C r) = C (l + r)
+
+#if !(MIN_VERSION_base(4,11,0))
+    mappend = (<>)
+#endif
 
 testSearch :: Search C Side -> [(C, Side)]
 testSearch = runSearch
