diff --git a/haskmon.cabal b/haskmon.cabal
--- a/haskmon.cabal
+++ b/haskmon.cabal
@@ -1,46 +1,49 @@
-name:                haskmon
-version:             0.2.1.0
-synopsis:            A haskell wrapper for PokeAPI.co (www.pokeapi.co)
-description:         This is a haskell wrapper for the RESTful api www.pokeapi.co.
-                     It defines most of the types and functions in the API.
-license:             MIT
-license-file:        LICENSE
-author:              Pedro Rodriguez
-maintainer:          P.J.Rodriguez.T@gmail.com
-category:            Web, Game
+name: haskmon
+version: 0.2.2.0
+cabal-version: >=1.10
+build-type: Simple
+license: MIT
+license-file: LICENSE
+maintainer: P.J.Rodriguez.T@gmail.com
+synopsis: A haskell wrapper for PokeAPI.co (www.pokeapi.co)
+description:
+    This is a haskell wrapper for the RESTful api www.pokeapi.co.
+    It defines most of the types and functions in the API.
+category: Web, Game
+author: Pedro Rodriguez
 
-build-type:          Simple
-cabal-version:       >=1.10
+source-repository head
+    type: git
+    location: https://github.com/pjrt/Haskmon.git
 
 library
-  hs-source-dirs:      src
-  exposed-modules:     Haskmon,
-                       Haskmon.Client,
-                       Haskmon.Resource,
-                       Haskmon.Types,
-                       Haskmon.Types.Internals
-  other-modules:
-                       Haskmon.Types.Game
-                       Haskmon.Types.Move
-                       Haskmon.Types.Type
-                       Haskmon.Types.Sprite
-                       Haskmon.Types.Ability
-                       Haskmon.Types.Pokemon
-                       Haskmon.Types.MetaData
-                       Haskmon.Types.EggGroup
-                       Haskmon.Types.Description
-                       Haskmon.Types.Evolutions
-  build-depends:       base >=4.8 && <4.9,
-                       http-streams >=0.8 && < 0.9,
-                       bytestring >=0.10.0.2 && < 0.11,
-                       io-streams >=1.3 && < 1.4,
-                       aeson >=0.8 && < 0.9,
-                       time >= 1.5 && < 1.6,
-                       vector >=0.10 && < 0.11,
-                       containers >=0.5.5.1 && < 0.6
-  default-language:    Haskell2010
-
-source-repository head
-   type: git
-   location: https://github.com/pjrt/Haskmon.git
+    exposed-modules:
+        Haskmon
+        Haskmon.Client
+        Haskmon.Resource
+        Haskmon.Types
+        Haskmon.Types.Internals
+    build-depends:
+        base >=4.8 && <4.9,
+        http-streams ==0.8.*,
+        bytestring >=0.10.0.2 && <0.11,
+        io-streams ==1.3.*,
+        aeson >=0.8 && <0.10,
+        time ==1.5.*,
+        vector >=0.10 && <0.12,
+        containers >=0.5.5.1 && <0.6
+    default-language: Haskell2010
+    hs-source-dirs: src
+    other-modules:
+        Haskmon.Types.Game
+        Haskmon.Types.Move
+        Haskmon.Types.Type
+        Haskmon.Types.Sprite
+        Haskmon.Types.Ability
+        Haskmon.Types.Pokemon
+        Haskmon.Types.MetaData
+        Haskmon.Types.EggGroup
+        Haskmon.Types.Description
+        Haskmon.Types.Evolutions
+    ghc-options: -Wall
 
diff --git a/src/Haskmon/Client.hs b/src/Haskmon/Client.hs
--- a/src/Haskmon/Client.hs
+++ b/src/Haskmon/Client.hs
@@ -14,12 +14,7 @@
 
 import Haskmon.Types
 import Haskmon.Resource(getResource)
-import Data.Word
 import Data.Aeson(FromJSON)
-import Data.List(find)
-import Data.Char(toLower)
-import Control.Applicative((<$>))
-import qualified Data.Traversable as T
 
 type ID = Word
 
diff --git a/src/Haskmon/Resource.hs b/src/Haskmon/Resource.hs
--- a/src/Haskmon/Resource.hs
+++ b/src/Haskmon/Resource.hs
@@ -1,15 +1,13 @@
 -- Resource getter. Used by everything else
 module Haskmon.Resource(getResource) where
 
-import Data.Word
 import Data.Aeson
-import Data.Either
 import Network.Http.Client
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Char8 as B8
-import Control.Applicative((<$>))
 
 -- | Host of the API
+host :: String
 host = "http://pokeapi.co/"
 
 -- | Uri of the resource
diff --git a/src/Haskmon/Types/Ability.hs b/src/Haskmon/Types/Ability.hs
--- a/src/Haskmon/Types/Ability.hs
+++ b/src/Haskmon/Types/Ability.hs
@@ -3,7 +3,6 @@
     I.Ability, I.MetaAbility
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaAbility, Ability)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/Description.hs b/src/Haskmon/Types/Description.hs
--- a/src/Haskmon/Types/Description.hs
+++ b/src/Haskmon/Types/Description.hs
@@ -3,7 +3,6 @@
     I.Description, I.MetaDescription
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaPokemon, MetaGame, MetaDescription, Description)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/EggGroup.hs b/src/Haskmon/Types/EggGroup.hs
--- a/src/Haskmon/Types/EggGroup.hs
+++ b/src/Haskmon/Types/EggGroup.hs
@@ -3,7 +3,6 @@
     I.EggGroup, I.MetaEggGroup
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaEggGroup, EggGroup, MetaPokemon)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/Game.hs b/src/Haskmon/Types/Game.hs
--- a/src/Haskmon/Types/Game.hs
+++ b/src/Haskmon/Types/Game.hs
@@ -1,6 +1,5 @@
 module Haskmon.Types.Game where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaGame, Game)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/Internals.hs b/src/Haskmon/Types/Internals.hs
