diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -14,3 +14,7 @@
 
 * Second version revised A. Some minor code changes.
 
+## 0.3.0.0 -- 2019-11-28
+
+* Third version. Fixed an issue with the unnecessary additional file. 
+Changed the package into executable and library format.
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -38,9 +38,9 @@
          let ys = take (nSymbols (let zs = take 1 args in if null zs then [] else head zs)) xs in 
              withBinaryFile (nameOfSoundFile ++ ".raw") AppendMode (appendS16LEFile (convertToProperUkrainian ys))
          let ts = showE "sox" in if isJust ts
-                      then callCommand $ fromJust ts ++ " -r22050 -c1 -L -e signed-integer -b16 new." ++ nameOfSoundFile ++ ".raw new." ++ nameOfSoundFile ++ ".wav"
+                      then callCommand $ fromJust ts ++ " -r22050 -c1 -L -e signed-integer -b16 " ++ nameOfSoundFile ++ ".raw " ++ nameOfSoundFile ++ ".wav"
                       else do 
-                         putStr "You have a resulting file, which name begins with \"new.\" in a raw PCM format with bitrate 22050 Hz and 1 channel (mono) in the .raw format. "
+                         putStr "You have a resulting file in a raw PCM format with bitrate 22050 Hz and 1 channel (mono) in the .raw format. "
                          putStr "You can further process it by yourself manually, otherwise, please, install FFMpeg or LibAV executables in the directory mentioned in the variable PATH"
                          putStrLn " and then run: "
                          putStrLn "\"name_of_FFMpeg_or_LibAV_executable\" -f s16le -acodec pcm_s16le -ac 1 -ar 22050 -i \"name_Of_the_sound_file\" \"the_same_name_without_.raw_ending_and_with_.wav_ending\""
diff --git a/Melodics/Ukrainian.hs b/Melodics/Ukrainian.hs
--- a/Melodics/Ukrainian.hs
+++ b/Melodics/Ukrainian.hs
@@ -50,12 +50,17 @@
     dataList <- V.mapM takeData . V.fromList $! dataFileList
     V.mapM_ (\u -> 
       if V.all (\z -> B.length z > 0) dataList 
-        then let rs =  "new." ++ (tail . dropWhile (/= ' ') . takeWhile (/= '}') . show $ hdl) in 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)
+        then let rs =  tail . dropWhile (/= ' ') . takeWhile (/= '}') . show $ hdl in do
+          hClose hdl
+          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)
+            else error "File is not closed!"
         else error "Data sound file is not read!") xs
     hClose hdl
                        | otherwise = return ()
diff --git a/mmsyn6ukr.cabal b/mmsyn6ukr.cabal
--- a/mmsyn6ukr.cabal
+++ b/mmsyn6ukr.cabal
@@ -2,10 +2,9 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn6ukr
-version:             0.2.0.1
+version:             0.3.0.0
 synopsis:            Can be used as a musical instrument synthesizer or for Ukrainian language listening
 description:         A program that 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
 license:             MIT
 license-file:        LICENSE
@@ -16,13 +15,20 @@
 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
-
 cabal-version:       >=1.10
 
+library
+  exposed-modules:     Paths_mmsyn6ukr, Main, Melodics.Ukrainian
+  -- other-modules:       Melodics.Ukrainian
+  -- other-extensions:
+  build-depends:       base >=4.11 && <4.12, process >=1.6 && <1.7, mmsyn3 >=0.1 && <0.2, vector >=0.12 && <0.13, bytestring >=0.10 && <0.11, mmsyn2 >=0.1 && <0.2, mmsyn5 >=0.4 && <0.5
+  -- hs-source-dirs:
+  default-language:    Haskell2010
+
 executable mmsyn6ukr
   main-is:             Main.hs
-  other-modules:       Paths_mmsyn6ukr, Melodics.Ukrainian
+  -- other-modules:
   -- other-extensions:
-  build-depends:       base >=4.7 && <4.13, vector >=0.11 && <0.13, bytestring >=0.10 && <0.11, process >=1.4 && <1.7, mmsyn2 >=0.1.6.1 && <0.2, mmsyn3 >=0.1.3.0 && <0.2, mmsyn5 >= 0.4 && < 1
+  build-depends:       base >=4.7 && <4.13, process >=1.4 && <1.8, mmsyn3 >=0.1.3.0 && <1, vector >=0.11 && <0.14, bytestring >=0.10 && <0.12, mmsyn2 >=0.1.6.1 && <1, mmsyn5 >=0.4 && <1
   -- hs-source-dirs:
   default-language:    Haskell2010
