diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -168,3 +168,10 @@
 
 * The fourteenth version revised A. Added information about the related suggested package html-presentation-text to the
 package description.
+
+## 0.15.0.0 -- 2022-02-09
+
+The fifteenth version. Fixed the long existing issues with not working prepending needed concatenations for the text in the
+module Data.Phonetic.Languages.PrepareText of the dependency. Added also the possibility to not only prepend needed words,
+but also append. This introduces breaking changes, so please, check the code that uses library functions afterwards.
+Fixed also issue with innerProcessment function.
diff --git a/Phonetic/Languages/General/GetInfo/Parsing.hs b/Phonetic/Languages/General/GetInfo/Parsing.hs
--- a/Phonetic/Languages/General/GetInfo/Parsing.hs
+++ b/Phonetic/Languages/General/GetInfo/Parsing.hs
@@ -18,34 +18,27 @@
 import Data.Maybe (fromMaybe)
 import Text.Read (readMaybe)
 import System.Environment (getArgs)
-import Data.Monoid (mappend)
 import Phonetic.Languages.General.Common
-import Phonetic.Languages.General.Lines
-import Data.Phonetic.Languages.PrepareText
-import Data.List (sort)
-import GHC.Arr
-import Data.Phonetic.Languages.Base
 import Data.Phonetic.Languages.Syllables
-import Data.Phonetic.Languages.SpecificationsRead
 import Phonetic.Languages.General.Simple.Parsing (innerProcessmentSimple)
 import Phonetic.Languages.Array.General.PropertiesSyllablesG2
-import Phonetic.Languages.General.Simple
-import Data.Phonetic.Languages.SpecificationsRead
 import CLI.Arguments
 import CLI.Arguments.Parsing
 import CLI.Arguments.Get
 import qualified Phonetic.Languages.Permutations.Represent as R
 
 
--- | The first 4 arguments are the file names with the specifications.
+-- | The first 5 arguments are the file names with the specifications.
 -- 1) with the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
 --
 -- 2) with the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
 --
 -- 3) with the 'SegmentRulesG' specifications only;
 --
--- 4) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+-- 4) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
 --
+-- 5) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
+--
 argsToGetInfoProcessment
   :: (Double -> String -> ([[[PRS]]] -> [[Double]])) -- ^ The function that is needed in the 'procRhythmicity23F' function.
  -- Specifies a way how the syllables represented in the phonetic language approach transforms into their durations and
@@ -56,19 +49,20 @@
   -- exact one and, therefore, the default one.
  -> IO ()
 argsToGetInfoProcessment h qs = do
- args50 <- getArgs
- let (pPs,args40) = takeBsR [("+p",1)] args50
+ args500 <- getArgs
+ let (pPs,args50) = takeBsR [("+p",1)] args500
      pairwisePermutations = R.bTransform2Perms . getB "+p" $ pPs
-     (!args14,!args000) = splitAt 4 args40
-     [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP] = args14
- files4ArgsProcessment pairwisePermutations fileGWrSys controlFile segmentRulesFile concatenationsFileP h qs args000
+     (!args15,!args000) = splitAt 5 args50
+     [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP, concatenationsFileA] = args15
+ files4ArgsProcessment pairwisePermutations fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA h qs args000
 
 files4ArgsProcessment
   :: R.PermutationsType -- ^ Whether to use just one of the express permutations, or the full universal set.
   -> FilePath -- ^ With the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
   -> FilePath -- ^ With the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
   -> FilePath -- ^ With the 'SegmentRulesG' specifications only;
-  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These ones are to be prepended to the next word after them.
+  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These ones are to be prepended to the next word after them.
   -> (Double -> String -> ([[[PRS]]] -> [[Double]])) -- ^ The function that is needed in the 'procRhythmicity23F' function.
   -- Specifies a way how the syllables represented in the phonetic language approach transforms into their durations and
   -- depends on two parameters. Is specific for every phonetic language and every representation, so must be provided
@@ -78,8 +72,9 @@
   -- exact one and, therefore, the default one.
   -> [String] -- ^ List of other command line arguments
   -> IO ()
-files4ArgsProcessment pairwisePermutations !fileGWrSys !controlFile !segmentRulesFile !concatenationsFileP h qs args000 = do
- let (argsA,argsB,argsC1,argss) = args2Args31R fstCharsM specs1 args000
+files4ArgsProcessment pairwisePermutations !fileGWrSys !controlFile !segmentRulesFile !concatenationsFileP !concatenationsFileA h qs args000 = do
+ [fileGWrSys1, controlFile1, segmentRulesFile1, concatenationsFileP1, concatenationsFileA1] <- mapM readFile [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP, concatenationsFileA]
+ let (argsA,argsB,argsC1,_) = args2Args31R fstCharsM specs1 args000
      !args00 = snd . takeAsR [("+b",0)] . snd . takeBsR [("+x",1),("+g",1)] $ args000
      !growing = concat . getB "+g" $ argsB
      (!gr1,!gr2)
@@ -97,7 +92,7 @@
      !coeffsWX = readCF . concat . getB "+x" $ argsB
      !lInes = filter (any (== ':')) args0
      !numbersJustPrint =  filter (== "@n") args0
