diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -13,4 +13,7 @@
 
 * First version revised B. Added the module Paths_mmys7ukr_array to  use  with "y.wav" sound. 
 
+## 0.2.0.0 -- 2022-08-16
+
+* Second version. Added mmsyn7ukr-common as a dependency. Removed the duplicated modules.
 
diff --git a/Control/Exception/FinalException/Arr.hs b/Control/Exception/FinalException/Arr.hs
deleted file mode 100644
--- a/Control/Exception/FinalException/Arr.hs
+++ /dev/null
@@ -1,65 +0,0 @@
--- |
--- Module      :  Control.Exception.FinalException.Arr
--- Copyright   :  (c) OleksandrZhabenko 2020-2022
--- License     :  MIT
--- Stability   :  Experimental
--- Maintainer  :  olexandr543@yahoo.com
---
--- A program and a library that can be used as a simple 
--- basic interface to some SoX functionality or for producing 
--- the approximately Ukrainian speech with your own recorded 
--- voice (actually it produces the needed sound representations).
---
-
-{-# LANGUAGE DeriveDataTypeable #-}
-
-module Control.Exception.FinalException.Arr (
-  FinalException(..)
-  -- * Exception
-  , catchEnd
-) where
-
-import Data.Typeable
-import Control.Exception (Exception, catch, throw)
-import System.Environment (getProgName)
-import System.IO
-import GHC.IO.Handle.Types (Newline( CRLF ), nativeNewline)
-
--- | Data type 'FinalException' is used to terminate the not needed further execution.
-data FinalException = ExecutableNotProperlyInstalled | MaybePartiallyTrimmed | NotCreatedWithEffect String
-  | InitialFileNotChanged String | NotCreated String | NotRecorded String | NoiseProfileNotCreatedB String | NoiseProfileNotCreatedE String
-    | NotEnoughData String | NotCreatedWithEffects String | StrangeAnswer String String | NotFileNameGiven | DataFileNotClosed String
-       | DataSoundFileNotRead String | UndefinedFunction String
-          deriving ( Typeable )
-
-instance Exception FinalException
-
-instance Show FinalException where
-  show ExecutableNotProperlyInstalled = "ExecutableNotProperlyInstalled: SoX is not properly installed in your system. Please, install it properly and then call the function again." ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show MaybePartiallyTrimmed = "MaybePartiallyTrimmed: The function did not create the needed file, but may be it trimmed the initial one (not enough)!"
-    ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NotCreatedWithEffect xs) = "NotCreatedWithEffect: File was not created with " ++ show xs ++ " effect!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (InitialFileNotChanged xs) = "InitialFileNotChanged: The initial file " ++ show xs ++ " was not changed!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NotCreated xs) = "NotCreated: The function did not create the needed file " ++ show xs ++ "!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NotRecorded xs) = "NotRecorded: The file " ++ show xs ++ " was not recorded!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NoiseProfileNotCreatedB xs) = "NoiseProfileNotCreatedB: The noise profile " ++ xs ++ ".b.prof was not created!"
-    ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NoiseProfileNotCreatedE xs) = "NoiseProfileNotCreatedE: The noise profile " ++ xs ++ ".e.prof was not created!"
-    ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NotEnoughData xs) = "NotEnoughData: SoX cannot determine the number of the samples in the file " ++ show xs ++
-    "! May be it is a RAW file and it needs additional parameters to be processed." ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (NotCreatedWithEffects xs) = "NotCreatedWithEffects: File was not created with " ++ (init . unwords . map ((++ ",") . show) . words $ xs) ++ " effects!"
-    ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (StrangeAnswer xs ys) = xs ++ ": the " ++ show ys ++ " function gave a strange result!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show NotFileNameGiven = "Please, specify as a command line argument at least a name of the resulting file (without its extension)! "
-    ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (DataFileNotClosed xs) = "File " ++ show xs ++ " is not closed!" ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (DataSoundFileNotRead xs) = "Data sound file " ++ show xs ++ " is not read!"  ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-  show (UndefinedFunction xs) = xs ++ ": the function is undefined for the arguments. " ++ (if nativeNewline == CRLF then "\r\n" else "\n")
-
--- | Function to work with exception 'FinalException' similarly to the example in the documentation for the 'catch' function. It throws an exception
--- to the thread where it is called. 
-catchEnd :: FinalException -> IO ()
-catchEnd e = do
-  progName <- getProgName
-  catch (throw e) (\e0 -> hPutStr stderr (progName ++ ": " ++ show (e0 :: FinalException)))
diff --git a/Processing_mmsyn7ukr_array.hs b/Processing_mmsyn7ukr_array.hs
--- a/Processing_mmsyn7ukr_array.hs
+++ b/Processing_mmsyn7ukr_array.hs
@@ -44,11 +44,12 @@
 import System.Info (os)
 import System.Environment (getProgName)
 import System.Exit
