diff --git a/GoogleTranslate.cabal b/GoogleTranslate.cabal
--- a/GoogleTranslate.cabal
+++ b/GoogleTranslate.cabal
@@ -1,5 +1,5 @@
 name:			GoogleTranslate
-version:		0.0.4
+version:		0.0.5
 Cabal-Version:	>= 1.6
 license:		GPL-3
 license-file:	LICENSE
@@ -18,4 +18,5 @@
   Exposed-Modules:
      Language.Translate.Google
   Build-depends: base >= 4 && < 5, AttoJson >= 0.5.3, download-curl >= 0.1.2, 
-                 containers >= 0.3.0.0, bytestring, dataenc
+                 bytestring, dataenc
+  ghc-options: -Wall                                                
diff --git a/Language/Translate/Google.hs b/Language/Translate/Google.hs
--- a/Language/Translate/Google.hs
+++ b/Language/Translate/Google.hs
@@ -19,17 +19,14 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Language.Translate.Google (
     Language (..),
-    translate,
-    languageMap
+    translate
 ) where
 
-import Data.Map (Map)
 import Network.Curl.Download
 import Text.JSON.AttoJSON
 
 import qualified Codec.Binary.Url as C
 import qualified Data.ByteString as B
-import qualified Data.Map as M
 
 data Language = 
     Afrikaans
@@ -123,132 +120,126 @@
   | Unknown
     deriving (Show, Eq, Ord, Read)
 
-languageMap :: Map Language String
-languageMap = 
-    M.fromList
-    [(Afrikaans,          "af")
-    ,(Albanian,           "sq")
-    ,(Amharic,            "am")
-    ,(Arabic,             "ar")
-    ,(Armenian,           "hy")
-    ,(Azerbaijani,        "az")
-    ,(Basque,             "eu")
-    ,(Belarusian,         "be")
-    ,(Bengali,            "bn")
-    ,(Bihari,             "bh")
-    ,(Bulgarian,          "bg")
-    ,(Burmese,            "my")
-    ,(Catalan,            "ca")
-    ,(Cherokee,           "chr")
-    ,(Chinese,            "zh")
-    ,(ChineseSimplified,  "zh-CN")
-    ,(ChineseTraditional, "zh-TW")
-    ,(Croatian,           "hr")
-    ,(Czech,              "cs")
-    ,(Danish,             "da")
-    ,(Dhivehi,            "dv")
-    ,(Dutch,              "nl")
-    ,(English,            "en")
-    ,(Esperanto,          "eo")
-    ,(Estonian,           "et")
-    ,(Filipino,           "tl")
-    ,(Finnish,            "fi")
-    ,(French,             "fr")
-    ,(Galician,           "gl")
-    ,(Georgian,           "ka")
-    ,(German,             "de")
-    ,(Greek,              "el")
-    ,(Guarani,            "gn")
-    ,(Gujarati,           "gu")
-    ,(Hebrew,             "iw")
-    ,(Hindi,              "hi")
-    ,(Hungarian,          "hu")
-    ,(Icelandic,          "is")
-    ,(Indonesian,         "id")
-    ,(Inuktitut,          "iu")
-    ,(Italian,            "it")
-    ,(Japanese,           "ja")
-    ,(Kannada,            "kn")
-    ,(Kazakh,             "kk")
-    ,(Khmer,              "km")
-    ,(Korean,             "ko")
-    ,(Kurdish,            "ku")
-    ,(Kyrgyz,             "ky")
-    ,(Laothian,           "lo")
-    ,(Latvian,            "lv")
-    ,(Lithuanian,         "lt")
-    ,(Macedonian,         "mk")
-    ,(Malay,              "ms")
-    ,(Malayalam,          "ml")
-    ,(Maltese,            "mt")
-    ,(Marathi,            "mr")
-    ,(Mongolian,          "mn")
-    ,(Nepali,             "ne")
-    ,(Norwegian,          "no")
-    ,(Oriya,              "or")
-    ,(Pashto,             "ps")
-    ,(Persian,            "fa")
-    ,(Polish,             "pl")
-    ,(Portuguese,         "pt-PT")
-    ,(Punjabi,            "pa")
-    ,(Romanian,           "ro")
-    ,(Russian,            "ru")
-    ,(Sanskrit,           "sa")
-    ,(Serbian,            "sr")
-    ,(Sindhi,             "sd")
-    ,(Sinhalese,          "si")
-    ,(Slovak,             "sk")
-    ,(Slovenian,          "sl")
-    ,(Spanish,            "es")
-    ,(Swahili,            "sw")
-    ,(Swedish,            "sv")
-    ,(Tajik,              "tg")
-    ,(Tamil,              "ta")
-    ,(Tagalog,            "tl")
-    ,(Telugu,             "te")
-    ,(Thai,               "th")
-    ,(Tibetan,            "bo")
-    ,(Turkish,            "tr")
-    ,(Ukrainian,          "uk")
-    ,(Urdu,               "ur")
-    ,(Uzbek,              "uz")
-    ,(Uighur,             "ug")
-    ,(Vietnamese,         "vi")
-    ,(Unknown,            "")]
-
 -- | Get translation from Google Translate.
 translate :: B.ByteString        -- ^ the byte string need to translate
           -> Maybe Language      -- ^ source language, or 'Nothing' use automatic language detect
           -> Language            -- ^ destination language
           -> IO (Either String B.ByteString) 
 translate text srcLang destLang = do