-     (!wrs, !ks, !arr, !gs, !js, !vs, !ysss, !xs) = innerProcessmentSimple fileGWrSys controlFile segmentRulesFile concatenationsFileP
+     (!wrs, !ks, !arr, !gs, !js, !vs, !ysss, !zzzsss, !xs) = innerProcessmentSimple fileGWrSys1 controlFile1 segmentRulesFile1 concatenationsFileP1 concatenationsFileA1
  if isPair coeffs then do
   let !file = concat . drop 1 . take 2 $ args
   if null numbersJustPrint then do
@@ -105,10 +100,10 @@
        !printLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 3 $ args)::(Maybe Int))
        !toOneLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 4 $ args)::(Maybe Int))
        !choice = concat . drop 5 . take 6 $ args
-   generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss xs js vs {- the old arguments follow -} lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice
+   generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss zzzsss xs js vs {- the old arguments follow -} lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice
   else do
    contents <- readFile file
-   fLinesNIO (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs contents
+   fLinesNIO (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs contents
  else do
   let !file = concat . take 1 $ args
   if null numbersJustPrint then do
@@ -116,10 +111,10 @@
        !printLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 2 $ args)::(Maybe Int))
        !toOneLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 3 $ args)::(Maybe Int))
        !choice = concat . drop 4 . take 5 $ args
-   generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss xs js vs {- the old arguments follow -} lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice
+   generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss zzzsss xs js vs {- the old arguments follow -} lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice
   else do
    contents <- readFile file
