diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,11 @@
+0.2.2
+
+* Enum, bounded instances for IrisClass
+
+* Gapminder dataset
+
+* Use wreq for HTTP and HTTPS requests
+
 0.2.1
 
 * Wine quality datasets
diff --git a/datasets.cabal b/datasets.cabal
--- a/datasets.cabal
+++ b/datasets.cabal
@@ -1,5 +1,5 @@
 Name:                datasets
-Version:             0.2.1
+Version:             0.2.2
 Synopsis:            Classical data sets for statistics and machine learning
 Description:         Classical machine learning and statistics datasets from
                      the UCI Machine Learning Repository and other sources.
@@ -60,6 +60,7 @@
                  , Numeric.Datasets.BreastCancerWisconsin
                  , Numeric.Datasets.Car
                  , Numeric.Datasets.CO2
+                 , Numeric.Datasets.Gapminder
                  , Numeric.Datasets.Iris
                  , Numeric.Datasets.Michelson
                  , Numeric.Datasets.Nightingale
@@ -73,7 +74,7 @@
    Build-depends:
                  base                    >= 4.6 && < 5
                , cassava
-               , HTTP
+               , wreq
                , hashable
                , filepath
                , bytestring
@@ -84,3 +85,4 @@
                , file-embed
                , aeson
                , time
+               , microlens
diff --git a/src/Numeric/Datasets.hs b/src/Numeric/Datasets.hs
--- a/src/Numeric/Datasets.hs
+++ b/src/Numeric/Datasets.hs
@@ -20,7 +20,6 @@
 
 module Numeric.Datasets where
 
-import Network.HTTP
 import Data.Csv
 import System.FilePath
 import System.Directory
@@ -32,6 +31,8 @@
 import Control.Applicative
 import Data.Time
 import Data.Char (ord)
+import qualified Network.Wreq as Wreq
+import Lens.Micro ((^.))
 
 import Data.Char (toUpper)
 import Text.Read (readMaybe)
@@ -85,15 +86,13 @@
 getFileFromSource cacheDir (URL url) = do
   createDirectoryIfMissing True cacheDir
   let fnm = cacheDir </> "ds" <> show (hash url)
-      castRequest :: Request String -> Request BL.ByteString
-      castRequest r = Request (rqURI r) (rqMethod r) (rqHeaders r) ""
 
   ex <- doesFileExist fnm
   if ex
      then BL.readFile fnm
      else do
-       rsp <- simpleHTTP (castRequest $ getRequest url)
-       bs <- getResponseBody rsp
+       rsp <- Wreq.get url
+       let bs = rsp ^. Wreq.responseBody
        BL.writeFile fnm bs
        return bs
 
diff --git a/src/Numeric/Datasets/Gapminder.hs b/src/Numeric/Datasets/Gapminder.hs
new file mode 100644
--- /dev/null
+++ b/src/Numeric/Datasets/Gapminder.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
+
+{-|
+
+Gapminder dataset - Life expectancy, GDP, population every five years per country
+
+Source: <https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv>
+
+More information: https://cran.r-project.org/web/packages/gapminder/gapminder.pdf
+
+-}
+
+module Numeric.Datasets.Gapminder where
+
+import Numeric.Datasets
+
+import Data.Csv
+import GHC.Generics
+import Control.Applicative
+import Data.Text (Text)
+
+data Gapminder = Gapminder
+  { country :: Text
+  , year :: Int
+  , pop :: Integer
+  , continent :: Text
+  , lifeExp :: Double
+  , gdpPercap :: Double
+  } deriving (Show, Read, Generic)
+
+instance FromNamedRecord Gapminder where
+    parseNamedRecord m = Gapminder <$>
+                         m .: "country" <*>
+                         m .: "year" <*>
+                         (roundIt <$> m .: "pop") <*>
+                         m .: "continent" <*>
+                         m .: "lifeExp" <*>
+                         m .: "gdpPercap"
+          where roundIt :: Double -> Integer
+                roundIt = round
+
+gapminder :: Dataset Gapminder
+gapminder = csvHdrDataset
+   $ URL "https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv"
diff --git a/src/Numeric/Datasets/Iris.hs b/src/Numeric/Datasets/Iris.hs
--- a/src/Numeric/Datasets/Iris.hs
+++ b/src/Numeric/Datasets/Iris.hs
@@ -19,7 +19,7 @@
 
 
 data IrisClass = Setosa | Versicolor | Virginica
-  deriving (Show, Read, Eq, Generic)
+  deriving (Show, Read, Eq, Generic, Enum, Bounded)
 
 instance FromField IrisClass where
   parseField "Iris-setosa" = return Setosa
