diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -96,3 +96,6 @@
 
 * Twelth version revised B. Updated the dependency boundaries of the for just easier update of the dependent packages.
 
+## 0.13.0.0 -- 2022-02-21
+
+* Thirteenth version. Added extended functionality. Changed the versioning policy. 
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -14,24 +14,25 @@
 {-# LANGUAGE CPP, BangPatterns #-}
 
 module Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2 (
-  -- * Functions with 'Int16'
+  -- * Basic functions
+  -- ** Functions with 'Int16'
   procDiverse2I
-  -- * Functions with 'Double'
-  -- ** More general
+  -- ** Functions with 'Double'
+  -- *** More general
   , procB2FG
   , procB2InvFG
-  -- ** Usual ones
+  -- *** Usual ones
   , procDiverse2F
   , procBothF
   , procBothFF
   , procBothInvF
   , procBothInvFF
-  -- ** Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
+  -- *** Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
   , procBoth2F
   , procBoth2FF
   , procBoth2InvF
   , procBoth2InvFF
-  -- ** NEW Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
+  -- *** NEW Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
   , procBoth3F
   , procBoth3FF
   , procBoth3InvF
@@ -40,10 +41,41 @@
   , procBoth4FF
   , procBoth4InvF
   , procBoth4InvFF
-  -- * Working with rhythmicity
+  -- ** Working with rhythmicity
   , procRhythmicity23F
-  -- ** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
+  -- *** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
   , procRhythmicity23FH
+  -- * Extended functions
+  -- ** Functions with 'Int16'
+  , procDiverse2ITup
+  -- ** Functions with 'Double'
+  -- *** More general
+  , procB2FGTup
+  , procB2InvFGTup
+  -- *** Usual ones
+  , procDiverse2FTup
+  , procBothFTup
+  , procBothFFTup
+  , procBothInvFTup
+  , procBothInvFFTup
+  -- *** Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
+  , procBoth2FTup
+  , procBoth2FFTup
+  , procBoth2InvFTup
+  , procBoth2InvFFTup
+  -- *** NEW Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
+  , procBoth3FTup
+  , procBoth3FFTup
+  , procBoth3InvFTup
+  , procBoth3InvFFTup
+  , procBoth4FTup
+  , procBoth4FFTup
+  , procBoth4InvFTup
+  , procBoth4InvFFTup
+  -- ** Working with rhythmicity
+  , procRhythmicity23FTup
+  -- *** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
+  , procRhythmicity23FHTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG21.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG21.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG21.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG21.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG21
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -17,6 +17,11 @@
   , procBothFF
   , procBothInvF
   , procBothInvFF
+  -- ** With tuples
+  , procBothFTup
+  , procBothFFTup
+  , procBothInvFTup
+  , procBothInvFFTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
@@ -24,6 +29,8 @@
 import Phonetic.Languages.Simplified.DataG.Base
 import qualified Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8 as SD
 import Melodics.Ukrainian.ArrInt8
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 procBothF
   :: (Ord c) => (Double -> c)
@@ -54,4 +61,108 @@
   -> FuncRep2 String Double c
 procBothInvFF k g coeffs  = procB2InvFF k g SD.syllableDurationsD coeffs
 {-# INLINE procBothInvFF #-}
+
+-----------------------------------------------
+
+procBothFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBothFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD coeffs
+{-# INLINE procBothFTup #-}
+
+procBothFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBothFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD coeffs
+{-# INLINE procBothFFTup #-}
+
+procBothInvFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBothInvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD coeffs
+{-# INLINE procBothInvFTup #-}
+
+procBothInvFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBothInvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD coeffs
+{-# INLINE procBothInvFFTup #-}
 
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG22.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG22.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG22.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG22.hs
@@ -18,12 +18,20 @@
   , procBoth2FF
   , procBoth2InvF
   , procBoth2InvFF
+  -- ** With tuples
+  , procBoth2FTup
+  , procBoth2FFTup
+  , procBoth2InvFTup
+  , procBoth2InvFFTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
 import Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common
 import Phonetic.Languages.Simplified.DataG.Base
 import qualified Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8 as SD
+import Melodics.Ukrainian.ArrInt8
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 procBoth2F
   :: (Ord c) => (Double -> c)
@@ -54,4 +62,108 @@
   -> FuncRep2 String Double c
 procBoth2InvFF k g coeffs  = procB2InvFF k g SD.syllableDurationsD2 coeffs
 {-# INLINE procBoth2InvFF #-}
+
+-----------------------------------------------
+
+procBoth2FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD2 coeffs
+{-# INLINE procBoth2FTup #-}
+
+procBoth2FFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD2 coeffs
+{-# INLINE procBoth2FFTup #-}
+
+procBoth2InvFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD2 coeffs
+{-# INLINE procBoth2InvFTup #-}
+
+procBoth2InvFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD2 coeffs
+{-# INLINE procBoth2InvFFTup #-}
 
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG23.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG23.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG23.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG23.hs
@@ -18,12 +18,20 @@
   , procBoth3FF
   , procBoth3InvF
   , procBoth3InvFF
+  -- ** With tuples
+  , procBoth3FTup
+  , procBoth3FFTup
+  , procBoth3InvFTup
+  , procBoth3InvFFTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
 import Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common
 import Phonetic.Languages.Simplified.DataG.Base
 import qualified Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8 as SD
+import Melodics.Ukrainian.ArrInt8
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 procBoth3F
   :: (Ord c) => (Double -> c)
@@ -54,3 +62,108 @@
   -> FuncRep2 String Double c
 procBoth3InvFF k g coeffs  = procB2InvFF k g SD.syllableDurationsD3 coeffs
 {-# INLINE procBoth3InvFF #-}
+
+-----------------------------------------------
+
+procBoth3FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth3FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD3 coeffs
+{-# INLINE procBoth3FTup #-}
+
+procBoth3FFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth3FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD3 coeffs
+{-# INLINE procBoth3FFTup #-}
+
+procBoth3InvFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth3InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD3 coeffs
+{-# INLINE procBoth3InvFTup #-}
+
+procBoth3InvFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth3InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD3 coeffs
+{-# INLINE procBoth3InvFFTup #-}
+
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG24.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG24.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG24.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG24.hs
@@ -18,12 +18,20 @@
   , procBoth4FF
   , procBoth4InvF
   , procBoth4InvFF
+  -- ** With tuples
+  , procBoth4FTup
+  , procBoth4FFTup
+  , procBoth4InvFTup
+  , procBoth4InvFFTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
 import Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common
 import Phonetic.Languages.Simplified.DataG.Base
 import qualified Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8 as SD
+import Melodics.Ukrainian.ArrInt8
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 procBoth4F
   :: (Ord c) => (Double -> c)
@@ -54,4 +62,108 @@
   -> FuncRep2 String Double c
 procBoth4InvFF k g coeffs  = procB2InvFF k g SD.syllableDurationsD4 coeffs
 {-# INLINE procBoth4InvFF #-}
+
+-----------------------------------------------
+
+procBoth4FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth4FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD4 coeffs
+{-# INLINE procBoth4FTup #-}
+
+procBoth4FFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth4FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD4 coeffs
+{-# INLINE procBoth4FFTup #-}
+
+procBoth4InvFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth4InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g coeffs
+ = procB2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 g SD.syllableDurationsD4 coeffs
+{-# INLINE procBoth4InvFTup #-}
+
+procBoth4InvFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procBoth4InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g coeffs
+ = procB2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g SD.syllableDurationsD4 coeffs
+{-# INLINE procBoth4InvFFTup #-}
 
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Common.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Common.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Common.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Common.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -31,6 +31,8 @@
 import qualified Languages.Phonetic.Ukrainian.Syllable.ArrInt8 as S
 import Melodics.Ukrainian.ArrInt8
 import Data.Maybe (fromMaybe)
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -109,4 +111,170 @@
   -> FuncRep2 String Double c
 procB2InvFF k h g coeffs = procB2InvFG (eval23CoeffsF k coeffs) h g coeffs
 {-# INLINE procB2InvFF #-}
+
+----------------------------------
+
+procB2FGTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([Double] -> Double)
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2FGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h1 h g coeffs
+ = D (\xs -> let ys = convertToProperUkrainianI8WithTuples  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 . map (\x -> if x == '-' then ' ' else x) $ xs in  ((int2Double . fromEnum . diverse2GLInt8 [-1,0] $ ys)*(h1 . mconcat . g . map (S.divVwls . S.reSyllableCntntsTup tup17 . S.groupSnds) . words1 $ ys))) h
+{-# INLINE procB2FGTup #-}
+
+procB2InvFGTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([Double] -> Double)
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2InvFGTup  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h1 h g coeffs
+ = D (\xs ->
+  let !ys = convertToProperUkrainianI8WithTuples  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 . map (\x -> if x == '-' then ' ' else x) $ xs
+      !z = diverse2GLInt8 [-1,0] ys in if z == 0 then  (h1 . mconcat . g . map (S.divVwls . S.reSyllableCntntsTup tup17 . S.groupSnds) .
+          words1 $ ys) ** 2.0
+        else  ((h1 . mconcat . g . map (S.divVwls . S.reSyllableCntntsTup tup17 . S.groupSnds) . words1 $ ys) / (int2Double . fromEnum $ z))) h
+{-# INLINE procB2InvFGTup #-}
+
+procB2FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2FTup  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h g coeffs
+ = procB2FGTup  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (eval23Coeffs coeffs) h g coeffs
+{-# INLINE procB2FTup #-}
+
+procB2FFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2FFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  k h g coeffs
+ = procB2FGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (eval23CoeffsF k coeffs) h g coeffs
+{-# INLINE procB2FFTup #-}
+
+procB2InvFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2InvFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h g coeffs
+ = procB2InvFGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (eval23Coeffs coeffs) h g coeffs
+{-# INLINE procB2InvFTup #-}
+
+procB2InvFFTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> ([[[Sound8]]] -> [[Double]])
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procB2InvFFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k h g coeffs
+ = procB2InvFGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (eval23CoeffsF k coeffs) h g coeffs
+{-# INLINE procB2InvFFTup #-}
 
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Diverse.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Diverse.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Diverse.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Diverse.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Diverse
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -14,11 +14,14 @@
 module Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Diverse (
   -- * Functions with 'Int16'
   procDiverse2I
+  , procDiverse2ITup
   -- ** Usual ones
   , procDiverse2F
+  , procDiverse2FTup
 ) where
 
 import GHC.Int
+import GHC.Arr (Array)
 import Phonetic.Languages.Simplified.Lists.UniquenessPeriodsG.Base
 import Phonetic.Languages.Simplified.DataG.Base
 import GHC.Float (int2Double)
@@ -35,3 +38,50 @@
   -> FuncRep2 String Double c
 procDiverse2F g = D (int2Double . fromEnum . diverse2GLInt8 [-1,0] . convertToProperUkrainianI8) g
 {-# INLINE procDiverse2F #-}
+
+------------------------------------------------
+
+
+procDiverse2ITup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> (Int16 -> c)
+  -> FuncRep2 String Int16 c
+procDiverse2ITup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 g = D (diverse2GLInt8 [-1,0] . convertToProperUkrainianI8WithTuples tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16) g
+{-# INLINE procDiverse2ITup #-}
+
+procDiverse2FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> (Double -> c)
+  -> FuncRep2 String Double c
+procDiverse2FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 g = D (int2Double . fromEnum . diverse2GLInt8 [-1,0] . convertToProperUkrainianI8WithTuples tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16) g
+{-# INLINE procDiverse2FTup #-}
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Rhythmicity.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Rhythmicity.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Rhythmicity.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2Rhythmicity.hs
@@ -12,10 +12,16 @@
 -- from the @dobutokO-poetry@ package. Instead of vectors, uses arrays.
 
 module Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Rhythmicity (
-  -- * Working with rhythmicity
+  -- * Basic
+  -- ** Working with rhythmicity
   procRhythmicity23F
-  -- ** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
+  -- *** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
   , procRhythmicity23FH
+  -- * Extended
+  -- ** Working with rhythmicity
+  , procRhythmicity23FTup
+  -- *** Working with rhythmicity that can be defined by the user (using 'rhythmicityH')
+  , procRhythmicity23FHTup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
@@ -23,6 +29,8 @@
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Hprime
 import Phonetic.Languages.Simplified.DataG.Base
 import Melodics.Ukrainian.ArrInt8
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 procRhythm23F
   :: (Ord c) => (Double -> c)
@@ -51,3 +59,58 @@
   -> FuncRep2 String Double c
 procRhythmicity23FH k g syllableDurationsDs choice coeffs = D (rhythmicityH k choice syllableDurationsDs coeffs) g
 {-# INLINE procRhythmicity23FH #-}
+
+-------------------------------------------------------
+
+procRhythmicity23FTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> String
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procRhythmicity23FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g choice coeffs = procRhythm23F g choice (rhythmicityTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k) coeffs
+{-# INLINE procRhythmicity23FTup #-}
+
+procRhythmicity23FHTup
+  :: (Ord c) => Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> (Double -> c)
+  -> [[[[Sound8]]] -> [[Double]]]
+  -> String
+  -> Coeffs2
+  -> FuncRep2 String Double c
+procRhythmicity23FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k g syllableDurationsDs choice coeffs = D (rhythmicityHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice syllableDurationsDs coeffs) g
+{-# INLINE procRhythmicity23FHTup #-}
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -21,42 +21,80 @@
   , fstCF
   , sndCF
   , readCF
-  -- * Rhythmicity properties (semi-empirical)
-  -- ** General ones
+  -- * Rhythmicity properties
+  -- ** Rhythmicity properties (semi-empirical)
+  -- *** General ones
   , rhythmicity0H
   , rhythmicity0FH
   , rhythmicityKH
   , rhythmicityKFH
-  -- ** Simple one
+  -- *** Simple one
   , rhythmicity0
   , rhythmicity0F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK
   , rhythmicityKF
-  -- * Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
-  -- ** Simple one
+  -- ** Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
+  -- *** Simple one
   , rhythmicity02
   , rhythmicity02F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK2
   , rhythmicityKF2
-  -- * NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
-  -- ** Simple ones
+  -- ** NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
+  -- *** Simple ones
   , rhythmicity03
   , rhythmicity03F
   , rhythmicity04
   , rhythmicity04F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK3
   , rhythmicityKF3
   , rhythmicityK4
   , rhythmicityKF4
-  -- * General
+  -- ** General
   , rhythmicityG
   , rhythmicityGH
   , rhythmicity
   , rhythmicityH
   , rhythmicityH'
+  -- * Rhythmicity properties extended
+  -- ** Rhythmicity properties (semi-empirical)
+  -- *** General ones
+  , rhythmicity0HTup
+  , rhythmicity0FHTup
+  , rhythmicityKHTup
+  , rhythmicityKFHTup
+  -- *** Simple one
+  , rhythmicity0Tup
+  , rhythmicity0FTup
+  -- *** With weight coefficients
+  , rhythmicityKTup
+  , rhythmicityKFTup
+  -- ** Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
+  -- *** Simple one
+  , rhythmicity02Tup
+  , rhythmicity02FTup
+  -- *** With weight coefficients
+  , rhythmicityK2Tup
+  , rhythmicityKF2Tup
+  -- ** NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
+  -- *** Simple ones
+  , rhythmicity03Tup
+  , rhythmicity03FTup
+  , rhythmicity04Tup
+  , rhythmicity04FTup
+  -- *** With weight coefficients
+  , rhythmicityK3Tup
+  , rhythmicityKF3Tup
+  , rhythmicityK4Tup
+  , rhythmicityKF4Tup
+  -- ** General
+  , rhythmicityGTup
+  , rhythmicityGHTup
+  , rhythmicityTup
+  , rhythmicityHTup
+  , rhythmicityH'Tup
 ) where
 
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG201.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG201.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG201.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG201.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG201
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -15,38 +15,72 @@
 {-# LANGUAGE CPP, BangPatterns, MultiWayIf #-}
 
 module Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG201 (
-  -- * Rhythmicity properties (semi-empirical)
-  -- ** General ones
+  -- * Rhythmicity properties
+  -- ** Rhythmicity properties (semi-empirical)
+  -- *** General ones
   rhythmicity0H
   , rhythmicity0FH
   , rhythmicityKH
   , rhythmicityKFH
-  -- ** Simple one
+  -- *** Simple one
   , rhythmicity0
   , rhythmicity0F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK
   , rhythmicityKF
-  -- * Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
-  -- ** Simple one
+  -- ** Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
+  -- *** Simple one
   , rhythmicity02
   , rhythmicity02F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK2
   , rhythmicityKF2
-  -- * NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
-  -- ** Simple ones
+  -- ** NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
+  -- *** Simple ones
   , rhythmicity03
   , rhythmicity03F
   , rhythmicity04
   , rhythmicity04F
-  -- ** With weight coefficients
+  -- *** With weight coefficients
   , rhythmicityK3
   , rhythmicityKF3
   , rhythmicityK4
   , rhythmicityKF4
-  -- * General
+  -- ** General
   , rhythmicityG
+  -- * Extended rhythmicity properties
+  -- ** Rhythmicity properties (semi-empirical)
+  -- *** General ones
+  , rhythmicity0HTup
+  , rhythmicity0FHTup
+  , rhythmicityKHTup
+  , rhythmicityKFHTup
+  -- *** Simple one
+  , rhythmicity0Tup
+  , rhythmicity0FTup
+  -- *** With weight coefficients
+  , rhythmicityKTup
+  , rhythmicityKFTup
+  -- ** Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
+  -- *** Simple one
+  , rhythmicity02Tup
+  , rhythmicity02FTup
+  -- *** With weight coefficients
+  , rhythmicityK2Tup
+  , rhythmicityKF2Tup
+  -- ** NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package
+  -- *** Simple ones
+  , rhythmicity03Tup
+  , rhythmicity03FTup
+  , rhythmicity04Tup
+  , rhythmicity04FTup
+  -- *** With weight coefficients
+  , rhythmicityK3Tup
+  , rhythmicityKF3Tup
+  , rhythmicityK4Tup
+  , rhythmicityKF4Tup
+  -- ** General
+  , rhythmicityGTup
 ) where
 
 #ifdef __GLASGOW_HASKELL__
@@ -57,9 +91,11 @@
 #endif
 
 import Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8
-import Melodics.Ukrainian.ArrInt8 (Sound8)
+import Melodics.Ukrainian.ArrInt8 (Sound8,FlowSound)
 import Languages.Phonetic.Ukrainian.Syllable.ArrInt8
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -165,3 +201,535 @@
  | null xs = []
  | otherwise = mconcat . f . createSyllablesUkrS $ xs
 {-# INLINE rhythmicityG #-}
+
+rhythmicityGTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([[[Sound8]]] -> [[Double]])-- ^ A function that specifies the syllables durations, analogue of (or one of) the
+  -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package.
+  -> String
+  -> [Double]
+rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f xs@(_:_) = mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 $ xs
+rhythmicityGTup _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = []
+{-# INLINE rhythmicityGTup #-}
+
+-----------------------------------------------------
+
+rhythmicity0HTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([[[Sound8]]]
+  -> [[Double]])
+  -> String
+  -> Double
+rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f = rhythmicityGHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f eval23
+{-# INLINE rhythmicity0HTup #-}
+
+rhythmicity0Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> String
+  -> Double
+rhythmicity0Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 = rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD
+{-# INLINE rhythmicity0Tup #-}
+
+rhythmicity02Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> String
+  -> Double
+rhythmicity02Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 = rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD2
+{-# INLINE rhythmicity02Tup #-}
+
+rhythmicity03Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> String
+  -> Double
+rhythmicity03Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 = rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD3
+{-# INLINE rhythmicity03Tup #-}
+
+rhythmicity04Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> String
+  -> Double
+rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 = rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD4
+{-# INLINE rhythmicity04Tup #-}
+
+-------------------------------------------------------
+
+rhythmicityKHTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([[[Sound8]]]
+  -> [[Double]])
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f k2 k3 = rhythmicityGHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f (eval23K k2 k3)
+{-# INLINE rhythmicityKHTup #-}
+
+rhythmicityKTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k2 k3 = rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD k2 k3
+{-# INLINE rhythmicityKTup #-}
+
+rhythmicityK2Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityK2Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k2 k3 = rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD2 k2 k3
+{-# INLINE rhythmicityK2Tup #-}
+
+rhythmicityK3Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityK3Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k2 k3 = rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD3 k2 k3
+{-# INLINE rhythmicityK3Tup #-}
+
+rhythmicityK4Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityK4Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k2 k3 = rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD4 k2 k3
+{-# INLINE rhythmicityK4Tup #-}
+
+--------------------------------------------------------
+
+rhythmicity0FHTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([[[Sound8]]]
+  -> [[Double]])
+  -> Double
+  -> String
+  -> Double
+rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f k = rhythmicityGHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f (eval23F k)
+{-# INLINE rhythmicity0FHTup #-}
+
+rhythmicity0FTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> Double
+rhythmicity0FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k = rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD k
+{-# INLINE rhythmicity0FTup #-}
+
+rhythmicity02FTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> Double
+rhythmicity02FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k = rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD2 k
+{-# INLINE rhythmicity02FTup #-}
+
+rhythmicity03FTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> Double
+rhythmicity03FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k = rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD3 k
+{-# INLINE rhythmicity03FTup #-}
+
+rhythmicity04FTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> Double
+rhythmicity04FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k = rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD4 k
+{-# INLINE rhythmicity04FTup #-}
+
+--------------------------------------------------------
+
+rhythmicityKFHTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> ([[[Sound8]]]
+  -> [[Double]])
+  -> Double
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f k k2 k3 = rhythmicityGHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f (eval23KF k k2 k3)
+{-# INLINE rhythmicityKFHTup #-}
+
+rhythmicityKFTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k k2 k3 = rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD k k2 k3
+{-# INLINE rhythmicityKFTup #-}
+
+rhythmicityKF2Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKF2Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k k2 k3 = rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD2 k k2 k3
+{-# INLINE rhythmicityKF2Tup #-}
+
+rhythmicityKF3Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKF3Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k k2 k3 = rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD3 k k2 k3
+{-# INLINE rhythmicityKF3Tup #-}
+
+rhythmicityKF4Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> Double
+  -> Double
+  -> String
+  -> Double
+rhythmicityKF4Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k k2 k3 = rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 syllableDurationsD4 k k2 k3
+{-# INLINE rhythmicityKF4Tup #-}
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Common.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Common.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Common.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Common.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -25,10 +25,12 @@
 
 import Languages.Rhythmicity
 import Languages.Rhythmicity.Factor
-import Melodics.Ukrainian.ArrInt8 (Sound8)
+import Melodics.Ukrainian.ArrInt8 (Sound8,FlowSound)
 import Languages.Phonetic.Ukrainian.Syllable.ArrInt8
 import Data.Maybe (isNothing)
 import Text.Read (readMaybe)
+import GHC.Arr
+import GHC.Int
 
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -84,3 +86,30 @@
 {-# INLINE rhythmicityGH #-}
 
 -------------------------------------------------------
+
+rhythmicityGHTup
+ :: Array Int (Int8, Bool)
+ -> Array Int (Int8, Bool)
+ -> Array Int (Int8, Bool)
+ -> Array Int (Int8, Bool)
+ -> Array Int ([Int8], Bool)
+ -> Array Int ([Int8], Int8)
+ -> Array Int (Int8, FlowSound -> Sound8)
+ -> Array Int (Int8, Bool)
+ -> Array Int ([Int8], Bool)
+ -> Array Int ([Int8], Bool)
+ -> Array Int ([Int8], Bool)
+ -> Array Int (Int8, [Int8])
+ -> Array Int (Char,Int8)
+ -> Array Int (Int8,[Int8])
+ -> Array Int (Char, Bool)
+ -> Array Int (Char, Bool)
+ -> Array Int (Int8,Bool)
+ -> ([[[Sound8]]] -> [[Double]])
+ -> ([[Double]] -> Double)
+ -> String
+ -> Double
+rhythmicityGHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 f g xs@(_:_)
+ = g . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 $ xs
+rhythmicityGHTup _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = 0.0
+{-# INLINE rhythmicityGHTup #-}
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2H.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2H.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2H.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2H.hs
@@ -18,6 +18,8 @@
   -- * General
   rhythmicity
   , parseChRhEndMaybe
+  -- * Extended general
+  , rhythmicityTup
 ) where
 
 #ifdef __GLASGOW_HASKELL__
@@ -28,7 +30,7 @@
 #endif
 
 import Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8
-import Melodics.Ukrainian.ArrInt8 (Sound8)
+import Melodics.Ukrainian.ArrInt8 (Sound8,FlowSound)
 import Languages.Phonetic.Ukrainian.Syllable.ArrInt8
 import Data.Maybe (fromMaybe)
 import Text.Read (readMaybe)
@@ -36,6 +38,8 @@
 import Rhythmicity.PolyRhythm
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG201
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -217,3 +221,185 @@
 parseChRhEndMaybe (P2 _ _ _ n) = Just n
 
 ----------------------------------------------------------------
+
+rhythmicityTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> Coeffs2
+  -> String
+  -> Double
+rhythmicityTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice CF0 = if
+ | take 1 choice `elem` ["c","M","N"] || (take 1 choice >= "A" && take 1 choice <= "F") -> let just_probe = readRhythmicity choice in
+           case just_probe of
+             Just (P1 ch rh n) -> rhythmicityABC 1.0 2.0 0.125 ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+             Just (P2 ch rh r n) -> case take 1 choice of
+                   "A" -> rhythmicityPolyWeightedLEF2 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "D" -> rhythmicityPolyWeightedLF2 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "E" -> rhythmicityPolyWeightedLEF3 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "F" -> rhythmicityPolyWeightedLF3 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "B" -> rhythmicityPolyWeightedEF2 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "C" -> rhythmicityPolyWeightedF2 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "M" -> rhythmicityPolyWeightedEF3 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "N" -> rhythmicityPolyWeightedF3 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                   "c" -> rhythmicityPoly 1.0 r ch rh . mconcat . (helperF4 n) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+             _ -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | choice == "0y" -> rhythmicity0Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | choice == "02y" -> rhythmicity02Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | choice == "03y" -> rhythmicity03Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | choice == "0z" -> rhythmicity0FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k
+ | choice == "02z" -> rhythmicity02FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  k
+ | choice == "03z" -> rhythmicity03FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k
+ | choice == "04z" -> rhythmicity04FTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k
+ | take 1 choice == "0" -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | take 1 choice == "w" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+          | otherwise -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | take 1 choice == "x" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+          | otherwise -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+ | otherwise -> if
+    | (take 1 choice == "b" || ((take 1 choice >= "d" && take 1 choice <= "v") || (take 1 choice >= "I" && take 1 choice <= "Z"))) && (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+        case take 1 choice of
+          "b" -> g rhythmicityPolyWeightedLEF3 5 1
+          "d" -> g rhythmicityPolyWeightedLEF30 5 1
+          "e" -> g rhythmicityPolyWeightedLEF3 6 2
+          "f" -> g rhythmicityPolyWeightedLEF30 6 2
+          "g" -> g rhythmicityPolyWeightedLEF2 5 1
+          "h" -> g rhythmicityPolyWeightedLEF20 5 1
+          "i" -> g rhythmicityPolyWeightedLEF2 6 2
+          "j" -> g rhythmicityPolyWeightedLEF20 6 2
+          "k" -> g rhythmicityPolyWeightedLF3 5 1
+          "l" -> g rhythmicityPolyWeightedLF30 5 1
+          "m" -> g rhythmicityPolyWeightedLF3 6 2
+          "n" -> g rhythmicityPolyWeightedLF30 6 2
+          "o" -> g rhythmicityPolyWeightedLF2 5 1
+          "p" -> g rhythmicityPolyWeightedLF20 5 1
+          "q" -> g rhythmicityPolyWeightedLF2 6 2
+          "r" -> g rhythmicityPolyWeightedLF20 6 2
+          "I" -> g rhythmicityPolyWeightedEF3 5 1
+          "J" -> g rhythmicityPolyWeightedEF30 5 1
+          "K" -> g rhythmicityPolyWeightedEF3 6 2
+          "L" -> g rhythmicityPolyWeightedEF30 6 2
+          "O" -> g rhythmicityPolyWeightedEF2 5 1
+          "P" -> g rhythmicityPolyWeightedEF20 5 1
+          "Q" -> g rhythmicityPolyWeightedEF2 6 2
+          "R" -> g rhythmicityPolyWeightedEF20 6 2
+          "W" -> g rhythmicityPolyWeightedF3 5 1
+          "X" -> g rhythmicityPolyWeightedF30 5 1
+          "Y" -> g rhythmicityPolyWeightedF3 6 2
+          "Z" -> g rhythmicityPolyWeightedF30 6 2
+          "U" -> g rhythmicityPolyWeightedF2 5 1
+          "V" -> g rhythmicityPolyWeightedF20 5 1
+          "S" -> g rhythmicityPolyWeightedF2 6 2
+          "T" -> g rhythmicityPolyWeightedF20 6 2
+          "u" -> g rhythmicityPoly 5 1
+          "v" -> g rhythmicityPoly0 5 1
+          "s" -> g rhythmicityPoly 6 2
+          "t" -> g rhythmicityPoly0 6 2
+    | otherwise -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+        where h1 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [1,2,1,n]) . mconcat . (case readMaybe ts::Maybe Int of { Just 1 -> syllableDurationsD ; Just 2 -> syllableDurationsD2 ; Just 3 -> syllableDurationsD3 ; Just 4 -> syllableDurationsD4 }) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              h2 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [2,1,1,n]) . mconcat . (case readMaybe ts::Maybe Int of { Just 1 -> syllableDurationsD ; Just 2 -> syllableDurationsD2 ; Just 3 -> syllableDurationsD3 ; Just 4 -> syllableDurationsD4 }) . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              g f m n
+                | drop 1 choice `elem` ["01","02","03","04"] = h1 f (drop 2 . take 3 $ choice) [True,True,True] m n
+                | drop 1 choice `elem` ["11","12","13","14"] = h1 f (drop 2 . take 3 $ choice) [True,True,False] m n
+                | drop 1 choice `elem` ["21","22","23","24"] = h1 f (drop 2 . take 3 $ choice) [True,False,True] m n
+                | drop 1 choice `elem` ["31","32","33","34"] = h1 f (drop 2 . take 3 $ choice) [True,False,False] m n
+                | drop 1 choice `elem` ["41","42","43","44"] = h2 f (drop 2 . take 3 $ choice) [True,True,True] m n
+                | drop 1 choice `elem` ["51","52","53","54"] = h2 f (drop 2 . take 3 $ choice) [True,True,False] m n
+                | drop 1 choice `elem` ["61","62","63","64"] = h2 f (drop 2 . take 3 $ choice) [True,False,True] m n
+                | drop 1 choice `elem` ["71","72","73","74"] = h2 f (drop 2 . take 3 $ choice) [True,False,False] m n
+                | otherwise = rhythmicity04
+              w1F f ch rh = rhythmicityABC 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              wwF2 g2 xs = let (Just n) = readMaybe xs::Maybe Int in
+                      case n `rem` 4 of
+                       1 -> g2 syllableDurationsD
+                       2 -> g2 syllableDurationsD2
+                       3 -> g2 syllableDurationsD3
+                       _ -> g2 syllableDurationsD4
+              x1F f ch rh = rhythmicityABC0 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              xxF = wwF2 x1F
+              wwF = wwF2 w1F
+              {-# INLINE w1F #-}
+              {-# INLINE wwF2 #-}
+              {-# INLINE x1F #-}
+              {-# INLINE xxF #-}
+              {-# INLINE wwF #-}
+rhythmicityTup  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice (CF2 x y) =
+ case take 1 choice of
+  "0" -> case choice of
+           "0y" -> rhythmicityKTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "02y" -> rhythmicityK2Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "03y" -> rhythmicityK3Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "0z" -> rhythmicityKFTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "02z" -> rhythmicityKF2Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "03z" -> rhythmicityKF3Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "04z" -> rhythmicityKF4Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           _ -> rhythmicityK4Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+  "w" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+          | otherwise -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              where w1F f ch rh = rhythmicityABC 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                    wwF xs = let (Just n) = readMaybe xs::Maybe Int in
+                      case n `rem` 4 of
+                       1 -> w1F syllableDurationsD
+                       2 -> w1F syllableDurationsD2
+                       3 -> w1F syllableDurationsD3
+                       _ -> w1F syllableDurationsD4
+                    {-# INLINE w1F #-}
+                    {-# INLINE wwF #-}
+  "x" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+          | otherwise -> rhythmicity04Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              where x1F f ch rh = rhythmicityABC0 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                    xxF xs = let (Just n) = readMaybe xs::Maybe Int in
+                      case n `rem` 4 of
+                       1 -> x1F syllableDurationsD
+                       2 -> x1F syllableDurationsD2
+                       3 -> x1F syllableDurationsD3
+                       _ -> x1F syllableDurationsD4
+                    {-# INLINE x1F #-}
+                    {-# INLINE xxF #-}
+  _ -> if
+     | ((take 1 choice >= "b" && take 1 choice <= "v") || (take 1 choice >= "A" && take 1 choice <= "Z" && take 1 choice `notElem` ["G","H"])) -> rhythmicityTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  k choice CF0
+     | otherwise -> rhythmicityK4Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (fromMaybe 1.0 x) (fromMaybe 1.0 y)
diff --git a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Hprime.hs b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Hprime.hs
--- a/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Hprime.hs
+++ b/Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2Hprime.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Hprime
--- Copyright   :  (c) OleksandrZhabenko 2020-2021
+-- Copyright   :  (c) OleksandrZhabenko 2020-2022
 -- License     :  MIT
 -- Stability   :  Experimental
 -- Maintainer  :  olexandr543@yahoo.com
@@ -18,6 +18,9 @@
   -- * General
   rhythmicityH
   , rhythmicityH'
+  -- * Extended
+  , rhythmicityHTup
+  , rhythmicityH'Tup
 ) where
 
 #ifdef __GLASGOW_HASKELL__
@@ -28,7 +31,7 @@
 #endif
 
 import Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8
-import Melodics.Ukrainian.ArrInt8 (Sound8)
+import Melodics.Ukrainian.ArrInt8 (Sound8, FlowSound)
 import Languages.Phonetic.Ukrainian.Syllable.ArrInt8
 import Data.Maybe (fromMaybe)
 import Text.Read (readMaybe)
@@ -37,6 +40,8 @@
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG201
 import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2H
+import GHC.Arr (Array)
+import GHC.Int (Int8)
 
 #ifdef __GLASGOW_HASKELL__
 #if __GLASGOW_HASKELL__==708
@@ -248,3 +253,235 @@
   | null xs = syllableDurationsD4
   | (n `rem` length xs) == 0 = head xs
   | otherwise = xs !! ((n `rem` length xs) - 1)
+
+-----------------------------------------------------------
+
+{-|
+-}
+rhythmicityHTup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> [[[[Sound8]]] -> [[Double]]]
+  -> Coeffs2
+  -> String
+  -> Double
+rhythmicityHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice syllableDurationsDs coeffs
+  | take 1 choice == "H" = rhythmicityH'Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k (drop 1 choice) syllableDurationsDs coeffs
+  | otherwise = rhythmicityTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice coeffs
+
+rhythmicityH'Tup
+  :: Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Int8)
+  -> Array Int (Int8, FlowSound -> Sound8)
+  -> Array Int (Int8, Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int ([Int8], Bool)
+  -> Array Int (Int8, [Int8])
+  -> Array Int (Char,Int8)
+  -> Array Int (Int8,[Int8])
+  -> Array Int (Char, Bool)
+  -> Array Int (Char, Bool)
+  -> Array Int (Int8,Bool)
+  -> Double
+  -> String
+  -> [[[[Sound8]]] -> [[Double]]]
+  -> Coeffs2
+  -> String
+  -> Double
+rhythmicityH'Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice syllableDurationsDs CF0 = if
+ | take 1 choice `elem` ["c","M","N"] || (take 1 choice >= "A" && take 1 choice <= "F") -> let just_probe = readRhythmicity choice in
+           case just_probe of
+             Just (P1 ch rh n) -> rhythmicityABC 1.0 2.0 0.125 ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (helperHF4 n syllableDurationsDs)
+             Just (P2 ch rh r n) -> case take 1 choice of
+                   "A" -> rhythmicityPolyWeightedLEF2 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "D" -> rhythmicityPolyWeightedLF2 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "E" -> rhythmicityPolyWeightedLEF3 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "F" -> rhythmicityPolyWeightedLF3 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "B" -> rhythmicityPolyWeightedEF2 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "C" -> rhythmicityPolyWeightedF2 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "M" -> rhythmicityPolyWeightedEF3 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "N" -> rhythmicityPolyWeightedF3 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+                   "c" -> rhythmicityPoly 1.0 r ch rh . rhythmicityGTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+             _ -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | choice == "0y" -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | take 1 choice == "0" && drop 2 (take 3 choice) == "y" ->
+    let n2 = readMaybe (drop 1 . take 2 $ choice)::Maybe Int in
+      case n2 of
+        Just n3 -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n3 syllableDurationsDs)
+        Nothing -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | choice == "0z" -> rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs) k
+ | take 1 choice == "0" && drop 2 (take 3 choice) == "z" ->
+    let n2 = readMaybe (drop 1 . take 2 $ choice)::Maybe Int in
+      case n2 of
+        Just n3 -> rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n3 syllableDurationsDs) k
+        Nothing -> rhythmicity0FHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs) k
+ | take 1 choice == "0" -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | take 1 choice == "w" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+          | otherwise -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | take 1 choice == "x" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+          | otherwise -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+ | otherwise -> if
+    | (take 1 choice == "b" || ((take 1 choice >= "d" && take 1 choice <= "v") || (take 1 choice >= "I" && take 1 choice <= "Z"))) && (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "9" ->
+        case take 1 choice of
+          "b" -> g rhythmicityPolyWeightedLEF3 5 1
+          "d" -> g rhythmicityPolyWeightedLEF30 5 1
+          "e" -> g rhythmicityPolyWeightedLEF3 6 2
+          "f" -> g rhythmicityPolyWeightedLEF30 6 2
+          "g" -> g rhythmicityPolyWeightedLEF2 5 1
+          "h" -> g rhythmicityPolyWeightedLEF20 5 1
+          "i" -> g rhythmicityPolyWeightedLEF2 6 2
+          "j" -> g rhythmicityPolyWeightedLEF20 6 2
+          "k" -> g rhythmicityPolyWeightedLF3 5 1
+          "l" -> g rhythmicityPolyWeightedLF30 5 1
+          "m" -> g rhythmicityPolyWeightedLF3 6 2
+          "n" -> g rhythmicityPolyWeightedLF30 6 2
+          "o" -> g rhythmicityPolyWeightedLF2 5 1
+          "p" -> g rhythmicityPolyWeightedLF20 5 1
+          "q" -> g rhythmicityPolyWeightedLF2 6 2
+          "r" -> g rhythmicityPolyWeightedLF20 6 2
+          "I" -> g rhythmicityPolyWeightedEF3 5 1
+          "J" -> g rhythmicityPolyWeightedEF30 5 1
+          "K" -> g rhythmicityPolyWeightedEF3 6 2
+          "L" -> g rhythmicityPolyWeightedEF30 6 2
+          "O" -> g rhythmicityPolyWeightedEF2 5 1
+          "P" -> g rhythmicityPolyWeightedEF20 5 1
+          "Q" -> g rhythmicityPolyWeightedEF2 6 2
+          "R" -> g rhythmicityPolyWeightedEF20 6 2
+          "W" -> g rhythmicityPolyWeightedF3 5 1
+          "X" -> g rhythmicityPolyWeightedF30 5 1
+          "Y" -> g rhythmicityPolyWeightedF3 6 2
+          "Z" -> g rhythmicityPolyWeightedF30 6 2
+          "U" -> g rhythmicityPolyWeightedF2 5 1
+          "V" -> g rhythmicityPolyWeightedF20 5 1
+          "S" -> g rhythmicityPolyWeightedF2 6 2
+          "T" -> g rhythmicityPolyWeightedF20 6 2
+          "u" -> g rhythmicityPoly 5 1
+          "v" -> g rhythmicityPoly0 5 1
+          "s" -> g rhythmicityPoly 6 2
+          "t" -> g rhythmicityPoly0 6 2
+    | otherwise -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+       (let ts = drop 2 . take 3 $ choice in
+          case ts of { [] -> syllableDurationsD4 ; ks ->
+            let q = readMaybe ks::Maybe Int in
+              case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }})
+        where h1 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [1,2,1,n]) . mconcat .
+                  (case ts of { [] -> syllableDurationsD4 ; ks -> let q = readMaybe ks::Maybe Int in
+                      case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }}) .
+                        createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              h2 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [2,1,1,n]) . mconcat .
+                  (case ts of { [] -> syllableDurationsD4 ; ks -> let q = readMaybe ks::Maybe Int in
+                      case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }}) .
+                        createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              g f m n
+                | drop 1 (take 2 choice) == "0" = h1 f (drop 2 . take 3 $ choice) [True,True,True] m n
+                | drop 1 (take 2 choice) == "1" = h1 f (drop 2 . take 3 $ choice) [True,True,False] m n
+                | drop 1 (take 2 choice) == "2" = h1 f (drop 2 . take 3 $ choice) [True,False,True] m n
+                | drop 1 (take 2 choice) == "3" = h1 f (drop 2 . take 3 $ choice) [True,False,False] m n
+                | drop 1 (take 2 choice) == "4" = h2 f (drop 2 . take 3 $ choice) [True,True,True] m n
+                | drop 1 (take 2 choice) == "5" = h2 f (drop 2 . take 3 $ choice) [True,True,False] m n
+                | drop 1 (take 2 choice) == "6" = h2 f (drop 2 . take 3 $ choice) [True,False,True] m n
+                | drop 1 (take 2 choice) == "7" = h2 f (drop 2 . take 3 $ choice) [True,False,False] m n
+                | otherwise = rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 n syllableDurationsDs)
+              w1F f ch rh = rhythmicityABC 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              wwF2 g2 xs =
+                let n1 = readMaybe xs::Maybe Int in
+                   case n1 of
+                     Just n2 -> g2 (helperHF4 n2 syllableDurationsDs)
+                     Nothing -> g2 syllableDurationsD4
+              x1F f ch rh = rhythmicityABC0 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+              xxF = wwF2 x1F
+              wwF = wwF2 w1F
+              {-# INLINE w1F #-}
+              {-# INLINE wwF2 #-}
+              {-# INLINE x1F #-}
+              {-# INLINE xxF #-}
+              {-# INLINE wwF #-}
+rhythmicityH'Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice syllableDurationsDs (CF2 x y) =
+ case take 1 choice of
+  "0" -> case choice of
+           "0y" -> rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "02y" -> rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 2 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "03y" -> rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 3 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "0z" -> rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "02z" -> rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 2 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "03z" -> rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 3 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           "04z" -> rhythmicityKFHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 4 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+           _ -> rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)
+  "w" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+          | otherwise -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+              where w1F f ch rh = rhythmicityABC 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                    wwF xs =
+                      let n1 = readMaybe xs::Maybe Int in
+                        case n1 of
+                         Just n2 -> w1F (helperHF4 n2 syllableDurationsDs)
+                         Nothing -> w1F syllableDurationsD4
+                    {-# INLINE w1F #-}
+                    {-# INLINE wwF #-}
+  "x" -> if
+          | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->
+             case take 2 choice of
+              "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)
+              "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)
+              "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)
+              "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)
+              _ -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+          | otherwise -> rhythmicity0HTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17  (helperHF4 1 syllableDurationsDs)
+              where x1F f ch rh = rhythmicityABC0 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+                    xxF xs =
+                      let n1 = readMaybe xs::Maybe Int in
+                        case n1 of
+                         Just n2 -> x1F (helperHF4 n2 syllableDurationsDs)
+                         Nothing -> x1F syllableDurationsD4
+                    {-# INLINE x1F #-}
+                    {-# INLINE xxF #-}
+  _ -> if
+     | ((take 1 choice >= "b" && take 1 choice <= "v") || (take 1 choice >= "A" && take 1 choice <= "Z" && take 1 choice `notElem` ["G","H"])) -> rhythmicityH'Tup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 k choice syllableDurationsDs CF0
+     | otherwise -> rhythmicityKHTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17
+        (let ts = drop 2 . take 3 $ choice in
+          case ts of { [] -> syllableDurationsD4 ; ks ->
+            let q = readMaybe ks::Maybe Int in
+              case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }})
+                (fromMaybe 1.0 x) (fromMaybe 1.0 y)
diff --git a/phonetic-languages-simplified-properties-array.cabal b/phonetic-languages-simplified-properties-array.cabal
--- a/phonetic-languages-simplified-properties-array.cabal
+++ b/phonetic-languages-simplified-properties-array.cabal
@@ -2,7 +2,7 @@
 -- For further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                phonetic-languages-simplified-properties-array
-version:             0.12.2.0
+version:             0.13.0.0
 synopsis:            Some properties of the data related to rhythmicity.
 description:         A generalization of the uniqueness-periods-vector-properties package. Is a simplified version of the functionality of the former one. Uses lists and arrays as main processment data types. Uses Double whenever applicable.
 homepage:            https://hackage.haskell.org/package/phonetic-languages-simplified-properties-array
@@ -20,6 +20,6 @@
   exposed-modules:     Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2, Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2, Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Common, Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG201, Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2H, Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2Hprime, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Common, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Rhythmicity, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2Diverse, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG21, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG22, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG23, Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG24
   -- other-modules:
   other-extensions:    BangPatterns, CPP, MultiWayIf
-  build-depends:       base >=4.8 && <5, phonetic-languages-rhythmicity >=0.9.1 && <1, phonetic-languages-simplified-base >=0.4.5 && <1, ukrainian-phonetics-basic-array >=0.4.2 && <1
+  build-depends:       base >=4.8 && <5, phonetic-languages-rhythmicity ==0.9.1.0, phonetic-languages-simplified-base ==0.4.5.0, ukrainian-phonetics-basic-array ==0.5.2.0
   -- hs-source-dirs:
   default-language:    Haskell2010