-   fLinesNIO (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs contents
+   fLinesNIO (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs contents
 
 aSpecs :: CLSpecifications
 aSpecs = [("+b",0)]
diff --git a/Phonetic/Languages/General/GetTextualInfo.hs b/Phonetic/Languages/General/GetTextualInfo.hs
--- a/Phonetic/Languages/General/GetTextualInfo.hs
+++ b/Phonetic/Languages/General/GetTextualInfo.hs
@@ -67,8 +67,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> String
  -> String
@@ -92,18 +94,18 @@
  -- Besides there are new lines of the arguments for the 'String' argument that can begin with \"c\", \"s\", \"t\",
  -- \"u\", \"v\" letters. For more information, please, refer to the 'Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2.rhythmicity'.
  -> IO ()
-generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h rs ysss xs js vs lstW multiples2 lInes coeffs coeffsWX file gzS printLine toOneLine choice
+generalProc pairwisePermutations (gr1,gr2) wrs ks arr gs h rs ysss zzzsss xs js vs lstW multiples2 lInes coeffs coeffsWX file gzS printLine toOneLine choice
  | null lInes = do
     contents <- readFile file
     let !flines
-           | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs toOneLine contents
-           | otherwise = prepareGrowTextMN gr1 gr2 ysss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs toOneLine $ contents
+           | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs toOneLine contents
+           | otherwise = prepareGrowTextMN gr1 gr2 ysss zzzsss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs toOneLine $ contents
     getData3 pairwisePermutations wrs ks arr gs js vs h rs lstW coeffs coeffsWX (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines
  | otherwise = do
     contents <- readFile file
     let !flines
-           | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs toOneLine . unlines . linesFromArgsG lInes . fLines ysss xs js vs 0 $ contents
-           | otherwise = prepareGrowTextMN gr1 gr2 ysss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs toOneLine . unlines . linesFromArgsG lInes . fLines ysss xs js vs 0 $ contents
+           | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs toOneLine . unlines . linesFromArgsG lInes . fLines ysss zzzsss xs js vs 0 $ contents
+           | otherwise = prepareGrowTextMN gr1 gr2 ysss zzzsss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs toOneLine . unlines . linesFromArgsG lInes . fLines ysss zzzsss xs js vs 0 $ contents
     getData3 pairwisePermutations wrs ks arr gs js vs h rs lstW coeffs coeffsWX (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines
 
 linesFromArgs1
diff --git a/Phonetic/Languages/General/Lines.hs b/Phonetic/Languages/General/Lines.hs
--- a/Phonetic/Languages/General/Lines.hs
+++ b/Phonetic/Languages/General/Lines.hs
@@ -62,8 +62,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> String
  -> String
@@ -73,15 +75,15 @@
  -> Int
  -> FilePath
  -> IO ()
-generalProcessment pairwisePermutations (gr1,gr2) wrs ks arr gs h rs ysss xs js vs coeffs numericArgs choices numberI file = do
+generalProcessment pairwisePermutations (gr1,gr2) wrs ks arr gs h rs ysss zzzsss xs js vs coeffs numericArgs choices numberI file = do
   contents <- readFile file
   let !permsV
         | pairwisePermutations == R.P 2 = genPairwisePermutationsArrLN 10
         | pairwisePermutations == R.P 1 = genElementaryPermutationsArrLN1 10
         | otherwise = genPermutationsArrL
       !flines
-        | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs 0 contents
-        | otherwise = prepareGrowTextMN gr1 gr2 ysss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss xs js vs 0 $ contents
+        | gr1 == 0 = fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs 0 contents
+        | otherwise = prepareGrowTextMN gr1 gr2 ysss zzzsss xs . unlines . fLinesN (if pairwisePermutations /= R.P 0 then 10 else 7) ysss zzzsss xs js vs 0 $ contents
       !lasts = map (\ts -> if null . words $ ts then [] else last . words $ ts) flines
   if compare numberI 2 == LT then
     mapM_ (\choice -> toFileStr (choice ++ "." ++ file ++ ".new.txt") (circle2 wrs ks arr gs js vs h rs coeffs permsV choice [] $ flines)) choices
diff --git a/Phonetic/Languages/General/Lines/Parsing.hs b/Phonetic/Languages/General/Lines/Parsing.hs
--- a/Phonetic/Languages/General/Lines/Parsing.hs
+++ b/Phonetic/Languages/General/Lines/Parsing.hs
@@ -19,15 +19,11 @@
 import Data.Maybe (fromMaybe)
 import System.Environment (getArgs)
 import Data.Char (isDigit)
-import Phonetic.Languages.General.Common
 import Phonetic.Languages.General.Lines
 import Data.Phonetic.Languages.PrepareText
-import Phonetic.Languages.General.Lines
-import Data.List (sort,nub)
-import GHC.Arr
+import Data.List (nub)
 import Data.Phonetic.Languages.Base
 import Data.Phonetic.Languages.Syllables
-import Data.Phonetic.Languages.SpecificationsRead
 import Phonetic.Languages.General.Simple.Parsing (innerProcessmentSimple)
 import CLI.Arguments
 import CLI.Arguments.Parsing
@@ -63,7 +59,7 @@
  -> IO ()
 argsToLinePrepare h qs = do
  args50 <- getArgs
- let (argsA,argsB,argsC1,argss) = args2Args31R fstCharsM specs1 args50
+ let (argsA,argsB,argsC1,_) = args2Args31R fstCharsM specs1 args50
      (prWP,args000) = takeBsR [("+p",1)] args50
      pairwisePermutations = R.bTransform2Perms . getB "+p" $ prWP
      multiple
@@ -92,9 +88,9 @@
                                   (Just n4,Just m4) -> if (m4 `rem` 7) < (n4 `rem` 7) then (n4 `rem` 7 + 1, m4 `rem` 7 + 1) else (0,0)
                                   _ -> (0,0)
       args0 = drop 5 args000
-      [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP] = drop 1 . take 5 $ args00 -- To get the valid 'Concatenations' data.
-  (wrs, ks, arr, gs, js, vs, ysss, xs, numericArgs, choices, numberI, file) <- files4Processment fileGWrSys controlFile segmentRulesFile concatenationsFileP multiple args0
-  generalProcessment pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss xs js vs {- the old arguments afterwards -} coeffs numericArgs choices numberI file
+      [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP, concatenationsFileA] = drop 1 . take 6 $ args00 -- To get the valid 'Concatenations' data.
+  (wrs, ks, arr, gs, js, vs, ysss, zzzsss, xs, numericArgs, choices, numberI, file) <- files4Processment fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA multiple args0
+  generalProcessment pairwisePermutations (gr1,gr2) wrs ks arr gs h qs ysss zzzsss xs js vs {- the old arguments afterwards -} coeffs numericArgs choices numberI file
 
 -- | Is used internally in the 'argsToLinePrepare'. Nevertheless, can be used independently if the semantics
 -- of the arguments and their structure are preserved.
@@ -102,12 +98,13 @@
   :: FilePath -- ^ With the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
   -> FilePath -- ^ With the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
   -> FilePath -- ^ With the 'SegmentRulesG' specifications only;
-  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
+  -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
   -> Int -- ^ If equal to 1, then the function is intended to be used in the multiple properties mode, else it is intended to be used in the single property mode.
   -> [String] -- ^ List of other command line arguments
-  -> IO (GWritingSystemPRPLX, [(Char, Char)], CharPhoneticClassification, SegmentRulesG, String, String, Concatenations, String, [String], [String], Int, FilePath)
-files4Processment fileGWrSys controlFile segmentRulesFile concatenationsFileP multiple args0 = do
-  [controlConts, gwrsCnts, segmentData, concatenationsFile] <- mapM readFile [controlFile, fileGWrSys, segmentRulesFile, concatenationsFileP]
+  -> IO (GWritingSystemPRPLX, [(Char, Char)], CharPhoneticClassification, SegmentRulesG, String, String, Concatenations, Concatenations, String, [String], [String], Int, FilePath)
+files4Processment fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA multiple args0 = do
+  [controlConts, gwrsCnts, segmentData, concatenationsFileP1, concatenationsFileA1] <- mapM readFile [controlFile, fileGWrSys, segmentRulesFile, concatenationsFileP, concatenationsFileA]
   let (choices,args00)
        | multiple == 1 = (\(rs,js) -> (getC "+m" rs,js)) . takeCs1R fstCharsM cSpecs1 $ args0
        | otherwise = (drop 1 . take 2 . snd . takeBsR [("+g",1)] $ args0,args0)
@@ -115,8 +112,8 @@
       !numericArgs = filter (all isDigit) args1
       !numberI = fromMaybe 1 (readMaybe (concat . take 1 $ numericArgs)::Maybe Int)
       !file = concat . take 1 $ args0
-      (wrs, ks, arr, gs, js, vs, ysss, xs) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFile
-        in return (wrs, ks, arr, gs, js, vs, ysss, xs, numericArgs, choices, numberI, file)
+      (wrs, ks, arr, gs, js, vs, ysss, zzzsss, xs) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFileP1 concatenationsFileA1
+        in return (wrs, ks, arr, gs, js, vs, ysss, zzzsss, xs, numericArgs, choices, numberI, file)
 
 aSpecs :: CLSpecifications
 aSpecs = [("+c",0)]
diff --git a/Phonetic/Languages/General/Simple.hs b/Phonetic/Languages/General/Simple.hs
--- a/Phonetic/Languages/General/Simple.hs
+++ b/Phonetic/Languages/General/Simple.hs
@@ -74,8 +74,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> FilePath
  -> Bool -- ^ Whether to run in the recursive mode.
@@ -87,12 +89,12 @@
  -> [String]
  -> Bool
  -> IO ()
-generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
- | null textProcessment0 = generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
+generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
+ | null textProcessment0 = generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
  | null textProcessmentFss = mapM_ (\_ -> do  -- interactive training mode
     putStrLn . messageInfo $ 7
     lineA <- getLine
-    generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode interactive jstL0
+    generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode interactive jstL0
       (fullArgsConvertTextualSimple p lineA args0) coeffs coeffsWX (fullArgsConvertTextualSimple p lineA args)
       lstW2) [0..]
  | otherwise =
@@ -101,15 +103,15 @@
         if pairwisePermutations /= R.P 0 then do
           let !wss
                 | textProcessment1 `elem` [10,20,30,40,50,60,70,80,90] = kss
-                | otherwise = prepareTuneTextMN m 1 ysss ws . unwords $ kss
-          mapM_ (\tss -> generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode
+                | otherwise = prepareTuneTextMN m 1 ysss zzzsss ws . unwords $ kss
+          mapM_ (\tss -> generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode
                  interactive jstL0 (fullArgsConvertTextualSimple p tss args0) coeffs coeffsWX
                   (fullArgsConvertTextualSimple p tss args) lstW2) wss
         else do
           let !wss
                | textProcessment1 `elem` [20,30,40,50,60,70] = kss
-               | otherwise = prepareTuneTextMN (if textProcessment1 `elem` [21,31,41,51,61] then m else 7) 1 ysss ws . unwords $ kss
-          mapM_ (\tss -> generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode interactive jstL0
+               | otherwise = prepareTuneTextMN (if textProcessment1 `elem` [21,31,41,51,61] then m else 7) 1 ysss zzzsss ws . unwords $ kss
+          mapM_ (\tss -> generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode interactive jstL0
                  (fullArgsConvertTextualSimple p tss args0) coeffs coeffsWX
                   (fullArgsConvertTextualSimple p tss args) lstW2) wss) textProcessmentFss
      where m = if textProcessment1 == 10 || textProcessment1 == 11 then 10 else quot textProcessment1 10
@@ -131,8 +133,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> FilePath
  -> Bool -- ^ Whether to run in the recursive mode.
@@ -144,17 +148,17 @@
  -> [String]
  -> Bool
  -> IO ()
-generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
+generalProc2G pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws toFile1 recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2
  | variations args = do
     let !zsss = transformToVariations args
     print zsss
-    variantsG <- mapM (\xss -> generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX xss lstW2) zsss
-    (if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX id variantsG args lstW2
+    variantsG <- mapM (\xss -> generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX xss lstW2) zsss
+    (if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX id variantsG args lstW2
      else interactivePrintResult id variantsG) >>= \rs ->
       case toFile1 of
        "" -> return ()
        ~fileName -> appendFile fileName (rs `mappend` newLineEnding)
- | otherwise = generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2 >>= \rs ->
+ | otherwise = generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2 >>= \rs ->
       case toFile1 of
        "" -> return ()
        ~fileName -> appendFile fileName (rs `mappend` newLineEnding)
@@ -176,8 +180,10 @@
   -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
-  -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
- -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+  -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
+  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+  -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
   -> String
   -> Bool -- ^ Whether to run in the recursive mode.
   -> Bool
@@ -188,11 +194,11 @@
   -> [String]
   -> Bool
   -> IO String
-generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2 = do
+generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX args lstW2 = do
   let !argMss = take 5 . filter (not . null) . forMultiplePropertiesF . drop 1 . dropWhile (/= "+m") . takeWhile (/= "-m") $ args0
   if null argMss then do
    let (!numericArgs,!textualArgs) = L.span (all isDigit) $ args
-       !xs = concat . take 1 . prepareTuneTextMN (if pairwisePermutations /= R.P 0 then 10 else 7) 1 ysss ws . unwords . drop 1 $ textualArgs
+       !xs = concat . take 1 . prepareTuneTextMN (if pairwisePermutations /= R.P 0 then 10 else 7) 1 ysss zzzsss ws . unwords . drop 1 $ textualArgs
        !l = length . words $ xs
        !argCs = catMaybes (fmap (readMaybeECG (l - 1)) . (showB l lstW2:) . drop 1 . dropWhile (/= "+a") .
           takeWhile (/= "-a") $ args0)
@@ -202,20 +208,20 @@
        !intervalNmbrs = (\zs -> if null zs then [numberI] else L.nub zs) . L.sort . filter (<= numberI) .
            map (\t -> fromMaybe numberI $ (readMaybe t::Maybe Int)) . drop 2 $ numericArgs
    if compare l 2 == LT then let !frep20 = chooseMax wrs ks arr gs js vs id h coeffs qs choice in let !wwss = (:[]) . toResultR frep20 $ xs in
-    if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line wwss args lstW2
+    if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line wwss args lstW2
     else if interactive then interactivePrintResult line wwss else print1el jstL0 choice wwss
    else do
     let !subs = subG (' ':js `mappend` vs) xs
     if null argCs then let !perms = genPermutationsL l in do
           temp <- generalProcMs wrs ks arr gs js vs h qs coeffs coeffsWX perms subs (intervalNmbrs, arg0, numberI, choice)
-          if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line temp args lstW2
+          if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line temp args lstW2
           else if interactive then interactivePrintResult line temp else print1el jstL0 choice temp
     else do
      correct <- printWarning xs
      if correct == "n" then putStrLn (messageInfo 1) >> return "" -- for the multiple variations mode (with curly brackets and slash in the text) the program does not stop here, but the variation is made empty and is proposed further as a variant.
      else let !perms = decodeLConstraints argCs . genPermutationsL $ l in do
           temp <- generalProcMs wrs ks arr gs js vs h qs coeffs coeffsWX perms subs (intervalNmbrs, arg0, numberI, choice)
-          if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line temp args lstW2
+          if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line temp args lstW2
           else if interactive then interactivePrintResult line temp else print1el jstL0 choice temp
   else do
    let !choices = map fst argMss
@@ -226,13 +232,13 @@
          (\zs -> if null zs then [numberI] else L.nub zs) . L.sort . filter (<= numberI) .
            map (\t -> fromMaybe numberI $ (readMaybe t::Maybe Int)) . drop 2 $ us) $ numericArgss
        !argsZipped = L.zip4 intervalNmbrss arg0s numberIs choices
-       !xs = concat . take 1 . prepareTuneTextMN (if pairwisePermutations /= R.P 0 then 10 else 7) 1 ysss ws . unwords $ args
+       !xs = concat . take 1 . prepareTuneTextMN (if pairwisePermutations /= R.P 0 then 10 else 7) 1 ysss zzzsss ws . unwords $ args
        !l = length . words $ xs
        !argCs = catMaybes (fmap (readMaybeECG (l - 1)) . (showB l lstW2:) . drop 1 . dropWhile (/= "+a") .
           takeWhile (/= "-a") $ args0)
    if compare l 2 == LT then let !frep20 = chooseMax wrs ks arr gs js vs id h coeffs qs (concat . take 1 $ choices) in
     let !wwss = (:[]) . toResultR frep20 $ xs in
-       if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line wwss args lstW2
+       if recursiveMode then interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX line wwss args lstW2
        else if interactive then interactivePrintResult line wwss
             else print1el jstL0 (concat . take 1 $ choices) wwss
    else do
@@ -241,12 +247,12 @@
                              | pairwisePermutations == R.P 2 = genPairwisePermutationsLN l
                              | pairwisePermutations == R.P 1 = genElementaryPermutationsLN1 l
                              | otherwise = genPermutationsL l in
-      generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX argsZipped perms subs args lstW2
+      generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX argsZipped perms subs args lstW2
     else do
      correct <- printWarning xs
      if correct == "n" then putStrLn (messageInfo 1) >> return "" -- for the multiple variations mode (with curly brackets and slash in the text) the program does not stop here, but the variation is made empty and is proposed further as a variant.
      else let !perms = decodeLConstraints argCs . (case pairwisePermutations of {R.P 2 -> genPairwisePermutationsLN ; R.P 1 -> genElementaryPermutationsLN1 ; ~rrr -> genPermutationsL}) $ l in
-            generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX argsZipped perms subs args lstW2
+            generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX argsZipped perms subs args lstW2
 
 -- | Function provides message information.
 messageInfo :: Int -> String
@@ -293,8 +299,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
  -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
  -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> Bool -- ^ Whether to run in the recursive mode.
  -> Bool
@@ -307,7 +315,7 @@
  -> [String]
  -> Bool
  -> IO String
-interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
+interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
   | null xss = (putStrLn . messageInfo $ 5) >> return ""
   | otherwise = do
      let !datas = map (\(idx,str) -> show idx `mappend` ('\t' : str)) . trans232 . map f $ xss
@@ -329,7 +337,7 @@
            mStr <- getLine
            let m = fromMaybe 10 (readMaybe mStr::Maybe Int) in return . take m . words $ strIntrpr
          else return . take 7 . words $ strIntrpr
-       generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX (firstArgs `mappend` wordsNN) lstW2
+       generalProc2 pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX (firstArgs `mappend` wordsNN) lstW2
 
 printWarning :: String -> IO String
 printWarning xs = do
@@ -398,8 +406,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> Bool -- ^ Whether to run in the recursive mode.
  -> Bool
@@ -419,15 +429,15 @@
  -> [String]
  -> Bool
  -> IO String
-generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX rs perms subs args lstW2 =
+generalProcMMs pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX rs perms subs args lstW2 =
  case length rs of
   0 -> putStrLn (messageInfo 4) >> return ""
   1 -> putStrLn (messageInfo 5) >> do
         temp <- generalProcMs wrs ks arr gs js vs h qs coeffs coeffsWX perms subs (head rs)
-        finalProc pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX line temp args lstW2
+        finalProc pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX line temp args lstW2
   _ -> do
          genVariants <- mapM (generalProcMs wrs ks arr gs js vs h qs coeffs coeffsWX perms subs) rs
-         finalProc pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX id (foldlI . map (map line) $ genVariants) args lstW2
+         finalProc pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactiveMM jstL0 args0 coeffs coeffsWX id (foldlI . map (map line) $ genVariants) args lstW2
 
 foldlI :: [[String]] -> [String]
 foldlI (xs:ys:xss) = foldlI (intersectInterResults xs ys : xss)
@@ -451,8 +461,10 @@
  -> [([[[PRS]]] -> [[Double]])] -- ^ A list of 4 different functions that specifies the syllables durations, analogues of the
   -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. The last one must be probably the most
   -- exact one and, therefore, the default one.
- -> Concatenations -- ^ Data used to concatenate the basic grammar preserving words and word sequences to the next word to
+ -> Concatenations -- ^ Data used to concatenate (prepend) the basic grammar preserving words and word sequences to the next word to
  -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
+ -> Concatenations -- ^ Data used to concatenate (append) the basic grammar preserving words and word sequences to the next word to
+ -- leave the most of the meaning (semantics) of the text available to easy understanding while reading and listening to.
  -> String
  -> Bool -- ^ Whether to run in the recursive mode.
  -> Bool
@@ -465,8 +477,8 @@
  -> [String]
  -> Bool
  -> IO String
-finalProc  pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
- | recursiveMode = interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
+finalProc  pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
+ | recursiveMode = interactivePrintResultRecursive pairwisePermutations wrs ks arr gs js vs h qs ysss zzzsss ws recursiveMode interactive jstL0 args0 coeffs coeffsWX f xss args lstW2
  | otherwise = if interactive then interactivePrintResult f xss else putStrLn ts >> return ts
   where ts = concatMap (\t -> f t `mappend` newLineEnding) xss
 
diff --git a/Phonetic/Languages/General/Simple/Parsing.hs b/Phonetic/Languages/General/Simple/Parsing.hs
--- a/Phonetic/Languages/General/Simple/Parsing.hs
+++ b/Phonetic/Languages/General/Simple/Parsing.hs
@@ -34,15 +34,17 @@
 -- | Prints the rearrangements with the \"property\" information for the phonetic language text.
 -- Most of the arguments are obtained from the 'getArgs' function.
 -- While used, it distinguishes between two groups of command line arguments: the first four ones and the others afterwards.
--- The first 4 arguments are the file names with the specifications.
+-- The first 5 arguments are the file names with the specifications.
 -- 1) with the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
 --
 -- 2) with the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
 --
 -- 3) with the 'SegmentRulesG' specifications only;
 --
--- 4) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+-- 4) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
 --
