diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -215,3 +215,10 @@
 ## 0.14.0.1 -- 2020-02-08
 
 * Fourteenth version revised A. Fixed the version number.
+
+## 0.15.0.0 -- 2020-02-21
+
+* Fifteenth version. Added an advice to use or not a 'sharp' mode. Added the possibility to shorten the printed informational messages by specifying
+as the last symbol in the second command line argument a letter 's'. Fixed issue with inconsistent duration in the 'produceSound3' function and changed
+the parameter from 0.04 to 0.03. Fixed issue with wrong specifying second command line argument for further processing. Some minor code and documentation
+improvements.
diff --git a/Control/Exception/FinalException.hs b/Control/Exception/FinalException.hs
--- a/Control/Exception/FinalException.hs
+++ b/Control/Exception/FinalException.hs
@@ -29,7 +29,7 @@
 data FinalException = NeededInfoIsShown | 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 
+       | DataSoundFileNotRead String | UndefinedFunction String
           deriving ( Typeable )
 
 instance Exception FinalException
@@ -56,6 +56,7 @@
     ++ (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. 'NeededInfoIsShown' is an exception that actually only signals that the needed information is given and is not
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -39,7 +39,7 @@
        putStr "list-of-produced-sound-representations (if any) -- a list of sound representations, which the program will try to produce while being executed. "
        putStrLn "The default one (if not specified) is a full range of needed sound representations. "
     "-v" -> do
-       putStrLn "mmsyn7ukr version: 0.14.0.1"
+       putStrLn "mmsyn7ukr version: 0.15.0.0"
     "-t" -> do
        putStrLn "The program plays now a service sound for a 0.5 second. It uses just that duration for a pause before you can record a sound representation further."
        path0 <- getDataFileName "y.wav"
diff --git a/Processing_mmsyn7ukr.hs b/Processing_mmsyn7ukr.hs
--- a/Processing_mmsyn7ukr.hs
+++ b/Processing_mmsyn7ukr.hs
@@ -26,6 +26,11 @@
   , tempS
   , showCoef
   , tempeRa
+  -- ** Informational messages printing functions
+  , printGenInfo0
+  , printGenInfo1
+  , printGenInfo2
+  , recommendSharp
   -- * Cleaning
   , cleanTemp
   , cleanTempN
@@ -62,13 +67,13 @@
         "I.wav", "J.wav", "K.wav", "L.wav", "M.wav", "N.wav", "O.wav", "P.wav", "Q.wav", "R.wav", 
           "S.wav", "T.wav", "U.wav", "V.wav", "W.wav", "X.wav", "Y.wav", "Z.wav", "a.wav", "b.wav", "c.wav", 
             "d.wav", "e.wav", "f.wav"] $ ["а", "б", "в", "г", "д", "дж", "дз", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", 
-               "с", "сь", "т", "у", "ф", "х", "ц", "ць", "ч", "ш", "ь", "і", "ґ"]) $ file1
+               "с", "сь", "т", "у", "ф", "х", "ц", "ць", "ч", "ш", "ь", "і", "ґ"]) file1
 ; playA file
 ; putStrLn "    *****"
 ; putStrLn "The sound duration is: "
 ; produceSound2 (file, file1) (actsctrl, noiseLim) soundUkr
 ; return () }) (do
-       putStrLn "Something went unexpectedly, please, repeat the precedure again, be attentive to the data you provide as input! "
+       putStrLn "Something went unexpectedly, please, repeat the procedure again, be attentive to the data you provide as input! "
        putStr "The needed files were NOT created (may be the sound was not at the moment of recording)! The process will be restarted "
        putStrLn "for the sound. Please, produce a sound during the first 3 seconds (after 0.5 second delay or whichever you specify), OR specify greater ratio, or use \'sharp\' mode!"
        cleanTemp
@@ -77,52 +82,51 @@
 
 -- | Function 'produceSound3' is used internally in the 'produceSound2' function.
 produceSound3 :: (String, String) -> (FilePath, FilePath) -> String -> (Int, Double) -> Double -> IO ()
-produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0 = if actsctrl == "-1"
-  then do
+produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0
+ | actsctrl == "-1" = do 
     lim1 <- durationA "8_x.wav"
     if lim1 <= 0.0
       then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
       else do 
         resampleA "8_x.wav" (22050::Int)
         produceSound4 (file, file1)  "38_x.wav"
-  else case (take 1 actsctrl) of
-         "0" -> do
-            lim1 <- durationA "8_x.wav"
-            if lim1 <= 0.0
-              then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
-              else do 
-                resampleA "8_x.wav" (22050::Int)
-                produceSound4 (file, file1)  "38_x.wav"
-         "1" -> do
-            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 "8_x.wav" lim1 noiseMax (duration0*0.04)
-                resampleA "8_x.wav" (22050::Int)
-                produceSound4 (file, file1)  "38_x.wav"
-         "2" -> do
-            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 "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 "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 "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"
+ | take 1 actsctrl == "0" = do
+    lim1 <- durationA "8_x.wav"
+    if lim1 <= 0.0
+      then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
+      else do 
+        resampleA "8_x.wav" (22050::Int)
+        produceSound4 (file, file1)  "38_x.wav"
+ | take 1 actsctrl == "1" = do
+    alterVadB "8_x.wav" lim0 noiseMax (duration0*0.03)
+    lim1 <- durationA "8_x.wav"
+    if lim1 <= 0.0
+      then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
+      else do 
+        alterVadE "8_x.wav" lim1 noiseMax (duration0*0.03)
+        resampleA "8_x.wav" (22050::Int)
+        produceSound4 (file, file1)  "38_x.wav"
+ | take 1 actsctrl == "2" = do
+    alterVadB "8_x.wav" lim0 noiseMax (duration0*0.03)
+    lim1 <- durationA "8_x.wav"
+    if lim1 <= 0.0
+      then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
+      else do 
+        alterVadE "8_x.wav" lim1 noiseMax (duration0*0.03)
+        sincA "8_x.wav"
+        resampleA "4.8_x.wav" (22050::Int)
+        produceSound4 (file, file1) "34.8_x.wav"
+ | otherwise = do
+    alterVadB "8_x.wav" lim0 noiseMax (duration0*0.03)
+    lim1 <- durationA "8_x.wav"
+    if lim1 <= 0.0
+      then beginProcessing (file, file1) soundUkr (actsctrl, noiseLim)
+      else do 
+        alterVadE "8_x.wav" lim1 noiseMax (duration0*0.03)
+        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 
@@ -149,85 +153,33 @@
     ; putStrLn $ "For example for 10 seconds record, please, specify " ++ show (10.0/duration0) ++ " as a next step ratio."
     ; putStrLn "    *****"
     ; putStrLn ""
-    ; (longerK0,pause0,sharp) <- tempS soundUkr
+    ; recommendSharp soundUkr
+    ; (longerK0,pause0,sharp) <- tempS soundUkr noiseLim
     ; let longerK = (read x3::Double)*longerK0
     ; putStrLn $ "Please, wait for " ++ show pause0 ++ " seconds 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)! "
-    ; if sharp
-        then recB "x.wav" (longerK, pause0)
-        else if (compare longerK 3.0 == GT)
-               then recB "x.wav" (longerK, pause0)
-               else recB "x.wav" (3.0, pause0)
+    ; if sharp || (compare longerK 3.0 == GT)
+         then recB "x.wav" (longerK, pause0)
+         else recB "x.wav" (3.0, pause0)
     ; 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. "
     ; controlNoiseReduction actsctrl
     ; norm "_x.wav"
     ; lim0 <- durationA "8_x.wav"
-    ; putStrLn ""
-    ; putStrLn "If you specified as a first command line argument one of the numbers below the program behaves as follows: "
-    ; putStrLn "-1 -> the program does not reduce noise, it only resamples the audio to the needed 22050 Hz and adjusts the amplitude."
-    ; putStrLn ""
-    ; putStr "If you specified something else then the program will reduce the noise using the created noise profile. If the first character is one of the "
-    ; putStr "following, then the program will do the following actions besides. After the first character (without any spaces) you can specify "
-    ; putStr "the level of noise reduction by 2 next digits. They are treated by the program as a fractional part of the number \"0.\" ++ \"...\" "
-    ; putStr "so that the last number is passed to the SoX as an amount parameter in the \"noisered\" effect (the greater number gives more aggressive "
-    ; putStrLn "noise reduction with the default one equal to 0.5. For more information, please, refer to the SoX documentation. "
-    ; putStrLn ""
-    ; putStrLn "Therefore, if you specify as a first symbol in the first command line argument one of the following numbers, then the program will behave: "
-    ; putStrLn "0 -> after the noise reduction the program only resamples the audio to the needed 22050 Hz and adjusts the amplitude; "
-    ; putStrLn "1 -> after the noise reduction the program additionally to the 0-processing truncates the silence from the beginning and the end of the audio to the level given by the second command line parameter; "
-    ; putStrLn "2 -> after the noise reduction the program additionally to the 1-processing applies a double band-reject filter to the audio (SoX \"sinc\" effect); "
-    ; putStrLn "_ -> after the noise reduction the program additionally to the 2-processing applies fade-in and fade-out effects to the audio; "
-    ; putStrLn ""
-    ; putStr "0 -> if the first character in the first command line argument is greater or equal to 1, "
-    ; putStr "then the program trims the sound at the beginning and at the end of it. "
-    ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
-    ; putStr "and then applies trimming. The parts of the audio at the beginning "
-    ; putStr "and at the end of the sound, which amplitudes in such a case are "
-    ; putStr "less than 0.01 are trimmed and the resulting sound data are processed "
-    ; putStrLn "further.  "
-    ; putStrLn ""
-    ; putStr "1 -> if the first character in the first command line argument is greater or equal to 1, "
-    ; putStr "then the program trims the sound at the beginning and at the end of it. "
-    ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
-    ; putStr "and then applies trimming. The parts of the audio at the beginning "
-    ; putStr "and at the end of the sound, which amplitudes in such a case are "
-    ; putStr "less than 0.02 are trimmed and the resulting sound data are processed "
-    ; putStrLn "further.  "
-    ; putStrLn ""
-    ; putStr "2 -> if the first character in the first command line argument is greater or equal to 1, "
-    ; putStr "then the program trims the sound at the beginning and at the end of it. "
-    ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
-    ; putStr "and then applies trimming. The parts of the audio at the beginning "
-    ; putStr "and at the end of the sound, which amplitudes in such a case are "
-    ; putStr "less than 0.04 are trimmed and the resulting sound data are processed "
-    ; putStrLn "further.  "
-    ; putStrLn ""
-    ; putStr "3 -> if the first character in the first command line argument is greater or equal to 1, "
-    ; putStr "then the program trims the sound at the beginning and at the end of it. "
-    ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
-    ; putStr "and then applies trimming. The parts of the audio at the beginning "
-    ; putStr "and at the end of the sound, which amplitudes in such a case are "
-    ; putStr "less than 0.08 are trimmed and the resulting sound data are processed "
-    ; putStrLn "further.  "
-    ; putStrLn ""
-    ; putStr "_ -> if the first character in the first command line argument is greater or equal to 1, "
-    ; putStr "then the program trims the sound at the beginning and at the end of it. "
-    ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
-    ; putStr "and then applies trimming. The parts of the audio at the beginning "
-    ; putStr "and at the end of the sound, which amplitudes in such a case are "
-    ; putStr "less than 0.04 are trimmed and the resulting sound data are processed "
-    ; putStrLn "further. So effectively it is the same as 2 (the default value). "
-    ; putStrLn ""
-    ; let noiseMax = getBFst' (2::Int, V.fromList [("0", 0::Int), ("1", 1::Int), ("2", 2::Int), ("3", 3::Int)]) noiseLim 
+    ; let end2 = if null noiseLim then "" else [last noiseLim]
+    ; case end2 of
+        "s" -> putStr ""
+        "l" -> printGenInfo1
+        _   -> printGenInfo1
+    ; let noiseMax = getBFst' (2::Int, V.fromList [("0", 0::Int), ("1", 1::Int), ("2", 2::Int), ("3", 3::Int)]) (take 1 noiseLim)
     ; produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0
     ; cleanTemp }
 
 -- | Function 'showCoef' is used to represent the duration of the sound file.
 showCoef :: String -> String
