diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -93,3 +93,9 @@
 ## 0.7.1.0 -- 2020-01-20
 
 * Seventh version revised A. Removed the special parameter in the code, which influenced the duration of the initial sound data recording.
+
+## 0.7.2.0 -- 2020-01-21
+
+* Seventh version revised B. Fixed an issue with the noise reduction that can remove sensitive sound recording data from the program
+produced recordings. Added some additional functions. Some documentation improvements. The program now creates a noise profile at
+the beginning of its execution. Afterwards, it is removed if the program ends successfully.
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -112,6 +112,7 @@
             eSp = fromJust (showE "play")
             eSr = fromJust (showE "rec")
         return ()) (error "SoX is not properly installed in your system. Please, install it properly and then run the program again! ")
+  tempoR
   let a0 = if null . take 1 $ args 
              then []
              else concat . take 1 $ args
@@ -154,3 +155,4 @@
       putStrLn ""
       putStrLn "Your voice sound files are now created in the current directory! Use in a secure way! Remember the initial CAUTION! "
       putStrLn ""
+  cleanTempN
diff --git a/Processing_mmsyn7ukr.hs b/Processing_mmsyn7ukr.hs
--- a/Processing_mmsyn7ukr.hs
+++ b/Processing_mmsyn7ukr.hs
@@ -21,10 +21,13 @@
   -- * Additional functions
   , tempS
   , showCoef
+  , tempoR
   -- * Cleaning
   , cleanTemp
+  , cleanTempN
 ) where
 
+import Control.Concurrent (threadDelay)
 import Numeric
 import System.Directory
 import Control.Exception (onException)
@@ -65,45 +68,45 @@
 produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0 = case actsctrl of
     "0" -> 
       do
-          lim1 <- durationA "_8x.wav"
+          lim1 <- durationA "8_x.wav"
           if lim1 <= 0.0
             then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
             else do 
-              resampleA "_8x.wav" (22050::Int)
-              produceSound4 (file, file1)  "3_8x.wav"
+              resampleA "8_x.wav" (22050::Int)
+              produceSound4 (file, file1)  "38_x.wav"
     "1" -> 
       do
-          alterVadB "_8x.wav" lim0 noiseMax (duration0*0.04)
-          lim1 <- durationA "_8x.wav"
+          alterVadB "8_x.wav" lim0 noiseMax (duration0*0.04)
+          lim1 <- durationA "8_x.wav"
           if lim1 <= 0.0
             then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
             else do 
-              alterVadE "_8x.wav" lim1 noiseMax (duration0*0.04)
-              resampleA "_8x.wav" (22050::Int)
-              produceSound4 (file, file1)  "3_8x.wav"
+              alterVadE "8_x.wav" lim1 noiseMax (duration0*0.04)
+              resampleA "8_x.wav" (22050::Int)
+              produceSound4 (file, file1)  "38_x.wav"
     "2" ->
       do
-          alterVadB "_8x.wav" lim0 noiseMax (duration0*0.04)
-          lim1 <- durationA "_8x.wav"
+          alterVadB "8_x.wav" lim0 noiseMax (duration0*0.04)
+          lim1 <- durationA "8_x.wav"
           if lim1 <= 0.0
             then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
             else do 
-              alterVadE "_8x.wav" lim1 noiseMax (duration0*0.04)
-              sincA "_8x.wav"
-              resampleA "4._8x.wav" (22050::Int)
-              produceSound4 (file, file1) "34._8x.wav"
+              alterVadE "8_x.wav" lim1 noiseMax (duration0*0.04)
+              sincA "8_x.wav"
+              resampleA "4.8_x.wav" (22050::Int)
+              produceSound4 (file, file1) "34.8_x.wav"
     _ ->
       do
-          alterVadB "_8x.wav" lim0 noiseMax (duration0*0.04)
-          lim1 <- durationA "_8x.wav"
+          alterVadB "8_x.wav" lim0 noiseMax (duration0*0.04)
+          lim1 <- durationA "8_x.wav"
           if lim1 <= 0.0
             then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
             else do 
-              alterVadE "_8x.wav" lim1 noiseMax (duration0*0.1)
-              sincA "_8x.wav"
-              resampleA "4._8x.wav" (22050::Int)
-              quarterSinFade "34._8x.wav"
-              produceSound4 (file, file1) "434._8x.wav"
+              alterVadE "8_x.wav" lim1 noiseMax (duration0*0.1)
+              sincA "8_x.wav"
+              resampleA "4.8_x.wav" (22050::Int)
+              quarterSinFade "34.8_x.wav"
+              produceSound4 (file, file1) "434.8_x.wav"
 
 -- | Function 'produceSound4' is used internally in the 'produceSound3' function for amplification 
 -- up/down to the maximum level of the first @FilePath@ parameter in the tuple. The second one gives 