+-- 5) with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
+--
 -- Afterwards, the meaning of the command line arguments are as follows (from the left to the right).
 --
 -- The first next command line argument must be a
@@ -79,14 +81,14 @@
      textProcessment1 = fromMaybe 70 (readMaybe (drop 2 textProcessment0)::Maybe Int)
      (rcrs,args000) = takeAsR [("+r",0)] . filter (not . null) $ args0000F
      recursiveMode = oneA "+r" rcrs -- Specifies whether to use the interactive recursive mode
-     (!args14,!args00) = splitAt 4 args000
-     [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP] = args14
- (gwrsCnts, controlConts, segmentData, concatenationsFile, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW) <- argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP args00
- let (wrs, ks, arr, gs, js, vs, ysss, ws) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFile
+     (!args15,!args00) = splitAt 5 args000
+     [fileGWrSys, controlFile, segmentRulesFile, concatenationsFileP,concatenationsFileA] = args15
+ (gwrsCnts, controlConts, segmentData, concatenationsFileP1, concatenationsFileA1, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW) <- argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA args00
+ let (wrs, ks, arr, gs, js, vs, ysss, zzzsss, ws) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFileP1 concatenationsFileA1
  textProcessmentFss0 <- mapM (readFileIfAny) textProcessmentFssFs
  let textProcessmentFss = filter (not . null) textProcessmentFss0