-showCoef xs | any (== '.') xs = 
+showCoef xs | '.' `elem` xs = 
   let (ts, us) = break (== '.') xs in let ws = showFFloat (Just 6) ((fromIntegral (read (take 6 . drop 1 $ us)::Int) + 1.0) / 1000000.0) $ show 0 in let result = ts ++ drop 1 ws in result
             | otherwise = xs
       
@@ -257,23 +209,35 @@
 ; putStrLn ""
 ; (_, Just hout, _, _) <- createProcess (proc (fromJust . showE $ "soxi") ["-D", file]) { std_out = CreatePipe }
 ; x3 <- hGetContents hout
-; (longerK0,pause0,sharp) <- tempS soundUkr
+; recommendSharp soundUkr
+; (longerK0,pause0,sharp) <- tempS soundUkr noiseLim
 ; let longerK = (read x3::Double)*longerK0
 ; putStrLn $ "Please, wait for " ++ show pause0 ++ " seconds 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)! "
-; if sharp
-        then recB "x.wav" (longerK, pause0)
-        else if (compare longerK 3.0 == GT)
-               then recB "x.wav" (longerK, pause0)
-               else recB "x.wav" (3.0, pause0)
+; if sharp || (compare longerK 3.0 == GT)
+    then recB "x.wav" (longerK, pause0)
+    else recB "x.wav" (3.0, pause0)
 ; 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. "
 ; controlNoiseReduction actsctrl
 ; norm "_x.wav"
 ; lim0 <- durationA "8_x.wav"
