diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -44,5 +44,9 @@
 
 ## 0.7.0.0 -- 2021-10-30
 
-* Seventh version. Switched to the Case.Hashable.Cuckoo.getBFstL' function where possible. Updated the 
+* Seventh version. Switched to the Case.Hashable.Cuckoo.getBFstL' function where possible. Updated the
 dependencies appropriately.
+
+## 0.8.0.0 -- 2021-10-31
+
+* Eigth version. Switched back to the CaseBi.Arr.getBFstLSorted' functionality.
diff --git a/Phonetic/Languages/Ukrainian/PrepareText.hs b/Phonetic/Languages/Ukrainian/PrepareText.hs
--- a/Phonetic/Languages/Ukrainian/PrepareText.hs
+++ b/Phonetic/Languages/Ukrainian/PrepareText.hs
@@ -44,7 +44,7 @@
   , aux4
 ) where
 
-import Case.Hashable.Cuckoo (getBFstL')
+import CaseBi.Arr (getBFstLSorted')
 import Data.List.InnToOut.Basic (mapI)
 import Data.Char (isAlpha,toLower)
 import GHC.Arr
@@ -64,7 +64,7 @@
 -- as a single word). This is needed to preserve basic grammar in phonetic languages.
 complexWords :: [String] -> [String]
 complexWords wwss@(xs:ys:zs:ts:xss) =
- getBFstL' (xs:complexWords (ys:zs:ts:xss)) ([("\1074",
+ getBFstLSorted' (xs:complexWords (ys:zs:ts:xss)) ([("\1074",
     if ys == "\1084\1110\1088\1091" && zs == "\1090\1086\1075\1086" &&
     ts == "\1103\1082" then auxiliary2Inner (xs ++ ys ++ zs ++ ts) xss else auxiliary4 wwss),
     ("\1076\1072\1088\1084\1072", if ys == "\1097\1086"
@@ -111,7 +111,7 @@
     ("\1095\1077\1088\1077\1079", if ys == "\1090\1077" && zs == "\1097\1086"
     then auxiliary2Inner (xs ++ ys ++ zs) (ts:xss) else auxiliary4 wwss)]) xs
 complexWords wwss@(xs:ys:zs:xss) =
