diff --git a/-.wav b/-.wav
new file mode 100644
Binary files /dev/null and b/-.wav differ
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -87,6 +87,11 @@
 
 * Fifth version. Changed a behaviour of the Main.main function, added a possibility of more control on the program mmsyn6ukr.
 
-## 0.5.0.0 -- 2019-12-09
+## 0.5.1.0 -- 2019-12-09
 
 * Fifth version revised A. Fixed the genControl function, added more documentation, make the exception message more exact.
+
+## 0.5.2.0 -- 2019-12-16
+
+* Fifth version revised B. Added support for better pauses and therefore additional file "-.wav". Fixed issues with the conversion in case of punctuation separated words. 
+Added additional information about sound files. Deprecated (===) operator in favour of `elem` function.
diff --git a/Map.txt b/Map.txt
new file mode 100644
--- /dev/null
+++ b/Map.txt
@@ -0,0 +1,39 @@
+Sound            |   Corresponding       |       File
+representation   |   file                |       duration, s
+-------------------------------------------------------------------
+"-"            ->    "-.wav"            ->       0.101995
+"0"            ->    "0.wav"            ->       0.051020
+"1"            ->    "1.wav"            ->       0.153016
+"а"            ->    "A.wav"            ->       0.138231
+"б"            ->    "B.wav"            ->       0.057098
+"в"            ->    "C.wav"            ->       0.082268
+"г"            ->    "D.wav"            ->       0.076825
+"д"            ->    "E.wav"            ->       0.072063
+"дж"           ->    "F.wav"            ->       0.048934
+"дз"           ->    "G.wav"            ->       0.055601
+"е"            ->    "H.wav"            ->       0.093605
+"ж"            ->    "I.wav"            ->       0.070612
+"з"            ->    "J.wav"            ->       0.056054
+"и"            ->    "K.wav"            ->       0.099955
+"й"            ->    "L.wav"            ->       0.057143
+"к"            ->    "M.wav"            ->       0.045397
+"л"            ->    "N.wav"            ->       0.064036
+"м"            ->    "O.wav"            ->       0.077370
+"н"            ->    "P.wav"            ->       0.074240
+"о"            ->    "Q.wav"            ->       0.116463
+"п"            ->    "R.wav"            ->       0.071837
+"р"            ->    "S.wav"            ->       0.049206
+"с"            ->    "T.wav"            ->       0.074603
+"сь"           ->    "U.wav"            ->       0.074558
+"т"            ->    "V.wav"            ->       0.110658
+"у"            ->    "W.wav"            ->       0.109070
+"ф"            ->    "X.wav"            ->       0.062268
+"х"            ->    "Y.wav"            ->       0.077188
+"ц"            ->    "Z.wav"            ->       0.053061
+"ць"           ->    "a.wav"            ->       0.089342
+"ч"            ->    "b.wav"            ->       0.057551
+"ш"            ->    "c.wav"            ->       0.066077
+"ь"            ->    "d.wav"            ->       0.020227
+"і"            ->    "e.wav"            ->       0.094150
+"ґ"            ->    "f.wav"            ->       0.062948
+-------------------------------------------------------------------
diff --git a/Melodics/Ukrainian.hs b/Melodics/Ukrainian.hs
--- a/Melodics/Ukrainian.hs
+++ b/Melodics/Ukrainian.hs
@@ -34,12 +34,12 @@
   data1 <- B.readFile file
   let dataN = B.drop 44 data1 in return dataN
 
--- | The function that actually produces a .raw file.
+-- | The function that actually produces a .raw file. The mapping table is given in the @Map.txt@ file.
 appendS16LEFile ::  V.Vector String -> Handle -> IO ()
 appendS16LEFile xs hdl | not (V.null xs) = 
   do
     dataFileList <- mapM getDataFileName 
