diff --git a/auth-combinator/auth-combinator.hs b/auth-combinator/auth-combinator.hs
--- a/auth-combinator/auth-combinator.hs
+++ b/auth-combinator/auth-combinator.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
 import Data.Aeson
 import Data.ByteString (ByteString)
 import Data.Text (Text)
diff --git a/hackage/hackage.hs b/hackage/hackage.hs
--- a/hackage/hackage.hs
+++ b/hackage/hackage.hs
@@ -2,6 +2,8 @@
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 import Control.Applicative
 import Control.Monad
 import Control.Monad.IO.Class
diff --git a/servant-examples.cabal b/servant-examples.cabal
--- a/servant-examples.cabal
+++ b/servant-examples.cabal
@@ -1,5 +1,5 @@
 name:                servant-examples
-version:             0.4.4.3
+version:             0.4.4.4
 synopsis:            Example programs for servant
 description:         Example programs for servant,
                      showcasing solutions to common needs.
@@ -21,7 +21,7 @@
   main-is: tutorial.hs
   other-modules: T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
   build-depends:
-      aeson >= 0.8
+      aeson >= 0.10
     , base >= 4.7 && < 5
     , bytestring
     , directory
@@ -45,6 +45,7 @@
 
 executable t8-main
   main-is: t8-main.hs
+  other-modules: T3, T8
   hs-source-dirs: tutorial
   default-language: Haskell2010
   build-depends:
diff --git a/tutorial/T1.hs b/tutorial/T1.hs
--- a/tutorial/T1.hs
+++ b/tutorial/T1.hs
@@ -17,17 +17,12 @@
   , registration_date :: Day
   } deriving (Eq, Show, Generic)
 
--- orphan ToJSON instance for Day. necessary to derive one for User
-instance ToJSON Day where
-  -- display a day in YYYY-mm-dd format
-  toJSON d = toJSON (showGregorian d)
-
 instance ToJSON User
 
 type UserAPI = "users" :> Get '[JSON] [User]
 
 users :: [User]
-users = 
+users =
   [ User "Isaac Newton"    372 "isaac@newton.co.uk" (fromGregorian 1683  3 1)
   , User "Albert Einstein" 136 "ae@mc2.org"         (fromGregorian 1905 12 1)
   ]
diff --git a/tutorial/T10.hs b/tutorial/T10.hs
--- a/tutorial/T10.hs
+++ b/tutorial/T10.hs
@@ -4,6 +4,7 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 module T10 where
 
 import Data.ByteString.Lazy (ByteString)
diff --git a/tutorial/T2.hs b/tutorial/T2.hs
--- a/tutorial/T2.hs
+++ b/tutorial/T2.hs
@@ -17,11 +17,6 @@
   , registration_date :: Day
   } deriving (Eq, Show, Generic)
 
--- orphan ToJSON instance for Day. necessary to derive one for User
-instance ToJSON Day where
-  -- display a day in YYYY-mm-dd format
-  toJSON d = toJSON (showGregorian d)
-
 instance ToJSON User
 
 type UserAPI = "users" :> Get '[JSON] [User]
diff --git a/tutorial/T3.hs b/tutorial/T3.hs
--- a/tutorial/T3.hs
+++ b/tutorial/T3.hs
@@ -70,7 +70,7 @@
     :<|> marketing
 
   where position :: Int -> Int -> EitherT ServantErr IO Position
-        position x y = return (Position x y)
+        position a b = return (Position a b)
 
         hello :: Maybe String -> EitherT ServantErr IO HelloMessage
         hello mname = return . HelloMessage $ case mname of
diff --git a/tutorial/T4.hs b/tutorial/T4.hs
--- a/tutorial/T4.hs
+++ b/tutorial/T4.hs
@@ -4,6 +4,7 @@
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module T4 where
 
 import Data.Aeson
@@ -35,13 +36,13 @@
 
 -- HTML serialization of a list of persons
 instance ToHtml [Person] where
-  toHtml persons = table_ $ do
+  toHtml ps = table_ $ do
     tr_ $ do
       th_ "first name"
       th_ "last name"
       th_ "age"
 
-    foldMap toHtml persons
+    foldMap toHtml ps
 
   toHtmlRaw = toHtml
 
diff --git a/tutorial/T8.hs b/tutorial/T8.hs
--- a/tutorial/T8.hs
+++ b/tutorial/T8.hs
@@ -1,10 +1,10 @@
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
 module T8 where
 
 import Control.Monad.Trans.Either
-import Data.Aeson
 import Servant
 import Servant.Client
 
diff --git a/tutorial/T9.hs b/tutorial/T9.hs
--- a/tutorial/T9.hs
+++ b/tutorial/T9.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module T9 where
 
 import Control.Applicative
diff --git a/wai-middleware/wai-middleware.hs b/wai-middleware/wai-middleware.hs
--- a/wai-middleware/wai-middleware.hs
+++ b/wai-middleware/wai-middleware.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
 import Data.Aeson
 import Data.Text
 import GHC.Generics
