diff --git a/api-monobank.cabal b/api-monobank.cabal
--- a/api-monobank.cabal
+++ b/api-monobank.cabal
@@ -1,5 +1,5 @@
 name:                api-monobank
-version:             0.1.0.0
+version:             0.1.0.1
 -- synopsis:
 description:         Api client for popular Ukrainian bank - Monobank
 homepage:            https://github.com/sigrlami/api-monobank#readme
@@ -15,9 +15,9 @@
 
 library
   hs-source-dirs:      src
-  exposed-modules:     Api
-                     , Types
-                     , Utils
+  exposed-modules:     Monobank.Api
+                     , Monobank.Types
+                     , Monobank.Utils
   build-depends:       base >= 4.7 && < 5
                      , aeson
                      , text
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -9,8 +9,8 @@
 import           Data.Time.Clock
 import           System.Environment
 
-import qualified Api                         as MBApi
-import qualified Types                       as MBApi
+import qualified Monobank.Api                as MBApi
+import qualified Monobank.Types              as MBApi
 
 --------------------------------------------------------------------------------
 
diff --git a/src/Api.hs b/src/Api.hs
deleted file mode 100644
--- a/src/Api.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-module Api
-    ( getCurrencies
-    , getPersonalInfo
-    , getPersonalStatement
-    , getPersonalStatementFull
-    ) where
-
-import           Data.Aeson
-import qualified Data.ByteString.Char8      as B
-import qualified Data.ByteString.Lazy.Char8 as BL
-import qualified Data.Text                  as T
-import           Network.HTTP.Conduit       (simpleHttp)
-
-import           Types
-import           Utils
-
-
---------------------------------------------------------------------------------
-
-endpoint :: T.Text
-endpoint = "https://api.monobank.ua"
-
--- Get a basic list of monobank currency rates.
--- Information is cached and updated no more than once every 5 minutes.
---
--- GET /bank/currency
-getCurrencies :: IO [CurrencyPair]
-getCurrencies = do
-  let path = T.concat [endpoint, "/bank/currency"]
-  -- results <- fmap decodeEither $ simpleHttp (T.unpack path)
-  resp <- simpleHttp (T.unpack path)
-  --putStrLn $ show $ resp
-  let res = eitherDecode resp
-  case res of
-    Left err  -> do
-      putStrLn err
-      return $ []
-    Right val -> do
-      return $ val
-
--- GET /personal/client-info
-getPersonalInfo = undefined
-
-
--- Receive an extract for the time from {to} to {to} time in seconds Unix time format.
--- The maximum time for which it is possible to extract an extract is 31 days
--- (2678400 seconds) Limit on the use of the function no more than 1 time in 60 seconds.
---
--- GET /personal/statement/{account}/{from}/{to}
-getPersonalStatement = undefined
-
-
--- Get Personal Statement from beginning
--- 12 months will take 12 minutes
-getPersonalStatementFull = undefined
diff --git a/src/Monobank/Api.hs b/src/Monobank/Api.hs
new file mode 100644
--- /dev/null
+++ b/src/Monobank/Api.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Monobank.Api
+    ( getCurrencies
+    , getPersonalInfo
+    , getPersonalStatement
+    , getPersonalStatementFull
+    ) where
+
+import           Data.Aeson
+import qualified Data.ByteString.Char8      as B
+import qualified Data.ByteString.Lazy.Char8 as BL
+import qualified Data.Text                  as T
+import           Network.HTTP.Conduit       (simpleHttp)
+
+import           Monobank.Types
+import           Monobank.Utils
+
+--------------------------------------------------------------------------------
+
+endpoint :: T.Text
+endpoint = "https://api.monobank.ua"
+
+-- Get a basic list of monobank currency rates.
+-- Information is cached and updated no more than once every 5 minutes.
+--
+-- GET /bank/currency
+getCurrencies :: IO [CurrencyPair]
+getCurrencies = do
+  let path = T.concat [endpoint, "/bank/currency"]
+  -- results <- fmap decodeEither $ simpleHttp (T.unpack path)
+  resp <- simpleHttp (T.unpack path)
+  --putStrLn $ show $ resp
+  let res = eitherDecode resp
+  case res of
+    Left err  -> do
+      putStrLn err
+      return $ []
+    Right val -> do
+      return $ val
+
+-- GET /personal/client-info
+getPersonalInfo = undefined
+
+
+-- Receive an extract for the time from {to} to {to} time in seconds Unix time format.
+-- The maximum time for which it is possible to extract an extract is 31 days
+-- (2678400 seconds) Limit on the use of the function no more than 1 time in 60 seconds.
+--
+-- GET /personal/statement/{account}/{from}/{to}
+getPersonalStatement = undefined
+
+
+-- Get Personal Statement from beginning
+-- 12 months will take 12 minutes
+getPersonalStatementFull = undefined
diff --git a/src/Monobank/Types.hs b/src/Monobank/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Monobank/Types.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveAnyClass        #-}
+{-# LANGUAGE DeriveGeneric         #-}
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE GADTs                 #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings     #-}
+{-# LANGUAGE TemplateHaskell       #-}
+{-# LANGUAGE TypeSynonymInstances  #-}
+
+module Monobank.Types where
+
+import           Data.Aeson
+import           Data.Aeson.TH
+import           Data.Maybe
+import qualified Data.Text      as T
+import           Data.Time
+import           GHC.Generics
+
+import           Monobank.Utils
+
+-----------------------------------------------------------------
+
+-- | Wrapper for user token from Developer's Dashboard, https://api.monobank.ua/
+type Token = T.Text
+
+-----------------------------------------------------------------
+
+data Currency =
+  Currency
+    { isoCode        :: String
+    , isoNumericCode :: Int
+    , decimalDigits  :: Int
+    , symbol         :: String
+    , name           :: String
+    } deriving (Eq, Show)
+
+convertCurrencyFromCode :: Int -> Currency
+convertCurrencyFromCode val =
+  case val of
+    840       ->  Currency { isoCode = "USD", isoNumericCode=  840, decimalDigits= 2, symbol= "$", name="Dollar"}
+    978       ->  Currency { isoCode = "EUR", isoNumericCode=  978, decimalDigits= 2, symbol= "€", name="Euro"}
+    980       ->  Currency { isoCode = "UAH", isoNumericCode=  980, decimalDigits= 2, symbol= "₴", name="Hrivnya"}
+    643       ->  Currency { isoCode = "RUB", isoNumericCode=  643, decimalDigits= 2, symbol= "", name="Ruble"}
+    826       ->  Currency { isoCode = "GBP", isoNumericCode=  826, decimalDigits= 2, symbol= "", name="Pound Sterling"}
+    949       ->  Currency { isoCode = "TRY", isoNumericCode=  949, decimalDigits= 2, symbol= "", name="Lira"}
+    985       ->  Currency { isoCode = "PLN", isoNumericCode=  985, decimalDigits= 2, symbol= "", name="Zloty"}
+    348       ->  Currency { isoCode = "HUF", isoNumericCode=  348, decimalDigits= 2, symbol= "", name="Forint"}
+    208       ->  Currency { isoCode = "DKK", isoNumericCode=  208, decimalDigits= 2, symbol= "", name="Danish Krone"}
+    203       ->  Currency { isoCode = "CZK", isoNumericCode=  203, decimalDigits= 2, symbol= "", name="Czech Koruna"}
+    124       ->  Currency { isoCode = "CAD", isoNumericCode=  124, decimalDigits= 2, symbol= "", name="Canadian Dollar"}
+    933       ->  Currency { isoCode = "BYN", isoNumericCode=  933, decimalDigits= 2, symbol= "", name="Belarussian Ruble"}
+    756       ->  Currency { isoCode = "CHF", isoNumericCode=  756, decimalDigits= 2, symbol= "", name="Swiss Franc"}
+    otherwise ->  Currency { isoCode = "NA" , isoNumericCode=  0  , decimalDigits= 2, symbol= "", name="Uknown"}
+
+-------------------------------------------------------------------------------------------
+
+-- | Data type that represents currency pair from Monobank
+--   at spicific time
+data CurrencyPair =
+  CurrencyPair
+    { cpCurrencyCodeA :: Currency      -- ^ Currency derived from international identificator
+    , cpCurrencyCodeB :: Currency      -- ^ Currency derived from international identificator
+    , cpDate          :: Int           -- ^ Timestamp for the currency pair information
+    , cpRateSell      :: Maybe Float   -- ^ Rate to sell currency
+    , cpRateBuy       :: Maybe Float   -- ^ Rate to buy currency
+    , cpRateCross     :: Maybe Float   -- ^ Rate
+    } deriving (Show)
+
+instance FromJSON CurrencyPair where
+  parseJSON =
+    withObject "object" $ \o -> do
+      currA'     <- o .:  "currencyCodeA"
+      currB'     <- o .:  "currencyCodeB"
+      date'      <- o .:  "date"         -- TODO: convert to UTCTime
+      rateSell'  <- o .:? "rateSell"
+      rateBuy'   <- o .:? "rateBuy"
+      rateCross' <- o .:? "rateCross"
+
+      let currA = convertCurrencyFromCode currA'
+          currB = convertCurrencyFromCode currB'
+          --date  =
+
+      return $
+        CurrencyPair currA currB date' rateSell' rateBuy' rateCross'
+
+showCurrencyPair :: CurrencyPair -> IO ()
+showCurrencyPair cp = do
+  putStrLn $ (isoCode $ cpCurrencyCodeA cp) ++ "/" ++ (isoCode $ cpCurrencyCodeB cp)
+  case (cpRateBuy cp) of
+    Nothing  -> do
+      putStrLn $ " - Cross: " ++ (show $ fromMaybe 0 $ cpRateCross cp) ++ (symbol $ cpCurrencyCodeB cp)
+      putStrLn $ ""
+    Just buy -> do
+      putStrLn $ " - Buy:  " ++ (show $ buy) ++ " " ++ (symbol $ cpCurrencyCodeB cp)
+      putStrLn $ " - Sell: " ++ (show $ fromMaybe 0 $ cpRateSell cp) ++ (symbol $ cpCurrencyCodeB cp)
+      putStrLn $ ""
+
+-- Simplified version for one-to-one conversion
+--
+-- instance FromJSON CurrencyPair where
+--   parseJSON = genericParseJSON opts
+--     where
+--       opts = defaultOptions { fieldLabelModifier = uncapFst . drop 2}
+
+--------------------------------------------------------------------------------
+
+data Account =
+  Account
+    { acId           :: T.Text    -- ^
+    , acBalance      :: Int       -- ^ Current balance
+    , acCreditLimit  :: Int       -- ^ Current credit limit available to user
+    , acCurrency     :: Currency  -- ^ Currency of the account
+    , acCashbackType :: T.Text    -- ^
+    } deriving (Eq, Show)
+
+data User =
+  User
+    { uName     :: String    -- ^ User's full name
+    , uAccounts :: [Account] -- ^ List of user accounts, by currency type
+    } deriving (Eq, Show)
+
+data Statement =
+  Statement
+    { stId              :: String   -- ^
+    , stTime            :: String   -- ^
+    , stDescription     :: String   -- ^
+    , stMCC             :: String   -- ^
+    , stHold            :: Bool     -- ^
+    , stAmount          :: Int      -- ^
+    , stOperationAmount :: Int      -- ^
+    , stCurrency        :: Currency -- ^
+    , stComissionRate   :: Int      -- ^
+    , stCashbackAmount  :: Int      -- ^
+    , balance           :: Int      -- ^
+    } deriving (Eq, Show)
diff --git a/src/Monobank/Utils.hs b/src/Monobank/Utils.hs
new file mode 100644
--- /dev/null
+++ b/src/Monobank/Utils.hs
@@ -0,0 +1,11 @@
+module Monobank.Utils where
+
+
+import qualified Data.Char as Char
+import           Data.Text as T
+
+-------------------------------------------------------------------
+
+uncapFst :: String -> String
+uncapFst (head:tail) = Char.toLower head : tail
+uncapFst []          = []
diff --git a/src/Types.hs b/src/Types.hs
deleted file mode 100644
--- a/src/Types.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-{-# LANGUAGE DeriveAnyClass        #-}
-{-# LANGUAGE DeriveGeneric         #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE GADTs                 #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE OverloadedStrings     #-}
-{-# LANGUAGE TemplateHaskell       #-}
-{-# LANGUAGE TypeSynonymInstances  #-}
-
-module Types where
-
-import           Data.Aeson
-import           Data.Aeson.TH
-import           Data.Maybe
-import qualified Data.Text     as T
-import           Data.Time
-import           GHC.Generics
-
-import           Utils
-
------------------------------------------------------------------
-
--- | Wrapper for user token from Developer's Dashboard, https://api.monobank.ua/
-type Token = T.Text
-
------------------------------------------------------------------
-
-data Currency =
-  Currency
-    { isoCode        :: String
-    , isoNumericCode :: Int
-    , decimalDigits  :: Int
-    , symbol         :: String
-    , name           :: String
-    } deriving (Eq, Show)
-
-convertCurrencyFromCode :: Int -> Currency
-convertCurrencyFromCode val =
-  case val of
-    840       ->  Currency { isoCode = "USD", isoNumericCode=  840, decimalDigits= 2, symbol= "$", name="Dollar"}
-    978       ->  Currency { isoCode = "EUR", isoNumericCode=  978, decimalDigits= 2, symbol= "€", name="Euro"}
-    980       ->  Currency { isoCode = "UAH", isoNumericCode=  980, decimalDigits= 2, symbol= "₴", name="Hrivnya"}
-    643       ->  Currency { isoCode = "RUB", isoNumericCode=  643, decimalDigits= 2, symbol= "", name="Ruble"}
-    826       ->  Currency { isoCode = "GBP", isoNumericCode=  826, decimalDigits= 2, symbol= "", name="Pound Sterling"}
-    949       ->  Currency { isoCode = "TRY", isoNumericCode=  949, decimalDigits= 2, symbol= "", name="Lira"}
-    985       ->  Currency { isoCode = "PLN", isoNumericCode=  985, decimalDigits= 2, symbol= "", name="Zloty"}
-    348       ->  Currency { isoCode = "HUF", isoNumericCode=  348, decimalDigits= 2, symbol= "", name="Forint"}
-    208       ->  Currency { isoCode = "DKK", isoNumericCode=  208, decimalDigits= 2, symbol= "", name="Danish Krone"}
-    203       ->  Currency { isoCode = "CZK", isoNumericCode=  203, decimalDigits= 2, symbol= "", name="Czech Koruna"}
-    124       ->  Currency { isoCode = "CAD", isoNumericCode=  124, decimalDigits= 2, symbol= "", name="Canadian Dollar"}
-    933       ->  Currency { isoCode = "BYN", isoNumericCode=  933, decimalDigits= 2, symbol= "", name="Belarussian Ruble"}
-    756       ->  Currency { isoCode = "CHF", isoNumericCode=  756, decimalDigits= 2, symbol= "", name="Swiss Franc"}
-    otherwise ->  Currency { isoCode = "NA" , isoNumericCode=  0  , decimalDigits= 2, symbol= "", name="Uknown"}
-
--------------------------------------------------------------------------------------------
-
--- | Data type that represents currency pair from Monobank
---   at spicific time
-data CurrencyPair =
-  CurrencyPair
-    { cpCurrencyCodeA :: Currency      -- ^ Currency derived from international identificator
-    , cpCurrencyCodeB :: Currency      -- ^ Currency derived from international identificator
-    , cpDate          :: Int           -- ^ Timestamp for the currency pair information
-    , cpRateSell      :: Maybe Float   -- ^ Rate to sell currency
-    , cpRateBuy       :: Maybe Float   -- ^ Rate to buy currency
-    , cpRateCross     :: Maybe Float   -- ^ Rate
-    } deriving (Show)
-
-instance FromJSON CurrencyPair where
-  parseJSON =
-    withObject "object" $ \o -> do
-      currA'     <- o .:  "currencyCodeA"
-      currB'     <- o .:  "currencyCodeB"
-      date'      <- o .:  "date"         -- TODO: convert to UTCTime
-      rateSell'  <- o .:? "rateSell"
-      rateBuy'   <- o .:? "rateBuy"
-      rateCross' <- o .:? "rateCross"
-
-      let currA = convertCurrencyFromCode currA'
-          currB = convertCurrencyFromCode currB'
-          --date  =
-
-      return $
-        CurrencyPair currA currB date' rateSell' rateBuy' rateCross'
-
-showCurrencyPair :: CurrencyPair -> IO ()
-showCurrencyPair cp = do
-  putStrLn $ (isoCode $ cpCurrencyCodeA cp) ++ "/" ++ (isoCode $ cpCurrencyCodeB cp)
-  case (cpRateBuy cp) of
-    Nothing  -> do
-      putStrLn $ " - Cross: " ++ (show $ fromMaybe 0 $ cpRateCross cp) ++ (symbol $ cpCurrencyCodeB cp)
-      putStrLn $ ""
-    Just buy -> do
-      putStrLn $ " - Buy:  " ++ (show $ buy) ++ " " ++ (symbol $ cpCurrencyCodeB cp)
-      putStrLn $ " - Sell: " ++ (show $ fromMaybe 0 $ cpRateSell cp) ++ (symbol $ cpCurrencyCodeB cp)
-      putStrLn $ ""
-
--- Simplified version for one-to-one conversion
---
--- instance FromJSON CurrencyPair where
---   parseJSON = genericParseJSON opts
---     where
---       opts = defaultOptions { fieldLabelModifier = uncapFst . drop 2}
-
---------------------------------------------------------------------------------
-
-data Account =
-  Account
-    { acId           :: T.Text    -- ^
-    , acBalance      :: Int       -- ^ Current balance
-    , acCreditLimit  :: Int       -- ^ Current credit limit available to user
-    , acCurrency     :: Currency  -- ^ Currency of the account
-    , acCashbackType :: T.Text    -- ^
-    } deriving (Eq, Show)
-
-data User =
-  User
-    { uName     :: String    -- ^ User's full name
-    , uAccounts :: [Account] -- ^ List of user accounts, by currency type
-    } deriving (Eq, Show)
-
-data Statement =
-  Statement
-    { stId              :: String   -- ^
-    , stTime            :: String   -- ^
-    , stDescription     :: String   -- ^
-    , stMCC             :: String   -- ^
-    , stHold            :: Bool     -- ^
-    , stAmount          :: Int      -- ^
-    , stOperationAmount :: Int      -- ^
-    , stCurrency        :: Currency -- ^
-    , stComissionRate   :: Int      -- ^
-    , stCashbackAmount  :: Int      -- ^
-    , balance           :: Int      -- ^
-    } deriving (Eq, Show)
diff --git a/src/Utils.hs b/src/Utils.hs
deleted file mode 100644
--- a/src/Utils.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module Utils where
-
-
-import qualified Data.Char as Char
-import           Data.Text as T
-
--------------------------------------------------------------------
-
-
-uncapFst :: String -> String
-uncapFst (head:tail) = Char.toLower head : tail
-uncapFst []          = []