-import SoXBasics.Arr
+import Sound.SoXBasics
 import CaseBi.Arr (getBFst')
 import GHC.Arr
-import ReplaceP.Arr (replaceP, replaceP4)
-import Control.Exception.FinalException.Arr
+import Parser.ReplaceP (replaceP, replaceP4)
+import Sound.Control.Exception.FinalException
+import SoXBasics.Arr (recA,recB,playA)
 
 -- | Function 'produceSound3' is used internally in the 'produceSound2' function.
 produceSound3 :: (String, String) -> (FilePath, FilePath) -> String -> (Int, Float) -> Float -> IO ()
diff --git a/ReplaceP/Arr.hs b/ReplaceP/Arr.hs
deleted file mode 100644
--- a/ReplaceP/Arr.hs
+++ /dev/null
@@ -1,37 +0,0 @@
--- |
--- Module      :  ReplaceP.Arr
--- Copyright   :  (c) OleksandrZhabenko 2020-2022
--- License     :  MIT
--- Stability   :  Experimental
--- Maintainer  :  olexandr543@yahoo.com
---
--- A program and a library that can be used as a simple 
--- basic interface to some SoX functionality or for producing 
--- the approximately Ukrainian speech with your own recorded 
--- voice (actually it produces the needed sound representations).
---
-
-module ReplaceP.Arr where
-
--- | Function is used internally to parse a given third command line argument as a @[String]@ representing the Ukrainian sounds, which will be produced.
-replaceP :: String -> String
-replaceP (x:y:z:u:v:xs) | x == '[' && y == '\"' && z == '[' && u == '\\' && v == '\\' = "[\"\\" ++ replaceP xs
-                        | x == ',' && y == '\\' && z == '\\' = "\",\"\\" ++ replaceP (u:v:xs)
-                        | x == ']' && y == '\"' && z == ']' = "\"]" ++ replaceP (u:v:xs)
-                        | otherwise = x:replaceP (y:z:u:v:xs)
-replaceP (x:y:z:u:xs) | x == ',' && y == '\\' && z == '\\' = "\",\"\\" ++ replaceP (u:xs)
-                      | x == ']' && y == '\"' && z == ']' = "\"]" ++ replaceP (u:xs)
-                      | otherwise = x:replaceP (y:z:u:xs)
-replaceP (x:y:z:xs) | x == ',' && y == '\\' && z == '\\' = "\",\"\\" ++ replaceP xs
-                    | x == ']' && y == '\"' && z == ']' = "\"]" ++ replaceP xs
-                    | otherwise = x:replaceP (y:z:xs)
-replaceP xs = xs
-
--- | Function is used internally to parse further the result dealt with 'replaceP' function.
-replaceP4 :: String -> String
-replaceP4 (t:x:y:z:u:v:xs) | [t,x,y,z,u,v] == "\\\\1078" = '\1078':replaceP4 xs
-                           | [t,x,y,z,u,v] == "\\\\1079" = '\1079':replaceP4 xs
-                           | [t,x,y,z,u,v] == "\\\\1100" = '\1100':replaceP4 xs
-                           | otherwise = t:replaceP4 (x:y:z:u:v:xs)
-replaceP4 (x:xs) = x:replaceP4 xs
-replaceP4 [] = []
diff --git a/SoXBasics/Arr.hs b/SoXBasics/Arr.hs
--- a/SoXBasics/Arr.hs
+++ b/SoXBasics/Arr.hs
@@ -70,7 +70,7 @@
 import Control.Concurrent (threadDelay)
 import Control.Exception (onException)
 import System.Info (os)
-import Control.Exception.FinalException.Arr
+import Sound.Control.Exception.FinalException
 
 -- | Function 'maxAbs' allows to choose a maximum by absolute value if the values are written as @String@. Bool @True@ corresponds to maximum value, @False@ - to minimum value
 maxAbs :: (String, String) -> (String, Bool)
diff --git a/SoXBasics1/Arr.hs b/SoXBasics1/Arr.hs
--- a/SoXBasics1/Arr.hs
+++ b/SoXBasics1/Arr.hs
@@ -45,7 +45,7 @@
 import EndOfExe
 import System.Exit
 import qualified SoXBasics.Arr as SB (extremeS1,upperBnd,selMA,maxAbs,norm)
-import Control.Exception.FinalException.Arr
+import Sound.Control.Exception.FinalException
 
 -- | Function 'norm' applies a SoX normalization effect on the audio file. 
 -- The function must be used with the @FilePath@ parameter containing no directories in its name (that means the file of the @FilePath@ parameter must be 
diff --git a/mmsyn7ukr-array.cabal b/mmsyn7ukr-array.cabal
--- a/mmsyn7ukr-array.cabal
+++ b/mmsyn7ukr-array.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn7ukr-array
-version:             0.1.2.0
+version:             0.2.0.0
 synopsis:            A simple reduced basic interface to some SoX functionality or to produce a voice that can be used by mmsyn7h-array, dobutokO2-array and other similar packages
 description:         A reduced set of modules  and functionality needed to dobutokO2-array package  and probably some other ones. Is rewritten from the mmsyn7ukr-0.17.0.0 package to reduce the needed dependencies.
 homepage:            https://hackage.haskell.org/package/mmsyn7ukr-array
@@ -18,10 +18,10 @@
 cabal-version:       >=1.10
 
 library
-  exposed-modules:     SoXBasics.Arr, SoXBasics1.Arr, Processing_mmsyn7ukr_array, ReplaceP.Arr, Control.Exception.FinalException.Arr, Paths_mmsyn7ukr_array
+  exposed-modules:     SoXBasics.Arr, SoXBasics1.Arr, Processing_mmsyn7ukr_array, Paths_mmsyn7ukr_array
   -- other-modules:
   -- other-extensions:
-  build-depends:       base >=4.7 && <5, process >=1.4 && <2, mmsyn2-array ==0.3.0.0, directory >=1.2.5 && <2, mmsyn3 ==0.1.6.0
+  build-depends:       base >=4.7 && <5, process >=1.4 && <2, mmsyn2-array ==0.3.0.0, directory >=1.2.5 && <2, mmsyn3 ==0.1.6.0, mmsyn7ukr-common ==0.2.0.0
   -- hs-source-dirs:
   default-language:    Haskell2010
 