- getBFstL' (xs:complexWords [ys,zs]) ([("\1076\1072\1088\1084\1072", if ys == "\1097\1086"
+ getBFstLSorted' (xs:complexWords [ys,zs]) ([("\1076\1072\1088\1084\1072", if ys == "\1097\1086"
     then auxiliary3 wwss else auxiliary4 wwss), ("\1079\1072\1083\1077\1078\1085\1086",
     if ys == "\1074\1110\1076" then auxiliary3 wwss else auxiliary4 wwss),
     ("\1085\1077\1079\1072\1083\1077\1078\1085\1086",
@@ -181,7 +181,7 @@
 
 isPreposition :: String -> Bool
 isPreposition ts =
-  getBFstL' False
+  getBFstLSorted' False
    (zip ["\1030\1079", "\1041\1077\1079", "\1041\1110\1083\1103", "\1042",
     "\1042\1110\1076", "\1044\1083\1103", "\1044\1086", "\1047",
     "\1047\1072", "\1047\1072\1088\1072\1076\1080", "\1047\1110",
@@ -216,14 +216,14 @@
 isConcatenated ts
  | null ts = False
  | otherwise = compare (length ts) 2 /= GT &&
-    getBFstL' True (zip ["\1028", "\1042\1080", "\1052\1080", "\1058\1080", "\1058\1110",
+    getBFstLSorted' True (zip ["\1028", "\1042\1080", "\1052\1080", "\1058\1080", "\1058\1110",
      "\1062\1110", "\1071", "\1074\1080", "\1084\1080", "\1090\1080", "\1090\1110",
       "\1094\1110", "\1103", "\1108"] $ replicate 14 False) ts && (head ts `notElem` "\1031\1111")
 {-# INLINE isConcatenated #-}
 
 concatenated2 :: [String] -> [String]
 concatenated2 (xs:ys:xss) =
- getBFstL' (xs:concatenated2 (ys:xss)) (zip ["\1040\1073\1086","\1040\1076\1078\1077",
+ getBFstLSorted' (xs:concatenated2 (ys:xss)) (zip ["\1040\1073\1086","\1040\1076\1078\1077",
  "\1040\1083\1077","\1040\1085\1110\1078","\1041\1086\1076\1072\1081",
  "\1041\1091\1094\1110\1084\1090\1086","\1042\1078\1077","\1042\1080\1082\1083\1102\1095\1085\1086",
  "\1042\1083\1072\1089\1085\1077","\1042\1090\1110\1084","\1044\1072\1074\1072\1081",
@@ -267,7 +267,7 @@
 
 jottedConv :: String -> String
 jottedConv (x:y:xs)
-  | isSpC x = x:(getBFstL' (jottedConv (y:xs))
+  | isSpC x = x:(getBFstLSorted' (jottedConv (y:xs))
      [('\1028', '\1049':'\1077':jottedConv xs),
       ('\1031', '\1049':'\1110':jottedConv xs),
       ('\1070', '\1049':'\1091':jottedConv xs),
@@ -293,7 +293,7 @@
 -- | Is taken from the @mmsyn6ukr@ package version 0.8.1.0 so that the amount of dependencies are reduced (and was slightly modified).
 isUkrainianL :: Char -> Bool
 isUkrainianL y | (y >= '\1040' && y <= '\1065') || (y >= '\1070' && y <= '\1097') = True
-               | otherwise = getBFstL' False (map (\x -> (x, True)) $ "\1028\1030\1031\1068\1100\1102\1103\1108\1110\1111\1168\1169\8217") y
+               | otherwise = getBFstLSorted' False (map (\x -> (x, True)) $ "\1028\1030\1031\1068\1100\1102\1103\1108\1110\1111\1168\1169\8217") y
 
 -------------------------------------
 
diff --git a/Ukrainian/ReverseConcatenations.hs b/Ukrainian/ReverseConcatenations.hs
--- a/Ukrainian/ReverseConcatenations.hs
+++ b/Ukrainian/ReverseConcatenations.hs
@@ -21,7 +21,7 @@
 #endif
 #endif
 import Data.List (sort,isPrefixOf)
-import Case.Hashable.Cuckoo (getBFstL')
+import CaseBi.Arr (getBFstLSorted')
 import Data.List.InnToOut.Basic (mapI)
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -44,7 +44,7 @@
 reverseConcat1 :: Int -> String -> [String]
 reverseConcat1 n xs
  | null xs = []
- | otherwise = getBFstL' (if n == 2 then reverseConcat2 n xs ts us else [xs]) [
+ | otherwise = getBFstLSorted' (if n == 2 then reverseConcat2 n xs ts us else [xs]) [
     howConcat1WordEntirely n "\1040\1073\1086"us,
     ("\1040\1076\1078", howConcat1Word n 1 us "\1077" "\1040\1076\1078\1077" xs),
     howConcat1WordEntirely n "\1040\1083\1077" us,
@@ -194,7 +194,7 @@
 
 reverseConcat2 :: Int -> String -> String -> String -> [String]
 reverseConcat2 n xs ts us =
-  getBFstL' [xs] [("\1041\1110\1083", howConcat1Word n 1 us "\1103" "\1041\1110\1083\1103" xs),
+  getBFstLSorted' [xs] [("\1041\1110\1083", howConcat1Word n 1 us "\1103" "\1041\1110\1083\1103" xs),
   ("\1042\1080\1082", howConcat1Word n 5 us "\1083\1102\1095\1085\1086" "\1042\1080\1082\1083\1102\1095\1085\1086" xs),
   ("\1044\1072\1074", howConcat1Word n 2 us "\1072\1081" "\1044\1072\1074\1072\1081" xs),
   ("\1047\1072\1090", howConcat1Word n 1 us "\1077" "\1047\1072\1090\1077" xs),
diff --git a/phonetic-languages-ukrainian-array.cabal b/phonetic-languages-ukrainian-array.cabal
--- a/phonetic-languages-ukrainian-array.cabal
+++ b/phonetic-languages-ukrainian-array.cabal
@@ -2,7 +2,7 @@
 --  further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                phonetic-languages-ukrainian-array
-version:             0.7.0.0
+version:             0.8.0.0
 synopsis:            Prepares Ukrainian text to be used as a phonetic language text
 description:         Applies needed minimal grammar connections so that the text afterwards can be processed by dobutokO-poetry or phonetic languages approach related programs. Uses arrays instead of vectors. Besides can be used to reverse many of the done concatenations.
 homepage:            https://hackage.haskell.org/package/phonetic-languages-ukrainian-array
@@ -20,7 +20,7 @@
   exposed-modules:     Phonetic.Languages.Ukrainian.PrepareText, Ukrainian.ReverseConcatenations
   -- other-modules:
   other-extensions:    CPP, BangPatterns
-  build-depends:       base >=4.9 && <4.16, mmsyn2-array >=0.2.1.1 && <1, mmsyn5 >=0.5 && <1, hashable >= 1.2.7 && <2
+  build-depends:       base >=4.8 && <4.16, mmsyn2-array >=0.3 && <1, mmsyn5 >=0.5 && <1
   -- hs-source-dirs:
   default-language:    Haskell2010
 
@@ -28,7 +28,7 @@
   main-is:             Main.hs
   other-modules:       Ukrainian.ReverseConcatenations
   other-extensions:    CPP, BangPatterns
-  build-depends:       base >=4.9 && <4.16, mmsyn2-array >= 0.2.1.1 && <1, mmsyn5 >=0.5 && <1, hashable >= 1.2.7 && <2
+  build-depends:       base >=4.8 && <4.16, mmsyn2-array >= 0.3 && <1, mmsyn5 >=0.5 && <1
   ghc-options:         -threaded -rtsopts
   hs-source-dirs:      ., Ukrainian
   default-language:    Haskell2010