-; putStrLn ""
+; if null noiseLim
+    then printGenInfo1
+    else if last noiseLim == 's'
+           then putStr ""
+           else printGenInfo1
+; let noiseMax = getBFst' (2::Int, V.fromList [("0", 0::Int), ("1", 1::Int), ("2", 2::Int), ("3", 3::Int)]) (take 1 noiseLim)
+; produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0
+; cleanTemp }
+
+-- | Function 'printGenInfo1' prints the general information about behaviour of the program in case of the different specified first two command line
+-- arguments. If in the second command line argument there is letter \'s\' at the end, then the printing is omitted.
+printGenInfo1 :: IO ()
+printGenInfo1 = do {
+putStrLn ""
 ; putStrLn "If you specified as a first command line argument one of the numbers below the program behaves as follows: "
 ; putStrLn "-1 -> the program does not reduce noise, it only resamples the audio to the needed 22050 Hz and adjusts the amplitude;"
 ; putStrLn ""
@@ -289,7 +253,10 @@
 ; putStrLn "2 -> after the noise reduction the program additionally to the 1-processing applies a double band-reject filter to the audio (SoX \'sinc\' effect); "
 ; putStrLn "3 -> after the noise reduction the program additionally to the 2-processing applies fade-in and fade-out effects to the audio; "
 ; putStrLn "_ -> is the same as 3. "
+; putStrLn "         ----------------------            "
 ; putStrLn ""
+; putStrLn "If you specify at the beginning of a second command line argument one of the numbers below the program behaves as follows: "
+; putStrLn ""
 ; putStr "0 -> if the first character in the first command line argument is greater or equal to 1, "
 ; putStr "then the program trims the sound at the beginning and at the end of it. "
 ; putStr "It firstly normalizes the sound (so its maximum amplitude is equal to 1) "
@@ -330,9 +297,13 @@
 ; putStr "less than 0.04 are trimmed and the resulting sound data are processed "
 ; putStrLn "further. So effectively it is the same as 2 (the default value). "
 ; putStrLn ""
-; let noiseMax = getBFst' (2::Int, V.fromList [("0", 0::Int), ("1", 1::Int), ("2", 2::Int), ("3", 3::Int)]) noiseLim 
-; produceSound3 (actsctrl, noiseLim) (file, file1) soundUkr (noiseMax, duration0) lim0
-; cleanTemp }
+; putStrLn "         ----------------------            "
+; putStr "You can shorten the information printed during the program execution by specifying as the "
+; putStr "last symbol in the second command line argument an \'s\'. In such a case, the program omits "
+; putStr "printing the much of its informational messages that are used mostly for the learning "
+; putStr "to deal with the program. If you specified the second command line argument without the \'s\' "
+; putStrLn "at the end, then the program prints all the additional information that is considered important."
+; putStrLn "" }
 
 -- | Function 'controlNoiseReduction' is used in the 'produceSound2' and 'beginProcessing' functions to reduce the noise with the created by the
 -- 'tempeRa' noise profile. If you specified something else than \"-1\" as a first command line argument, then the program will reduce the noise