-      ["0.wav", "1.wav", "A.wav", "B.wav", "C.wav", "D.wav", "E.wav", "F.wav", "G.wav", "H.wav", 
+      ["-.wav", "0.wav", "1.wav", "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"]
@@ -51,11 +51,11 @@
           closedHdl <- hIsClosed hdl
           if closedHdl 
             then do 
-                   B.appendFile rs $ dataList V.! (getBFst' (0, V.fromList [("0", 0), ("1", 1), ("а", 2), ("б", 3), 
-                     ("в", 4), ("г", 5), ("д", 6), ("дж", 7), ("дз", 8), ("е", 9), ("ж", 10), ("з", 11), ("и", 12), 
-                        ("й", 13), ("к", 14), ("л", 15), ("м", 16), ("н", 17), ("о", 18), ("п", 19), ("р", 20), 
-                          ("с", 21), ("сь", 22), ("т", 23), ("у", 24), ("ф", 25), ("х", 26), ("ц", 27), ("ць", 28), ("ч", 29), 
-                            ("ш", 30), ("ь", 31), ("і", 32), ("ґ", 33)]) u)
+                   B.appendFile rs $ dataList V.! (getBFst' (0, V.fromList [("-", 0), ("0", 1), ("1", 2), ("а", 3), ("б", 4), 
+                     ("в", 5), ("г", 6), ("д", 7), ("дж", 8), ("дз", 9), ("е", 10), ("ж", 11), ("з", 12), ("и", 13), 
+                        ("й", 14), ("к", 15), ("л", 16), ("м", 17), ("н", 18), ("о", 19), ("п", 20), ("р", 21), 
+                          ("с", 22), ("сь", 23), ("т", 24), ("у", 25), ("ф", 26), ("х", 27), ("ц", 28), ("ць", 29), ("ч", 30), 
+                            ("ш", 31), ("ь", 32), ("і", 33), ("ґ", 34)]) u)
             else error "File is not closed!"
         else error "Data sound file is not read!") xs
     hClose hdl
@@ -66,8 +66,14 @@
 convertToProperUkrainian :: String -> V.Vector String
 convertToProperUkrainian ys = toVector . correctA . applyChanges . createTuplesByAnalysis . changeJotted . secondConv . wasFstConverted . filterUkr $ ys
 
+correctB :: [String] -> [String]
+correctB ys@(xs:xss) | compare (length . filter (== "1") . takeFromFT2 6 $ ys) 1 == GT = 
+  map (\t -> if t == "1" || isPunctuation (head t) then "-" else t) (takeFromFT2 6 ys) ++ correctB (dropFromFT2 6 ys)
+                     | otherwise = (if isPunctuation . head $ xs then "-" else xs):correctB xss
+correctB [] = []
+
 filterUkr :: String -> String 
-filterUkr xs = concatMap (\x -> if isUkrainian x then [toLower x] else if isSpace x || isControl x then [x] else []) xs
+filterUkr xs = concatMap (\x -> if isUkrainian x then [toLower x] else if isSpace x || isControl x || isPunctuation x then [x] else []) xs
 
 secondConv :: String -> String
 secondConv (y:ys) | if isSpace y then True else isControl y = '1':secondConv ys
@@ -134,9 +140,6 @@
 applyChanges [(xs, _)] = [(xs, Z)]
 applyChanges _ = []
 
-(===) :: Eq a => a -> [a] -> Bool
-(===) x ys = any (\y -> x == y) ys
-
 -- in the further ??T functions the last (, T) means that it must be afterwards be separated with the soft sign into two tuples (1 additional function in the composition)
 -- need further processing means that there should be additional checks and may be transformations. May be they can be omitted
 
@@ -154,9 +157,9 @@
 гT _ = ("г", Z)
 
 дT :: [(String, Triple)] -> (String, Triple)