-  let getLangStr :: Language -> String
-      getLangStr lang 
-          | M.null newMap
-              = error $ "Miss match language : " ++ show lang
-          | otherwise 
-              = snd $ M.findMin newMap
-                where newMap = M.filterWithKey (\ l _ -> l == lang) languageMap
   -- Build url.
   let url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0" 
             -- Request text. 
             ++ ("&q=" ++ C.encode (B.unpack text)) 
             -- Source language and destination language.
             ++ ("&langpair=" 
-                ++ (maybe "" getLangStr srcLang
+                ++ (maybe "" getLanguageCode srcLang
                     ++ "|" 
-                    ++ getLangStr destLang))
+                    ++ getLanguageCode destLang))
 
   -- Request JSON data.
   string <- openURI url
   
   return $ 
     case string of
-        Left error -> Left error
+        Left err -> Left err
         Right jsonString -> 
             case parseJSON jsonString of
-              Left error -> Left error
+              Left err -> Left err
               Right jsvalue -> 
-                  case getFields ["responseData", "translatedText"] jsvalue of
+                  case lookupDeep ["responseData", "translatedText"] jsvalue of
                     Just (JSString str) -> Right str
                     _ -> Left "translate : parse failed."
+
+-- | Get language code.
+getLanguageCode :: Language -> String
+getLanguageCode lang = 
+  case lang of
+    Afrikaans          -> "af"
+    Albanian           -> "sq"
+    Amharic            -> "am"
+    Arabic             -> "ar"
+    Armenian           -> "hy"
+    Azerbaijani        -> "az"
+    Basque             -> "eu"
+    Belarusian         -> "be"
+    Bengali            -> "bn"
+    Bihari             -> "bh"
+    Bulgarian          -> "bg"
+    Burmese            -> "my"
+    Catalan            -> "ca"
+    Cherokee           -> "chr"
+    Chinese            -> "zh"
+    ChineseSimplified  -> "zh-CN"
+    ChineseTraditional -> "zh-TW"
+    Croatian           -> "hr"
+    Czech              -> "cs"
+    Danish             -> "da"
+    Dhivehi            -> "dv"
+    Dutch              -> "nl"
+    English            -> "en"
+    Esperanto          -> "eo"
+    Estonian           -> "et"
+    Filipino           -> "tl"
+    Finnish            -> "fi"
+    French             -> "fr"
+    Galician           -> "gl"
+    Georgian           -> "ka"
+    German             -> "de"
+    Greek              -> "el"
+    Guarani            -> "gn"
+    Gujarati           -> "gu"
+    Hebrew             -> "iw"
+    Hindi              -> "hi"
+    Hungarian          -> "hu"
+    Icelandic          -> "is"
+    Indonesian         -> "id"
+    Inuktitut          -> "iu"
+    Italian            -> "it"
+    Japanese           -> "ja"
+    Kannada            -> "kn"
+    Kazakh             -> "kk"
+    Khmer              -> "km"
+    Korean             -> "ko"
+    Kurdish            -> "ku"
+    Kyrgyz             -> "ky"
+    Laothian           -> "lo"
+    Latvian            -> "lv"
+    Lithuanian         -> "lt"
+    Macedonian         -> "mk"
+    Malay              -> "ms"
+    Malayalam          -> "ml"
+    Maltese            -> "mt"
+    Marathi            -> "mr"
+    Mongolian          -> "mn"
+    Nepali             -> "ne"
+    Norwegian          -> "no"
+    Oriya              -> "or"
+    Pashto             -> "ps"
+    Persian            -> "fa"
+    Polish             -> "pl"
+    Portuguese         -> "pt-PT"
+    Punjabi            -> "pa"
+    Romanian           -> "ro"
+    Russian            -> "ru"
+    Sanskrit           -> "sa"
+    Serbian            -> "sr"
+    Sindhi             -> "sd"
+    Sinhalese          -> "si"
+    Slovak             -> "sk"
+    Slovenian          -> "sl"
+    Spanish            -> "es"
+    Swahili            -> "sw"
+    Swedish            -> "sv"
+    Tajik              -> "tg"
+    Tamil              -> "ta"
+    Tagalog            -> "tl"
+    Telugu             -> "te"
+    Thai               -> "th"
+    Tibetan            -> "bo"
+    Turkish            -> "tr"
+    Ukrainian          -> "uk"
+    Urdu               -> "ur"
+    Uzbek              -> "uz"
+    Uighur             -> "ug"
+    Vietnamese         -> "vi"
+    Unknown            -> ""