@@ -354,14 +325,14 @@
       (code, _, _) <- readProcessWithExitCode (fromJust (showE "sox")) ["x.wav", "_x.wav", "noisered", "nx0.wav.b.prof", showFFloat (Just 4) s2 $ show 0] ""
       if code /= ExitSuccess 
         then do
-          e1 <- doesFileExist $ "_x.wav"
+          e1 <- doesFileExist "_x.wav"
           if e1
             then do
-              removeFile $ "_x.wav"
+              removeFile "_x.wav"
               catchEnd (NotCreatedWithEffect "noisered")
             else catchEnd (NotCreatedWithEffect "noisered")
         else do 
-          e2 <- doesFileExist $ "_x.wav"
+          e2 <- doesFileExist "_x.wav"
           if e2 
             then return ()
             else catchEnd (InitialFileNotChanged "x.wav")
@@ -371,16 +342,14 @@
 -- will be longer than the one provided by the @mmsyn6ukr@ package. The second one specifies a duration of the pause before SoX actually starts to
 -- record the needed sound data (in seconds). The @Bool@ value specifies whether the program uses a \'sharp\' mode meaning that
 -- it does not check whether the resulting duration of the recording is at least 3 seconds long, so you can specify shorter durations.
-tempS :: String -> IO (Double, Double, Bool)
-tempS soundUkr = onException (do
-    putStrLn ""
-    putStr "IMPORTANT. Would you like to use a \'sharp\' mode for this sound representaiion? (Enter \'*\' as the first symbol in your next input to use the "
-    putStr "\'sharp\' mode, in which the program does not use 3 seconds minimal limit to record the sound representation, "
-    putStr "but a recording duration is no more than the one specified by your entered ratio). For not using the \'sharp\' mode, "
-    putStrLn "enter your next input without the asterisk."
-    putStrLn ""
-    putStrLn "IMPORTANT 2. After specifying the ratio you can input \'#\' sign and specify after it the duration (in seconds) of the needed pause before SoX will actually start recording of the sound data. The default one is 0.5 seconds if nothing is specified. This also provides backward compatibility of the program."
-    putStrLn ""
+-- The @String@ arguments are the Ukrainian sound representation name and the second command line argument for the program if any respectively.
+tempS :: String -> String -> IO (Double, Double, Bool)
+tempS soundUkr noiseLim = onException (do
+    if null noiseLim
+      then printGenInfo2
+      else if last noiseLim == 's'
+             then putStr ""
+             else printGenInfo2
     putStrLn "In how many times do you think your sound representing " 
     putStrLn ""
     putStrLn $ "                     \"" ++ (if soundUkr /= "ь" then map toUpper soundUkr else soundUkr) ++ "\"" 
@@ -395,8 +364,22 @@
       "*" -> let long = read (takeWhile (/= '#') . drop 1 $ longivityZ)::Double in return (long,sharp2,True)
       _   -> let long = read (takeWhile (/= '#') longivityZ)::Double in return (long,sharp2,False)) (do 
                putStrLn "Please, specify again the valid values!"
-               tempS soundUkr)
+               tempS soundUkr noiseLim)
 