-дT t1@(_:_) | takeFromFT_ 1 t1 === ["\1078","\1095","\1096"] = ("\1076\1078", Z) -- need further processing д дж
-            | takeFromFT_ 2 t1 === ["\1089\1100","\1094\1100"] = ("\1076\1079\1100", T) -- need further processing д дзь
-            | takeFromFT_ 1 t1 === ["\1079","\1089","\1094"] = ("\1076\1079", Z) -- need further processing  д дз             
+дT t1@(_:_) | takeFromFT_ 1 t1 `elem` ["\1078","\1095","\1096"] = ("\1076\1078", Z) -- need further processing д дж
+            | takeFromFT_ 2 t1 `elem` ["\1089\1100","\1094\1100"] = ("\1076\1079\1100", T) -- need further processing д дзь
+            | takeFromFT_ 1 t1 `elem` ["\1079","\1089","\1094"] = ("\1076\1079", Z) -- need further processing  д дз             
             | otherwise = ("\1076", Z)
 дT _ = ("д", Z)
 
@@ -166,15 +169,15 @@
 дзT _ = ("дз", Z)
 
 жT :: [(String, Triple)] -> (String, Triple)
-жT t1@(_:_) | takeFromFT 2 t1 === ["\1089\1100","\1094\1100"] = ("\1079\1100", T)
+жT t1@(_:_) | takeFromFT 2 t1 `elem` ["\1089\1100","\1094\1100"] = ("\1079\1100", T)
             | otherwise = ("\1078", Z)
 жT _ = ("ж", Z)
 
 зT :: [(String, Triple)] -> (String, Triple)
-зT t1@(_:_) | takeFromFT_ 1 t1 === ["\1078","\1095","\1096"] || takeFromFT_ 2 t1 == "\1076\1078" = ("\1078", Z)
+зT t1@(_:_) | takeFromFT_ 1 t1 `elem` ["\1078","\1095","\1096"] || takeFromFT_ 2 t1 == "\1076\1078" = ("\1078", Z)
             | isSoftDOrL t1 = ("\1079\1100", T)
-            | takeFromFT 1 t1 === ["\1095","\1096"] = ("\1096", Z) -- need further processing з ш
-            | takeFromFT 1 t1  === ["\1089","\1094"] || takeFromFT_ 1 t1 === ["\1082","\1087","\1090","\1092","\1093"] = ("\1089", Z) -- need further processing з с
+            | takeFromFT 1 t1 `elem` ["\1095","\1096"] = ("\1096", Z) -- need further processing з ш
+            | takeFromFT 1 t1  `elem` ["\1089","\1094"] || takeFromFT_ 1 t1 `elem` ["\1082","\1087","\1090","\1092","\1093"] = ("\1089", Z) -- need further processing з с
             | otherwise = ("\1079", Z)
 зT _ = ("з", Z)
 
@@ -206,7 +209,7 @@
 стT :: [(String, Triple)] -> (String, Triple)
 стT t1@(_:_) | isVoicedObstruent (takeFromFT_ 1 t1) || isVoicedObstruent (takeFromFT_ 2 t1) = ("\1079", Z)
              | takeFromFT_ 3 t1 == "\1089\1100\1082" || takeFromFT_ 2 t1 == "\1094\1100" = ("\1089\1100", Z)
-             | takeFromFT_ 1 t1 === ["\1089","\1085"] = ("\1089", Z)
+             | takeFromFT_ 1 t1 `elem` ["\1089","\1085"] = ("\1089", Z)
              | takeFromFT_ 1 t1 == "\1095" = ("\1096", Z)
              | otherwise = ("\1089\1090", T)
 стT _ = ("ст", T)
@@ -223,7 +226,7 @@
             | takeFromFT_ 2 t1 == "\1094\1100" = ("\1094\1100", Z)
             | takeFromFT_ 1 t1 == "\1094" = ("\1094", Z)
             | isSoftDen t1 = ("\1090\1100", T)