- if isPair coeffs then generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss ws {- old arguments follow -} toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX (drop 1 args) lstW
- else generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss ws toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX args lstW
+ if isPair coeffs then generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss zzzsss ws {- old arguments follow -} toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX (drop 1 args) lstW
+ else generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss zzzsss ws toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX args lstW
 
 -- | Similar to the 'argsToSimplePrepare' function, but takes explicitly the four 'FilePath's for the files
 -- respectively and the last argument the 'String' with all the other specifications. If it is not proper,
@@ -96,7 +98,8 @@
  -> FilePath -- ^ With the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
  -> FilePath -- ^ With the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
  -> FilePath -- ^ With the 'SegmentRulesG' specifications only;
- -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+ -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
+ -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
  -> (Double -> String -> ([[[PRS]]] -> [[Double]])) -- ^ The function that is needed in the 'procRhythmicity23F' function.
  -- Specifies a way how the syllables represented in the phonetic language approach transforms into their durations and
  -- depends on two parameters. Is specific for every phonetic language and every representation, so must be provided
@@ -110,32 +113,34 @@
  -> String -- ^ If empty, the function is just 'generalProc2G' with the arguments starting from the first 'Bool' here.
  -> Int
  -> IO ()
-argsToSimplePrepare4Files pairwisePermutations fileGWrSys controlFile segmentRulesFile concatenationsFileP h qs other_args p textProcessmentFss textProcessment0 textProcessment1 = do
- let args000 = drop 4 . words $ other_args
+argsToSimplePrepare4Files pairwisePermutations fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA h qs other_args p textProcessmentFss textProcessment0 textProcessment1 = do
+ let args000 = drop 5 . words $ other_args
      (rcs,args00) = takeAsR [("+r",0)] args000
      recursiveMode = oneA "+r" rcs -- Specifies whether to use the interactive recursive mode