+-- | Function 'printGenInfo2' prints the additional information about the \'sharp\' mode and the possibility to specify the duration of the
+-- pause before the SoX executable actuall starts recording of the sound representation.
+-- If in the second command line argument there is letter \'s\' at the end, then the printing is omitted.
+printGenInfo2 :: IO ()
+printGenInfo2 = do
+  putStrLn ""
+  putStr "IMPORTANT. Would you like to use a \'sharp\' mode for this sound representaiion? (Enter \'*\' as the first symbol in your next input to use the "
+  putStr "\'sharp\' mode, in which the program does not use 3 seconds minimal limit to record the sound representation, "
+  putStr "but a recording duration is no more than the one specified by your entered ratio). For not using the \'sharp\' mode, "
+  putStrLn "enter your next input without the asterisk."
+  putStrLn ""
+  putStrLn "IMPORTANT 2. After specifying the ratio you can input \'#\' sign and specify after it the duration (in seconds) of the needed pause before SoX will actually start recording of the sound data. The default one is 0.5 seconds if nothing is specified. This also provides backward compatibility of the program."
+  putStrLn ""
+
 -- | Function 'cleanTemp' removes all the intermediate temporary files in the directory where it is called from.
 cleanTemp :: IO ()
 cleanTemp = do
@@ -454,6 +437,19 @@
     ; threadDelay 400000
     ; putStrLn "The noise sound profile is now created. The program can proceed further." }
 