--- a/src/Haskmon/Types/Internals.hs
+++ b/src/Haskmon/Types/Internals.hs
@@ -1,17 +1,11 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Haskmon.Types.Internals where
 
-import Data.Word
-import Data.Vector(toList)
 import Data.Aeson
 import Data.Aeson.Types
 import Data.Time.Format
 import Data.Time.Clock
-import Data.List(find)
 
-import Data.Time.Format (parseTimeOrError)
-
-import Control.Applicative
 import Control.Monad(mzero)
 
 import Haskmon.Resource(getResource)
@@ -30,11 +24,12 @@
                     convert (v .: "created") <*>
                     convert (v .: "modified")
               where convert :: Parser String -> Parser UTCTime
-                    convert ps = readTime defaultTimeLocale formatStr <$> ps
-                    readTime = parseTimeOrError True
+                    convert ps = readTime' defaultTimeLocale formatStr <$> ps
+                    readTime' = parseTimeOrError True
                     formatStr = "%FT%R:%S%Q"
 
 -- Alias for withObject
+withO :: Value -> (Object -> Parser a) -> Parser a
 withO o f = withObject "object" f o
 
 -- }}}
@@ -48,7 +43,8 @@
   show p = "<Pokedex - " ++ pokedexName p ++ ">"
 
 instance FromJSON MetaPokemon where
-  parseJSON (Object o) = MetaPokemon <$> o .: "name" <*> (getResource <$> o .: "resource_uri")
+  parseJSON v = withO v $
+                \o -> MetaPokemon <$> o .: "name" <*> (getResource <$> o .: "resource_uri")
 
 instance FromJSON Pokedex where
   parseJSON (Object o) = Pokedex <$> o .: "name" <*> o .: "pokemon"
@@ -119,6 +115,7 @@
                      | EvolutionFriendship
                      | EvolutionStone
                      | EvolutionHappiness
+                     | EvolutionMega -- ^ @since 0.2.2.0
                      | EvolutionTrade
                      | EvolutionOther -- Plain other...no info whatsoever
                    deriving Show
@@ -135,11 +132,13 @@
                       "stone" -> return EvolutionStone
                       "level_up" -> EvolutionLevelUp <$> maybe LevelSpecial Level <$> v .:? "level"
                       "other" -> go $ v .:? "detail"
+                      els -> fail $ "Expected an Evolution type. Got " ++ els
                   where go pt = do str <- pt
                                    case str of
                                     Nothing -> return EvolutionOther
-                                    Just "happiness" -> return EvolutionHappiness
+                                    Just "happiness"  -> return EvolutionHappiness
                                     Just "friendship" -> return EvolutionFriendship
+                                    Just "mega"       -> return EvolutionMega
                                     Just l -> fail $ "Expected happiness or friendship, got " ++ l
 
 instance FromJSON Evolution where
diff --git a/src/Haskmon/Types/MetaData.hs b/src/Haskmon/Types/MetaData.hs
--- a/src/Haskmon/Types/MetaData.hs
+++ b/src/Haskmon/Types/MetaData.hs
@@ -3,7 +3,6 @@
    I.MetaData
 ) where
 
-import Data.Word
 import Data.Time.Clock
 import Haskmon.Types.Internals(MetaData)
 import qualified Haskmon.Types.Internals as I
diff --git a/src/Haskmon/Types/Move.hs b/src/Haskmon/Types/Move.hs
--- a/src/Haskmon/Types/Move.hs
+++ b/src/Haskmon/Types/Move.hs
@@ -3,7 +3,6 @@
     I.Move, I.MetaMove
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaMove, Move, MetaMoveLearnType)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/Pokemon.hs b/src/Haskmon/Types/Pokemon.hs
--- a/src/Haskmon/Types/Pokemon.hs
+++ b/src/Haskmon/Types/Pokemon.hs
@@ -3,7 +3,6 @@
       I.Pokemon, I.Pokedex, I.MetaPokemon
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData,
                                MetaPokemon,
                                MetaAbility,
diff --git a/src/Haskmon/Types/Sprite.hs b/src/Haskmon/Types/Sprite.hs
--- a/src/Haskmon/Types/Sprite.hs
+++ b/src/Haskmon/Types/Sprite.hs
@@ -3,7 +3,6 @@
     I.Sprite, I.MetaSprite
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaPokemon, MetaSprite, Sprite)
 import qualified Haskmon.Types.Internals as I
 
diff --git a/src/Haskmon/Types/Type.hs b/src/Haskmon/Types/Type.hs
--- a/src/Haskmon/Types/Type.hs
+++ b/src/Haskmon/Types/Type.hs
@@ -3,7 +3,6 @@
     I.Type, I.MetaType
 ) where
 
-import Data.Word
 import Haskmon.Types.Internals(MetaData, MetaType, Type)
 import qualified Haskmon.Types.Internals as I
 