@@ -141,10 +144,9 @@
                then recA "x.wav" longerK
                else recA "x.wav" 3.0
     ; putStrLn "The file is recorded and now will be automatically processed. You will be notificated with the text message in the terminal about the creation of the needed file. Please, wait a little. "
-    ; norm "x.wav"
-    ; noiseProfB "8x.wav"
-    ; noiseReduceB "8x.wav"
-    ; lim0 <- durationA "_8x.wav"
+    ; _ <- readProcessWithExitCode (fromJust (showE "sox")) ["x.wav", "_x.wav", "noisered", "nx0.wav.b.prof"] ""
+    ; norm "_x.wav"
+    ; lim0 <- durationA "8_x.wav"
     ; putStrLn ""
     ; putStrLn "If you specified as a first command line argument the following the program behaves: "
     ; putStrLn "0 -> after the noise reduction the program only resample the audio to the needed 22050 Hz and adjusts the amlitude; "
@@ -196,19 +198,18 @@
 ; let longerK = (read x3::Double)*longerK0
 ; putStrLn "Please, wait for 0.5 second and pronounce the sound representation for the "
 ; putStrLn ""
-; putStrLn $ "                     \"" ++ (if soundUkr /= "ь" then map toUpper soundUkr else soundUkr) ++ "\""
+; putStrLn $ "                                                             \"" ++ (if soundUkr /= "ь" then map toUpper soundUkr else soundUkr) ++ "\""
 ; putStrLn ""
-; putStrLn "sound or whatever you would like to be substituted instead (be sensible, please)! "
+; putStrLn " sound or whatever you would like to be substituted instead (be sensible, please)! "
 ; if sharp
-    then recA "x.wav" longerK
-    else if (compare longerK 3.0 == GT)
-           then recA "x.wav" longerK
-           else recA "x.wav" 3.0
+        then recA "x.wav" longerK
+        else if (compare longerK 3.0 == GT)
+               then recA "x.wav" longerK
+               else recA "x.wav" 3.0
 ; putStrLn "The file is recorded and now will be automatically processed. You will be notificated with the text message in the terminal about the creation of the needed file. Please, wait a little. "
-; norm "x.wav"
-; noiseProfB "8x.wav"
-; noiseReduceB "8x.wav"
-; lim0 <- durationA "_8x.wav"
+; _ <- readProcessWithExitCode (fromJust (showE "sox")) ["x.wav", "_x.wav", "noisered", "nx0.wav.b.prof"] ""
+; norm "_x.wav"
+; lim0 <- durationA "8_x.wav"
 ; putStrLn ""
 ; putStrLn "If you specified as a first command line argument the following the program behaves: "
 ; putStrLn "0 -> after the noise reduction the program only resample the audio to the needed 22050 Hz and adjusts the amlitude; "
@@ -258,3 +259,37 @@
   filenames <- getDirectoryContents =<< getCurrentDirectory
   let rems = filter (\x -> head x `elem` (['2'..'9'] ++ "_" ++ "x")) filenames in mapM_ removeFile rems
 
+-- | Function 'cleanTempN' removes all the intermediate temporary files produced with noise profile creation in the directory where it is called from.
+cleanTempN :: IO ()
+cleanTempN = do
+  filenames <- getDirectoryContents =<< getCurrentDirectory
+  let rems = filter (\x -> head x == 'n') filenames in mapM_ removeFile rems
+
+-- | Function 'tempoR' is used to create a noise profile for all the recorded sounds. If you provide a 3 seconds silence as needed, the program will
+-- reduce the noise in your recordings. This will create a cleaner sound.
+tempoR :: IO ()
+tempoR = do {
+    putStrLn "Now, please, be in a silence for 5 seconds so that the program can create a noise profile to remove the noise from the recording. "
+    ; putStrLn "Otherwise, the program can remove from the recorded sound data some important parts as a noise."
+    ; recA "nx.wav" 0.07
+    ; threadDelay 200000
+    ; recA "nx2.wav" 0.07
+    ; threadDelay 300000
+    ; recA "nx3.wav" 0.07
+    ; upperB1 <- upperBnd "nx.wav"
+    ; upperB2 <- upperBnd "nx2.wav"
+    ; upperB3 <- upperBnd "nx3.wav"
+    ; (ampl1,_) <- selMaxAbs "nx.wav" (0,upperB1)
+    ; (ampl2,_) <- selMaxAbs "nx2.wav" (0,upperB2)
+    ; (ampl3,_) <- selMaxAbs "nx3.wav" (0,upperB3)
+    ; let b1 = abs (read ampl1::Double)
+          b2 = abs (read ampl2::Double)
+          b3 = abs (read ampl3::Double)
+    ; case minimum [b1,b2,b3] of
+        b1 -> renameFile "nx.wav" "nx0.wav"
+        b2 -> renameFile "nx2.wav" "nx0.wav"
+        _  -> renameFile "nx3.wav" "nx0.wav"
+    ; noiseProfB "nx0.wav"
+    ; putStrLn ""
+    ; threadDelay 400000
+    ; putStrLn "The noise sound profile is now created. The program can proceed further." }
diff --git a/README b/README
--- a/README
+++ b/README
@@ -83,10 +83,10 @@
 response for any possible issues, but by this notification tries to 
 intent you to be aware of some possible issues.
 