+-- | Function 'recommendSharp' is used to print an advice about the speech transformation for the Ukrainian sounds that you can pronounce
+-- properly continually and so it can be better to use for their producing a \'sharp\' mode.
+recommendSharp :: String -> IO ()
+recommendSharp soundUkr = do
+  let k0 = getBFst' (False, V.fromList . zip ["\1072","\1077","\1078","\1079","\1080","\1083","\1084","\1085","\1086","\1088","\1089","\1089\1100","\1091","\1092","\1093",  "\1095","\1096","\1110"] $ replicate 18 True) soundUkr
+  if k0
+    then do
+      putStr $ "In case of speech transformation: for the sound representation for the Ukrainian \"" ++ soundUkr
+      putStrLn "\" it is recommended to use a \'sharp\' mode. So, try to specify \'*\' as a first symbol and maybe pronounce the corresponding Ukrainian sound continually. "
+    else do
+      putStr $ "In case of speech transformation: for the sound representation for the Ukrainian \"" ++ soundUkr
+      putStrLn "\" it is recommended to use a common mode (the usual one). So, try not to specify \'*\' as a first symbol. "
+
 -- | Function 'main7ukr' is used internally in the 'main' function of the Main module. It responds for mainstream @mmsyn7ukr@ program execution.
 -- It starts with CAUTION to be responsible for usage and to 
 -- use it personally in some important cases (see README) and with some additional information. Then the program
@@ -469,6 +465,67 @@
   putStrLn ""
   putStrLn "                                            (William Lamb)"
   putStrLn ""
