diff --git a/Unique.cabal b/Unique.cabal
--- a/Unique.cabal
+++ b/Unique.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:          Unique
-version:       0.4.7.9
+version:       0.4.8.0
 license:       BSD3
 license-file:  LICENSE
 maintainer:    ualinuxcn@gmail.com
@@ -29,7 +29,7 @@
         base >=4.0 && < 5,
         containers >=0.5.0.0 && <=0.7,
         extra >=1.6.2 && <=1.8,
-        hashable >= 1.2.6 && <=1.4,
+        hashable >= 1.2.6 && < 1.5,
         unordered-containers >= 0.2.8 && <=0.3
 
 test-suite HspecTest
diff --git a/tests/UniqueStrict/RepeatedBy.hs b/tests/UniqueStrict/RepeatedBy.hs
--- a/tests/UniqueStrict/RepeatedBy.hs
+++ b/tests/UniqueStrict/RepeatedBy.hs
@@ -15,7 +15,7 @@
     repeatedBy (>100) ( [] :: [Int] ) `shouldBe` []
 
   it "repeatedBy: simple test" $ do
-    repeatedBy (>2) "This is the test line" `shouldBe` " eist"
+    sort (repeatedBy (>2) "This is the test line") `shouldBe` " eist"
 
   it "repeatedBy: returns [] when predicate (=< negative) " $
     property $
@@ -39,7 +39,7 @@
   it "repeatedBy: resulted elements should occur only once" $
     property $
     \ x xs -> x > 0
-              ==> all (==1) . map length . group $ repeatedBy (> x) ( xs :: String )
+              ==> all ((==1) . length) . group $ repeatedBy (> x) ( xs :: String )
 
   it "unique: simple test" $ do
     unique  "foo bar" `shouldBe` " abfr"
diff --git a/tests/UniqueUnsorted/RemoveDuplicates.hs b/tests/UniqueUnsorted/RemoveDuplicates.hs
--- a/tests/UniqueUnsorted/RemoveDuplicates.hs
+++ b/tests/UniqueUnsorted/RemoveDuplicates.hs
@@ -4,7 +4,7 @@
 import Test.QuickCheck
 
 import Data.List.UniqueUnsorted
-import Data.List (group)
+import Data.List (group, sort)
 
 
 removeDuplicatesTests :: SpecWith ()
@@ -15,7 +15,7 @@
     removeDuplicates ( [] :: [Int] ) `shouldBe` []
 
   it "removeDuplicates: simple test" $ do
-    removeDuplicates "foo bar" `shouldBe` " abrfo"
+    sort (removeDuplicates "foo bar") `shouldBe` " abfor"
 
   it "removeDuplicates: multiple execution should return the same result" $
     property $
@@ -27,4 +27,4 @@
 
   it "removeDuplicates: elements should occur only once #2" $
     property $
-    \ xs -> all (==1) . map length . group $ removeDuplicates ( xs :: [Integer] )
+    \ xs -> all ((==1) . length) . group $ removeDuplicates ( xs :: [Integer] )
diff --git a/tests/UniqueUnsorted/RepeatedBy.hs b/tests/UniqueUnsorted/RepeatedBy.hs
--- a/tests/UniqueUnsorted/RepeatedBy.hs
+++ b/tests/UniqueUnsorted/RepeatedBy.hs
@@ -4,7 +4,7 @@
 import Test.QuickCheck
 
 import Data.List.UniqueUnsorted
-import Data.List (group)
+import Data.List (group, sort)
 
 
 repeatedByTests :: SpecWith ()
@@ -15,7 +15,7 @@
     repeatedBy (>100) ( [] :: [Int] ) `shouldBe` []
 
   it "repeatedBy: simple test" $ do
-    repeatedBy (>2) "This is the test line" `shouldBe` " stei"
+    sort (repeatedBy (>2) "This is the test line") `shouldBe` " eist"
 
   it "repeatedBy: returns [] when predicate (=< negative) " $
     property $
@@ -29,10 +29,10 @@
   it "repeatedBy: resulted elements should occur only once" $
     property $
     \ x xs -> x > 0
-              ==> all (==1) . map length . group $ repeatedBy (> x) ( xs :: String )
+              ==> all ((==1) . length) . group $ repeatedBy (> x) ( xs :: String )
 
   it "unique: simple test" $ do
-    unique  "foo bar" `shouldBe` " abrf"
+    sort (unique  "foo bar") `shouldBe` " abfr"
 
   it "repeated: simple test" $ do
     repeated  "foo bar" `shouldBe` "o"