-            | takeFromFT_ 1 t1 === ["\1095","\1096"] = ("\1095", Z)
+            | takeFromFT_ 1 t1 `elem` ["\1095","\1096"] = ("\1095", Z)
             | otherwise = ("\1090", Z)
 тT _ = ("т", Z)
 
@@ -264,13 +267,13 @@
 цьT _ = ("ць", Z)
 
 чT :: [(String, Triple)] -> (String, Triple)
-чT t1@(_:_) | takeFromFT_ 2 t1 === ["\1089\1100","\1094\110"] = ("\1094\1100", Z)
+чT t1@(_:_) | takeFromFT_ 2 t1 `elem` ["\1089\1100","\1094\110"] = ("\1094\1100", Z)
             | isVoicedObstruent (takeFromFT_ 2 t1) || isVoicedObstruent (takeFromFT_ 1 t1) = ("\1076\1078", Z)
             | otherwise = ("\1095", Z)
 чT _ = ("ч", Z)
 
 шT :: [(String, Triple)] -> (String, Triple)
-шT t1@(_:_) | takeFromFT_ 2 t1 === ["\1089\1100","\1094\110"] = ("\1089\1100", Z)
+шT t1@(_:_) | takeFromFT_ 2 t1 `elem` ["\1089\1100","\1094\110"] = ("\1089\1100", Z)
             | isVoicedObstruent (takeFromFT_ 2 t1) || isVoicedObstruent (takeFromFT_ 1 t1) = ("\1078", Z)
             | otherwise = ("\1096", Z)
 шT _ = ("ш", Z)
@@ -300,11 +303,24 @@
     where ks = fst (head ts)
           k = length ks
 
+takeFromFT2 :: Int -> [String] -> [String]
+takeFromFT2 n ts | if compare 0 n /= LT then True else null ts = []
+                 | compare k n /= LT = [ks]
+                 | otherwise = ks:takeFromFT2 (n - k) (tail ts)
+    where ks = head ts
+          k = length ks
+
+dropFromFT2 :: Int -> [String] -> [String]
+dropFromFT2 n ts | if compare 0 n /= LT then True else null ts = []
+                 | compare k n /= LT = tail ts
+                 | otherwise = dropFromFT2 (n - k) (tail ts)
+    where k = length (head ts)
+
 takeFromFT_ :: Int -> [(String, Triple)] -> String
 takeFromFT_ n ts = takeFromFT n (filter (\(xs, _) -> (xs /= "1" && xs /= "0")) ts)
 
 toVector :: [(String, Triple)] -> V.Vector String
-toVector ts = V.fromList . mapI2 (\x -> not . null . fst $ x) fst (\_ -> []) $ ts
+toVector ts = V.fromList . correctB . mapI2 (\x -> not . null . fst $ x) fst (\_ -> []) $ ts
 
 isUkrainian :: Char -> Bool
 isUkrainian y | (y >= '\1040' && y <= '\1065') || (y >= '\1070' && y <= '\1097') = True
diff --git a/mmsyn6ukr.cabal b/mmsyn6ukr.cabal
--- a/mmsyn6ukr.cabal
+++ b/mmsyn6ukr.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn6ukr
-version:             0.5.1.0
+version:             0.5.2.0
 synopsis:            A musical instrument synthesizer or a tool for Ukrainian language listening
 description:         A program can be used as a musical instrument synthesizer or for Ukrainian speech synthesis especially for poets and writers
 homepage:            https://hackage.haskell.org/package/mmsyn6ukr
@@ -13,8 +13,8 @@
 copyright:           (c) OleksandrZhabenko 2019
 category:            Language
 build-type:          Simple
-extra-source-files:  ChangeLog.md, README.md
-data-files:          0.wav, 1.wav, 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
+extra-source-files:  ChangeLog.md, README.md, Map.txt
+data-files:          -.wav, 0.wav, 1.wav, 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
 cabal-version:       >=1.10
 
 library