- (gwrsCnts, controlConts, segmentData, concatenationsFile, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW) <- argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP args00
- let (wrs, ks, arr, gs, js, vs, ysss, ws) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFile
- if isPair coeffs then generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss ws {- old arguments follow -} toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX (drop 1 args) lstW
- else generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss ws toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX args lstW
+ (gwrsCnts, controlConts, segmentData, concatenationsFileP1, concatenationsFileA1, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW) <- argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA args00
+ let (wrs, ks, arr, gs, js, vs, ysss, zzzsss, ws) = innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFileP1 concatenationsFileA1
+ if isPair coeffs then generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss zzzsss ws {- old arguments follow -} toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX (drop 1 args) lstW
+ else generalProc3G pairwisePermutations p textProcessmentFss textProcessment0 textProcessment1 wrs ks arr gs js vs h qs ysss zzzsss ws toFileMode1 recursiveMode interactiveP jstL0 args0 coeffs coeffsWX args lstW
 
 innerProcessmentSimple
   :: String -- ^ Must be a valid 'GWritingSystemPRPLX' specifications 'String' representation only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
   -> String -- ^ Must be a 'String' with the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
   -> String -- ^ Must be a 'String' with the 'SegmentRulesG' specifications only;
-  -> String -- ^ Must be a 'String' with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
-  -> (GWritingSystemPRPLX, [(Char, Char)], CharPhoneticClassification, SegmentRulesG, String, String, Concatenations, String)
-innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFile =
+  -> String -- ^ Must be a 'String' with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
+  -> String -- ^ Must be a 'String' with the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
+  -> (GWritingSystemPRPLX, [(Char, Char)], CharPhoneticClassification, SegmentRulesG, String, String, Concatenations, Concatenations, String)
+innerProcessmentSimple gwrsCnts controlConts segmentData concatenationsFileP concatenationsFileA =
  let [allophonesGs, charClfs, jss, vss, wss] = groupBetweenChars '~' . lines $ controlConts
      wrs = getGWritingSystem '~' gwrsCnts
      ks = sort . fromMaybe [] $ (readMaybe (unwords allophonesGs)::Maybe [(Char, Char)])
      arr = read (unwords charClfs)::Array Int PRS -- The 'Array' must be previously sorted in the ascending order.
      gs = read segmentData::SegmentRulesG