+  let arg2 = concat . drop 1 . take 2 $ args
+      end2 = if null arg2 then "" else [last arg2]
+  case end2 of
+    "s" -> putStr ""
+    "l" -> printGenInfo0
+    _   -> printGenInfo0
+  putStrLn ""
+  onException (if take 5 os == "mingw" 
+      then do 
+        let eS = fromJust (showE "sox")
+            eSi = fromJust (showE "soxi")
+        return ()
+      else do 
+        let eS = fromJust (showE "sox")
+            eSi = fromJust (showE "soxi")
+            eSp = fromJust (showE "play")
+            eSr = fromJust (showE "rec")
+        return ()) (catchEnd ExecutableNotProperlyInstalled)
+  tempeRa
+  let a0 = if null . take 1 $ args 
+             then []
+             else concat . take 1 $ args
+      a1 = if null . drop 1 . take 2 $ args 
+             then []
+             else concat . drop 1 . take 2 $ args
+      a2 = drop 2 . take 3 $ args
+  if null a2
+    then do
+      paths <- mapM getDataFileName ["A.wav", "B.wav", "C.wav", "D.wav", "E.wav", "F.wav", "G.wav", "H.wav", 
+        "I.wav", "J.wav", "K.wav", "L.wav", "M.wav", "N.wav", "O.wav", "P.wav", "Q.wav", "R.wav", 
+          "S.wav", "T.wav", "U.wav", "V.wav", "W.wav", "X.wav", "Y.wav", "Z.wav", "a.wav", "b.wav", "c.wav", 
+            "d.wav", "e.wav", "f.wav"]
+      copiedFs <- mapM getDataFileName ["-.wav", "0.wav", "1.wav"]
+      mapM_ (produceSound (a0, a1)) paths
+      silenceFs <- mapM makeAbsolute ["-.wav", "0.wav", "1.wav"]
+      let pairs = zip copiedFs silenceFs
+      mapM_ (uncurry copyFile) pairs
+    else do
+      putStrLn ""
+      let rrs = show a2
+          list0 = read (replaceP rrs)::[String]
+          zss = read (replaceP4 . show $ list0)::[String]
+          wws = map (getBFst' ("0.wav", V.fromList . zip ["а","б","в","г","д","дж","дз","е","ж","з","и","й","к","л","м","н","о","п","р","с",
+                       "сь","т","у","ф","х","ц","ць","ч","ш","ь","і","ґ"] $ ["A.wav", "B.wav", "C.wav", "D.wav", "E.wav", "F.wav", "G.wav", "H.wav", 
+                         "I.wav", "J.wav", "K.wav", "L.wav", "M.wav", "N.wav", "O.wav", "P.wav", "Q.wav", "R.wav", 
+                           "S.wav", "T.wav", "U.wav", "V.wav", "W.wav", "X.wav", "Y.wav", "Z.wav", "a.wav", "b.wav", "c.wav", 
+                             "d.wav", "e.wav", "f.wav"])) zss
+      paths <- mapM getDataFileName wws
+      copiedFs <- mapM getDataFileName ["-.wav", "0.wav", "1.wav"]
+      mapM_ (produceSound (a0, a1)) paths
+      silenceFs <- mapM makeAbsolute ["-.wav", "0.wav", "1.wav"]
+      let pairs = zip copiedFs silenceFs
+      mapM_ (uncurry copyFile) pairs
+  putStrLn ""
+  putStrLn "Your voice sound files are now created in the current directory! Use in a secure way! Remember the initial CAUTION! "
+  putStrLn ""
+  cleanTempN
+
+-- | Function 'printGenInfo0' prints once the general information if in the second command line argument there is no letter \'s\' at the end.
+printGenInfo0 :: IO ()
+printGenInfo0 = do
   putStr "The program mmsyn7ukr produces the \"voice\" represented as an ordered "
   putStr "set of sounds each of which corresponds (represents) one of the "
   putStr "Ukrainian sounds so that using them together by mmsyn7h program "
@@ -556,56 +613,4 @@
   putStr "the program will possibly (in some cases surely) cycle. In such a case,"
   putStrLn "you can terminate it in a usual way by sending interruption signals."
   putStrLn ""
