diff --git a/reverse-geocoding.cabal b/reverse-geocoding.cabal
--- a/reverse-geocoding.cabal
+++ b/reverse-geocoding.cabal
@@ -1,5 +1,5 @@
 name:                reverse-geocoding
-version:             0.2
+version:             0.2.1
 synopsis:            Simple reverse geocoding using OpenStreeMap
 description:         Simple reverse geocoding using OpenStreeMap
 homepage:            https://github.com/jcristovao/reverse-geocoding
diff --git a/src/Data/Geolocation/Reverse.hs b/src/Data/Geolocation/Reverse.hs
--- a/src/Data/Geolocation/Reverse.hs
+++ b/src/Data/Geolocation/Reverse.hs
@@ -2,10 +2,19 @@
 -- | This very simple module returns a Maybe Location info for a set
 -- of coordinates.
 --
--- Right now only one provider is given (OpenStreeMap), and the Suburb/Street
--- parsing could be improved, but this is enough for our needs.
+-- Right now only one provider is given (OpenStreeMap), please feel
+-- free to add more.
 --
--- Feel free to contribute!
+-- We use this for a very coarse geographic categorization, so
+-- the following equivalences hold:
+--
+-- City  : city   \<|> village \<|> town     \<|> hamlet \<|> county
+--
+-- Suburb: suburb \<|> hamlet  \<|> postcode \<|> town
+--
+-- Street: road   \<|> street
+--
+-- All contribuitions are welcomed!
 module Data.Geolocation.Reverse where
 
 import Control.Lens
diff --git a/src/Data/Geolocation/Reverse/Providers.hs b/src/Data/Geolocation/Reverse/Providers.hs
--- a/src/Data/Geolocation/Reverse/Providers.hs
+++ b/src/Data/Geolocation/Reverse/Providers.hs
@@ -50,17 +50,30 @@
   rest = T.dropWhile (\c -> isDigit c || isSpace c || (c == '-')) txt
   in if T.null rest then Nothing else Just (Suburb rest)
 
-(<||>) :: Parser (Maybe a) -> Parser (Maybe a) -> Parser (Maybe a)
-pa <||> pb = do
+(<|?>) :: Parser (Maybe a) -> Parser (Maybe a) -> Parser (Maybe a)
+pa <|?> pb = do
   a <- pa
   if isJust a then pa else pb
+infixl 3 <|?>
 
+
 -- Not all records have suburb defined, but some have it written in the post code
 -- This function tries to extract if from the post code if available.
 openStreetMapParser :: Object -> Parser ParsedLocationInfo
 openStreetMapParser o =
   ParsedLocationInfo <$> o .:  "country_code"
-                     <*> (o .:  "city" <|> o .: "village")
-                     <*> ((o .:? "suburb") <||> fmap (join . fmap getPostCodeText) ( o .:? "postcode"))
-                     <*> ((o .:? "road") <||> (o .:? "street"))
+                     <*> (    o .: "city"
+                          <|> o .: "village"
+                          <|> o .: "town"
+                          <|> o .: "hamlet"
+                          <|> o .: "county"
+                          )
+                     <*> (     (o .:? "suburb")
+                          <|?> (o .:? "hamlet")
+                          <|?> (fmap (join . fmap getPostCodeText) ( o .:? "postcode"))
+                          <|?> (o .:? "town")
+                          )
+                     <*> (     (o .:? "road")
+                          <|?> (o .:? "street")
+                         )
                      <*> o .:? "postcode"
diff --git a/src/Data/Geolocation/Reverse/Types.hs b/src/Data/Geolocation/Reverse/Types.hs
--- a/src/Data/Geolocation/Reverse/Types.hs
+++ b/src/Data/Geolocation/Reverse/Types.hs
@@ -19,10 +19,10 @@
   deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
 
 -- | /Output types/
-newtype City    = City      T.Text deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
-newtype Suburb  = Suburb    T.Text deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
-newtype Street  = Street    T.Text deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
-newtype Postcode= Postcode  T.Text deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
+newtype City    = City     { getCity     :: T.Text } deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
+newtype Suburb  = Suburb   { getSuburb   :: T.Text } deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
+newtype Street  = Street   { getStreet   :: T.Text } deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
+newtype Postcode= Postcode { getPostcode :: T.Text } deriving (Eq,Ord,Show,Read,FromJSON,ToJSON)
 
 -- Booo: orphan instances
 instance ToJSON CountryCode
