diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,3 +41,9 @@
 * Second version revised C. Some performance improvements for splitF function. Documentation 
 improvements.
 
+## 0.2.3.0 -- 2023-03-17
+
+* Second version revised D. Fixed issue with undefined pattern matching. Modified the 
+splitF code with the usage of the modified Data.List.unfoldr code to improve performance.
+Some documentation improvements.
+
diff --git a/rhythmic-sequences.cabal b/rhythmic-sequences.cabal
--- a/rhythmic-sequences.cabal
+++ b/rhythmic-sequences.cabal
@@ -2,7 +2,7 @@
 name:               rhythmic-sequences
 
 -- The package version.
-version:            0.2.2.0
+version:            0.2.3.0
 
 -- A short (one-line) description of the package.
 synopsis:
diff --git a/src/Rhythmicity/MarkerSeqs.hs b/src/Rhythmicity/MarkerSeqs.hs
--- a/src/Rhythmicity/MarkerSeqs.hs
+++ b/src/Rhythmicity/MarkerSeqs.hs
@@ -80,12 +80,15 @@
 instance Show a => Show (ASort3 a) where
   show (As3 n k x) = show n ++ '&':show k ++ '~':show x
 
--- | Split the list into lists of @n@ elements where @n@ is the first parameter.
+-- | Split the list into lists of @n@ elements where @n@ is the first parameter. Can be used 
+-- efficiently just for the finite lists. Contains the modified code of the 'Data.List.unfoldr'
+-- function from the @base@ package.
 splitF :: Int -> [a] -> [[a]]
-splitF n ys =  f' n q ys
-   where q = length ys `quot` n
-         f' n q ks@(_:_) = let (ts,ws) = splitAt n ks in ts : f' n (q - 1) ws
-         f' _ 0 _ = [] 
+splitF n ys = let q = length ys `quot` n in take q . g (\xs -> splitAt n xs) $ ys
+  where {-# INLINE g #-} -- Is a modified 'Data.List.unfoldr' code.
+        g f b0 = build (\c n ->
+          let go b = case f b of
+                      (a, new_b) -> a `c` go new_b in go b0)
 
 -- | Function to get basic data for hash-based evaluation of the rhythmicity of the list data. Is
 -- used internally in the 'countHashesG'.
