diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,3 +8,7 @@
 
 * Second version. Switched to the Case.Hashable.Cuckoo.getBFstL' function and the cuckoo hashtables.
 Updated the dependencies boundaries.
+
+## 0.3.0.0 -- 2021-10-31
+
+* Third version. Switched back to the CaseBi.Arr.getBFstLSorted' function.
diff --git a/Phonetic/Languages/Filters.hs b/Phonetic/Languages/Filters.hs
--- a/Phonetic/Languages/Filters.hs
+++ b/Phonetic/Languages/Filters.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      :  Phonetic.Languages.Filters
--- Copyright   :  (c) OleksandrZhabenko 2020
+-- Copyright   :  (c) OleksandrZhabenko 2020-2021
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -8,8 +8,7 @@
 -- A module allows to change the structure of the function output for the functions of
 -- elements from 'RealFrac' class. At the moment only the equal intervals are supported.
 -- Uses less dependencies than its former analogue package @uniqueness-periods-vector-filters@.
--- Reimports the functions from the @filters-basic@ module except the auxiliary zero2One,
--- so if you intend to use the functionality of both of them, use just this one.
+--
 
 module Phonetic.Languages.Filters (
   -- * One interval used
@@ -26,8 +25,7 @@
 
 import Data.Filters.Basic
 import GHC.Arr
-import Case.Hashable.Cuckoo
-import Data.Hashable (Hashable(..))
+import CaseBi.Arr
 
 -- | Makes a complex interval-based transformation moving the value from its own interval to the corresponding by the list of tuples second element of the
 -- respective pair with the first element being the starting number of the interval (numeration of them begins at 1). The list argument must be sorted
@@ -36,7 +34,7 @@
 -- but they are not checked. For example, the first argument must be less than the second one; the fifth argument must be located between the first two ones;
 -- the third argument must be greater than zero.
 unsafeRearrangeIG
-  :: (RealFrac b, Integral c, Hashable c) => b
+  :: (RealFrac b, Integral c) => b
   -> b
   -> c
   -> [(c,c)]
@@ -44,13 +42,13 @@
   -> b
 unsafeRearrangeIG minE maxE n xs x
  | minE == maxE = x
- | otherwise = x + fromIntegral (getBFstL' n0 xs n0 - n0) * (maxE - minE) / fromIntegral n
+ | otherwise = x + fromIntegral (getBFstLSorted' n0 xs n0 - n0) * (maxE - minE) / fromIntegral n
       where n0 = intervalNRealFrac minE maxE n x
 
 -- | An unzipped variant of the 'unsafeRearrangeIG' function where the list argument is internally 'zip'ped as the second argument with the @[1..n]@.
 -- This allows to shorten the time of the arguments writing.
 unsafeRearrangeIGV
-  :: (RealFrac b, Integral c, Hashable c) => b
+  :: (RealFrac b, Integral c) => b
   -> b
   -> c
   -> [c]
@@ -61,7 +59,7 @@
 
 -- | Swaps the k-th inner interval values with the maximum one's (that is the n-th one) values.
 unsafeSwapIWithMaxI
-  :: (RealFrac b, Integral c, Hashable c) => b
+  :: (RealFrac b, Integral c) => b
   -> b
   -> c -- ^ It is expected to be greater than 0, though this is not checked.
   -> c -- ^ It is expected to be less than the previous argument, but greater than 0, though this is not checked.
@@ -80,7 +78,7 @@
 -- (that is the n-th one) values. The list must be not empty and sorted in the ascending order, though it is not checked. Be aware that this can
 -- significantly change the density of the values and break some other properties for distributions.
 unsafeSwapVecIWithMaxI
-  :: (RealFrac b, Integral c, Hashable c) => b
+  :: (RealFrac b, Integral c) => b
   -> b
   -> c -- ^ It is expected to be greater than 0, though this is not checked.
   -> [c] -- ^ It is expected the list to be sorted in the ascending order (indices are counted in it starting with 1 opposed to the usual behaviour for lists and are the numbers of the intervals in the range from 1 to n), and besides all the elements to be less than the previous argument, greater than 0 and to be not pairwise equal, though it is not checked.
@@ -88,7 +86,7 @@
   -> b
 unsafeSwapVecIWithMaxI minE maxE n xs = unsafeRearrangeIGV minE maxE n (map h [0..n - 1])
   where h i
-         | getBFstL' False (zip (map (+ (-1)) xs) . replicate (fromIntegral n) $ True) i = n - 1
+         | getBFstLSorted' False (zip (map (+ (-1)) xs) . replicate (fromIntegral n) $ True) i = n - 1
          | i == n - 1 = head xs
          | otherwise = i
 {-# INLINE unsafeSwapVecIWithMaxI #-}
diff --git a/phonetic-languages-filters-array.cabal b/phonetic-languages-filters-array.cabal
--- a/phonetic-languages-filters-array.cabal
+++ b/phonetic-languages-filters-array.cabal
@@ -2,7 +2,7 @@
 --   For further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                phonetic-languages-filters-array
-version:             0.2.0.0
+version:             0.3.0.0
 synopsis:            Allows to change the structure of the function output.
 description:         Allows to change the structure of the function output for the data types that have instances of the RealFrac class. Is rewritten from the predecessor uniqueness-periods-vector-filters package. Since the 0.2.0.0 version uses hashtables (because of using Case.Hashable.Cuckoo.getBFstL' function).
 homepage:            https://hackage.haskell.org/package/phonetic-languages-filters-array
@@ -20,6 +20,6 @@
   exposed-modules:     Phonetic.Languages.Filters
   -- other-modules:
   -- other-extensions:
-  build-depends:       base >=4.9 && <5, filters-basic >=0.1.1 && <1, mmsyn2-array >= 0.2.1.1 && <1, hashable >= 1.2.7 && <2
+  build-depends:       base >=4.8 && <5, filters-basic >=0.1.1 && <1, mmsyn2-array >= 0.3 && <1
   -- hs-source-dirs:
   default-language:    Haskell2010