-  putStrLn ""
-  onException (if take 5 os == "mingw" 
-      then do 
-        let eS = fromJust (showE "sox")
-            eSi = fromJust (showE "soxi")
-        return ()
-      else do 
-        let eS = fromJust (showE "sox")
-            eSi = fromJust (showE "soxi")
-            eSp = fromJust (showE "play")
-            eSr = fromJust (showE "rec")
-        return ()) (catchEnd ExecutableNotProperlyInstalled)
-  tempeRa
-  let a0 = if null . take 1 $ args 
-             then []
-             else concat . take 1 $ args
-      a1 = if null . drop 1 . take 2 $ args 
-             then []
-             else concat . drop 1 . take 1 $ args
-      a2 = if null . drop 2 . take 3 $ args 
-             then []
-             else drop 2 . take 3 $ args
-  if null a2
-    then do
-      paths <- mapM getDataFileName ["A.wav", "B.wav", "C.wav", "D.wav", "E.wav", "F.wav", "G.wav", "H.wav", 
-        "I.wav", "J.wav", "K.wav", "L.wav", "M.wav", "N.wav", "O.wav", "P.wav", "Q.wav", "R.wav", 
-          "S.wav", "T.wav", "U.wav", "V.wav", "W.wav", "X.wav", "Y.wav", "Z.wav", "a.wav", "b.wav", "c.wav", 
-            "d.wav", "e.wav", "f.wav"]
-      copiedFs <- mapM getDataFileName ["-.wav", "0.wav", "1.wav"]
-      mapM_ (produceSound (a0, a1)) paths
-      silenceFs <- mapM makeAbsolute ["-.wav", "0.wav", "1.wav"]
-      let pairs = zip copiedFs silenceFs
-      mapM_ (\(x, y) -> copyFile x y) pairs
-    else do
-      putStrLn ""
-      let rrs = show a2
-          list0 = read (replaceP rrs)::[String]
-          zss = read (replaceP4 . show $ list0)::[String]
-          wws = map (getBFst' ("0.wav", V.fromList . zip ["а","б","в","г","д","дж","дз","е","ж","з","и","й","к","л","м","н","о","п","р","с",
-                       "сь","т","у","ф","х","ц","ць","ч","ш","ь","і","ґ"] $ ["A.wav", "B.wav", "C.wav", "D.wav", "E.wav", "F.wav", "G.wav", "H.wav", 
-                         "I.wav", "J.wav", "K.wav", "L.wav", "M.wav", "N.wav", "O.wav", "P.wav", "Q.wav", "R.wav", 
-                           "S.wav", "T.wav", "U.wav", "V.wav", "W.wav", "X.wav", "Y.wav", "Z.wav", "a.wav", "b.wav", "c.wav", 
-                             "d.wav", "e.wav", "f.wav"])) zss
-      paths <- mapM getDataFileName wws
-      copiedFs <- mapM getDataFileName ["-.wav", "0.wav", "1.wav"]
-      mapM_ (produceSound (a0, a1)) paths
-      silenceFs <- mapM makeAbsolute ["-.wav", "0.wav", "1.wav"]
-      let pairs = zip copiedFs silenceFs
-      mapM_ (\(x, y) -> copyFile x y) pairs
-  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/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -128,7 +128,7 @@
        
     _ -> is the same as 3. 
 
-If you specify as a second command line argument one of the numbers below
+If you specify at the beginning of a second command line argument one of the numbers below
 the program behaves as follows:
 
     0 -> if the first character in the first command line argument is greater or equal to 1,
@@ -170,6 +170,9 @@
             and at the end of the sound, which amplitudes in such a case are
               less than 0.04 are trimmed and the resulting sound data are processed
                 further. So effectively it is the same as 2 (the default value).
+
+After the number as its ending you can specify the letter 's' to shorten the printed
+informational messages by the program. More information is further below.
     
 If you specify the third command line argument, it must be a list 
 of Strings that can be obtained by executing the
@@ -244,3 +247,13 @@
 Double value. The program will try to use it. If not specified or not properly
 specified, the program uses a default one (compatible with the previous versions)
 equal to 0.5 second pause.
+
+           ***** The Possibility to Shorten the Printed Information *****
+           --------------------------------------------------------------
+
+You can shorten the information printed during the program execution by specifying
+as the last symbol in the second command line argument an 's'. In such a case,
+the program omits printing the much of its informational messages that are used
+mostly for the learning to deal with the program. If you specified the second command
+line argument without the 's' at the end, then the program prints all the
+additional information that is considered important.
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.14.0.1
+version:             0.15.0.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