-     ysss = sort2Concat . fromMaybe [] $ (readMaybe segmentData::Maybe [[String]])
+     ysss = sort2Concat . fromMaybe [] $ (readMaybe concatenationsFileP::Maybe [[String]])
+     zzzsss = sort2Concat . fromMaybe [] $ (readMaybe concatenationsFileA::Maybe [[String]])
      js = concat jss
      vs = concat vss
      ws = sort . concat $ wss
-       in (wrs, ks, arr, gs, js, vs, ysss, ws)
+       in (wrs, ks, arr, gs, js, vs, ysss, zzzsss, ws)
 
 {-| @ since 0.5.0.0
 The function also can process \"w\" and \"x\" lines so returns two 'Coeffs2' values.
@@ -144,10 +149,11 @@
  :: FilePath -- ^ With the 'GWritingSystemPRPLX' specifications only (see the gwrsysExample.txt file in the @phonetic-languages-phonetics-basics@ package as a schema);
  -> FilePath -- ^ With the 5 meaningful lines that are delimited with the \'~\' line one from another with the specifications for the possible allophones (if any), 'CharPhoneticClassification', white spaces information (two 'String's) and the 'String' of all the possible 'PLL' 'Char's;
  -> FilePath -- ^ With the 'SegmentRulesG' specifications only;
- -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's).
+ -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be prepended to the next word.
+ -> FilePath -- ^ With the 'Concatenations' specifications only (see the data in the EnglishConcatenated.txt file in the @phonetic-languages-phonetics-basics@ package as a list of English equivalents of the needed 'String's). These are to be appended to the previous word.
  -> [String] -- ^ List of other args afterwards.
- -> IO (String, String, String, String, String, Bool, Bool, [String], Coeffs2, Coeffs2, [String], Bool)
-argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP args00 = do
+ -> IO (String, String, String, String, String, String, Bool, Bool, [String], Coeffs2, Coeffs2, [String], Bool)
+argsProcessment fileGWrSys controlFile segmentRulesFile concatenationsFileP concatenationsFileA args00 = do
  let args0 = snd . takeBsR [("+x",1)] . snd . takeAsR (zip ["+b","+l","+bl","+i"] . cycle $ [0]) $ args00
      lstW = any (\x -> x == "+b" || x == "+bl") args00 -- If one of the command line options is \"+b\" or \"+bl\" then the last word of the line will remain the last one.
      jstL0 = any (\x -> x == "+l" || x == "+bl") args00 -- If one of the command line options is \"+l\" or \"+bl\" then the program outputs just lines without metrices values.
@@ -160,8 +166,8 @@
      args = snd . takeCs1R fstCharsMA [("+m",-1)] $ args02
      coeffs = readCF . concat . take 1 $ args
      coeffsWX = readCF . concat . getB "+x" . fst . takeBsR [("+x",1)] $ args00
- [controlConts, gwrsCnts, segmentData, concatenationsFile] <- mapM readFile [controlFile, fileGWrSys, segmentRulesFile, concatenationsFileP]
- return (gwrsCnts, controlConts, segmentData, concatenationsFile, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW)
+ [controlConts, gwrsCnts, segmentData, concatenationsFileP1, concatenationsFileA1] <- mapM readFile [controlFile, fileGWrSys, segmentRulesFile, concatenationsFileP, concatenationsFileA]
+ return (gwrsCnts, controlConts, segmentData, concatenationsFileP1, concatenationsFileA1, toFileMode1, interactiveP, jstL0, args0, coeffs, coeffsWX, args, lstW)
 
 aSpecs :: CLSpecifications
 aSpecs = zip ["+r","+b","+l","+bl","+i"] . cycle $ [0]
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
+The version 0.15.0.0 fixed the long existing issues with not working prepending needed concatenations for the text in the
+module Data.Phonetic.Languages.PrepareText. Added also the possibility to not only prepend needed words, but also append.
+This introduces breaking changes, so please, check the code that uses library functions afterwards.
+
 The version 0.2.0.0 is prepared to the Day of the Saints Cyril and Methodius, the 'Apostles to the Slavs',
 and to the Day of Slavic writing systems and culture.
 
diff --git a/phonetic-languages-simplified-generalized-examples-array.cabal b/phonetic-languages-simplified-generalized-examples-array.cabal
--- a/phonetic-languages-simplified-generalized-examples-array.cabal
+++ b/phonetic-languages-simplified-generalized-examples-array.cabal
@@ -3,7 +3,7 @@
 -- http://haskell.org/cabal/users-guide/
 
 name:                phonetic-languages-simplified-generalized-examples-array
-version:             0.14.1.0
+version:             0.15.0.0
 synopsis:            Helps to create texts with the given phonetic properties (e. g. poetic).
 description:         Is rewritten from the modules of the @phonetic-languages-simplified-examples-array@ package. Can be used not only for Ukrainian, but also for other languages. To present the created text you can use e. g. html-presentation-text package: https://hackage.haskell.org/package/html-presentation-text .
 homepage:            https://hackage.haskell.org/package/phonetic-languages-simplified-generalized-examples-array
@@ -21,6 +21,6 @@
   exposed-modules:     Phonetic.Languages.General.Lines, Phonetic.Languages.General.Parsing, Phonetic.Languages.General.Simple, Phonetic.Languages.General.GetTextualInfo, Phonetic.Languages.Simplified.Array.General.FuncRep2RelatedG2, Phonetic.Languages.General.Simple.Parsing, Phonetic.Languages.General.Lines.Parsing, Phonetic.Languages.General.GetInfo.Parsing, EspeakNG_IPA
   -- other-modules:
   other-extensions:    BangPatterns, FlexibleContexts
-  build-depends:       base >=4.8 && <5, phonetic-languages-simplified-generalized-examples-common >=0.3 && <1, subG >=0.4.2 && <1, phonetic-languages-simplified-generalized-properties-array >=0.8.5 && <1, phonetic-languages-simplified-base >=0.4.5 && <1, phonetic-languages-permutations-array >=0.3.3 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-phonetics-basics >=0.8.4 && <1, phonetic-languages-constraints-array >=0.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.5.1 && <1, mmsyn2-array >=0.1.3 && <1, heaps >=0.3.6.1 && <1, mmsyn3 >=0.1.5 && <1, process >= 1.6.2 && <2, string-interpreter >=0.5.4.1 && <1, cli-arguments >=0.6 && <1
+  build-depends:       base >=4.8 && <5, phonetic-languages-simplified-generalized-examples-common >=0.4 && <1, subG >=0.4.2 && <1, phonetic-languages-simplified-generalized-properties-array >=0.9 && <1, phonetic-languages-simplified-base >=0.4.5 && <1, phonetic-languages-permutations-array >=0.3.3 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-phonetics-basics >=0.9 && <1, phonetic-languages-constraints-array >=0.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.5.1 && <1, mmsyn2-array >=0.1.3 && <1, heaps >=0.3.6.1 && <1, mmsyn3 >=0.1.5 && <1, process >= 1.6.2 && <2, string-interpreter >=0.5.4.1 && <1, cli-arguments >=0.6 && <1
   -- hs-source-dirs:
   default-language:    Haskell2010