-        ***** Command line arguments *****
+        ***** Command Line Arguments *****
 
-If you specified as a first command line argument the following number
-the program behaves: 
+If you specify as a first command line argument one of the numbers below
+the program behaves as follows: 
     0 -> after the noise reduction the program only resample 
       the audio to the needed 22050 Hz and adjusts the amlitude; 
     1 -> after the noise reduction the program additionally 
@@ -101,8 +101,8 @@
        the audio; 
     _ -> is the same as 3. 
 
-If you specified as a second command line argument the following number
-the program behaves: 
+If you specify as a second command line argument one of the numbers below
+the program behaves as follows: 
     0 -> the maximum amplitude, starting from which the file will 
       not be trimmed for the first command line argument greater 
        of 1, is 0.01; 
@@ -125,13 +125,29 @@
 just that non-silent representations for the Ukrainian sounds, 
 which are given. The list must be sorted.
 
+           ***** More Information *****
+
 You can create a sound in either a 'sharp' mode or in a usual mode.
 The first one means that the program does not check whether the
 specified duration for recording the initial sound data
-is greater than 3 seconds. It put the responsibility for the sound more
-to the user, so for a beginning it is not recommended (though you can
-give it a try).
+is greater than 3 seconds. In such a case the duration can be
+much smaller. This mode needs more mastership in interacting with a
+program. For speech synthesis (as an advice) use this mode for
+the very short sounds (like the sound representation for "ь")
+or for the sounds, you can articulate for a long time continually
+(for example, vowels and some consonants). The 'sharp' mode delegates
+the responsibility for the sound to much broader extent to the user,
+so for a beginning it is not recommended (though you can give it a try).
 
-To use the program properly, check whether the system has included the
-Ukrainian localization.
+At the beginning the program also creates a noise profile (once per execution).
+It is now used to reduce the noise level for the recorded sound representations.
+It uses the default SoX noise reducing settings with a hope that for you they can
+be sufficient.
+
+           ***** Ukrainian Localization *****
+
+Please, before using the program check that uk_UA.UTF8 localization is
+present in your system as one of the system locales. Otherwise,
+the program will possibly (in some cases surely) cycle. In such a case,
+you can terminate it in a usual way by sending interruption signals.
 
diff --git a/SoXBasics.hs b/SoXBasics.hs
--- a/SoXBasics.hs
+++ b/SoXBasics.hs
@@ -265,10 +265,10 @@
 recA :: FilePath -> Double -> IO ()
 recA file x | take 5 os == "mingw" =
   if isJust (showE "sox") 
-  then readProcessWithExitCode (fromJust (showE "sox")) ["-t","waveaudio","-d","-b16", "-c1", "-e", "signed-integer", "-L", file, "trim", "0.5", showFFloat Nothing x $ show 0] "" >> return ()
+  then readProcessWithExitCode (fromJust (showE "sox")) ["-t","waveaudio","-d","-b16", "-c1", "-esigned-integer", "-L", file, "trim", "0.5", showFFloat Nothing x $ show 0] "" >> return ()
   else error "SoX is not properly installed in your system. Please, install it properly and then call the function again."
             | otherwise = if isJust (showE "rec") 
-  then readProcessWithExitCode (fromJust (showE "rec")) ["-b16", "-c1", "-e", "signed-integer", "-L", file, "trim", "0.5", showFFloat Nothing x $ show 0] "" >> return ()
+  then readProcessWithExitCode (fromJust (showE "rec")) ["-b16", "-c1", "-esigned-integer", "-L", file, "trim", "0.5", showFFloat Nothing x $ show 0] "" >> return ()
   else error "SoX is not properly installed in your system. Please, install it properly and then call the function again."
 
 -- | Function 'resampleA' changes the sample rate for the recorded audio for further processing. 
diff --git a/mmsyn7ukr.cabal b/mmsyn7ukr.cabal
--- a/mmsyn7ukr.cabal
+++ b/mmsyn7ukr.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn7ukr
-version:             0.7.1.0
+version:             0.7.2.0
 synopsis:            A simple basic interface to some SoX functionality or to produce a voice that can be used by mmsyn7h
 description:         A program and a library that can be used as a simple basic interface to some SoX functionality or to produce your voice in Ukrainian (if you pronounce the sounds properly) represented by the separate sounds or something special like soft sign.
 homepage:            https://hackage.haskell.org/package/mmsyn7ukr
