diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,13 @@
 # Changelog
 
+#### 0.2.0.3
+
+* Update lots of dependencies.
+
 #### 0.2.0.2
 
 * Allow `rest-core 0.36.*`
+* Allow `rest-gen 0.18.*`
 
 #### 0.2.0.1
 
diff --git a/example-api/Type/Comment.hs b/example-api/Type/Comment.hs
--- a/example-api/Type/Comment.hs
+++ b/example-api/Type/Comment.hs
@@ -10,6 +10,7 @@
 import Data.Time
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -22,7 +23,7 @@
   , content     :: Text
   } deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler Comment where xpickle = gxpickle
-instance JSONSchema Comment where schema = gSchema
-instance FromJSON   Comment
-instance ToJSON     Comment
+instance XmlPickler Comment where xpickle   = gxpickle
+instance JSONSchema Comment where schema    = gSchema
+instance FromJSON   Comment where parseJSON = gparseJson
+instance ToJSON     Comment where toJSON    = gtoJson
diff --git a/example-api/Type/CreatePost.hs b/example-api/Type/CreatePost.hs
--- a/example-api/Type/CreatePost.hs
+++ b/example-api/Type/CreatePost.hs
@@ -9,6 +9,7 @@
 import Data.Text (Text)
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -19,7 +20,7 @@
   , content :: Text
   } deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler CreatePost where xpickle = gxpickle
-instance JSONSchema CreatePost where schema = gSchema
-instance FromJSON   CreatePost
-instance ToJSON     CreatePost
+instance XmlPickler CreatePost where xpickle   = gxpickle
+instance JSONSchema CreatePost where schema    = gSchema
+instance FromJSON   CreatePost where parseJSON = gparseJson
+instance ToJSON     CreatePost where toJSON    = gtoJson
diff --git a/example-api/Type/Post.hs b/example-api/Type/Post.hs
--- a/example-api/Type/Post.hs
+++ b/example-api/Type/Post.hs
@@ -11,6 +11,7 @@
 import Data.Time (UTCTime)
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -27,9 +28,9 @@
   , content     :: Text
   } deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler Post where xpickle = gxpickle
-instance JSONSchema Post where schema = gSchema
-instance ToJSON     Post
-instance FromJSON   Post
+instance XmlPickler Post where xpickle   = gxpickle
+instance JSONSchema Post where schema    = gSchema
+instance FromJSON   Post where parseJSON = gparseJson
+instance ToJSON     Post where toJSON    = gtoJson
 
 instance XmlPickler UTCTime where xpickle = xpPrim
diff --git a/example-api/Type/PostError.hs b/example-api/Type/PostError.hs
--- a/example-api/Type/PostError.hs
+++ b/example-api/Type/PostError.hs
@@ -8,6 +8,7 @@
 import Data.JSON.Schema
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Rest.Error
 import Text.XML.HXT.Arrow.Pickle
@@ -15,10 +16,10 @@
 data PostError = InvalidTitle | InvalidContent
   deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler PostError where xpickle = gxpickle
-instance JSONSchema PostError where schema = gSchema
-instance FromJSON   PostError
-instance ToJSON     PostError
+instance FromJSON   PostError where parseJSON = gparseJson
+instance JSONSchema PostError where schema    = gSchema
+instance ToJSON     PostError where toJSON    = gtoJson
+instance XmlPickler PostError where xpickle   = gxpickle
 
 instance ToResponseCode PostError where
   toResponseCode _ = 400
diff --git a/example-api/Type/User.hs b/example-api/Type/User.hs
--- a/example-api/Type/User.hs
+++ b/example-api/Type/User.hs
@@ -9,6 +9,7 @@
 import Data.Text (Text)
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -20,10 +21,10 @@
   , password :: Password
   } deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler User where xpickle = gxpickle
-instance JSONSchema User where schema = gSchema
-instance FromJSON   User
-instance ToJSON     User
+instance XmlPickler User where xpickle   = gxpickle
+instance JSONSchema User where schema    = gSchema
+instance FromJSON   User where parseJSON = gparseJson
+instance ToJSON     User where toJSON    = gtoJson
 -- We might want to skip the ToJSON instance so we don't accidentally
 -- serve passwords, but this type is accepted on signup which means a
 -- haskell client needs to be able to serialize it.
diff --git a/example-api/Type/UserComment.hs b/example-api/Type/UserComment.hs
--- a/example-api/Type/UserComment.hs
+++ b/example-api/Type/UserComment.hs
@@ -9,6 +9,7 @@
 import Data.Text (Text)
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -19,7 +20,7 @@
   , comment :: Text
   } deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler UserComment where xpickle = gxpickle
-instance JSONSchema UserComment where schema = gSchema
-instance FromJSON   UserComment
-instance ToJSON     UserComment
+instance XmlPickler UserComment where xpickle   = gxpickle
+instance JSONSchema UserComment where schema    = gSchema
+instance FromJSON   UserComment where parseJSON = gparseJson
+instance ToJSON     UserComment where toJSON    = gtoJson
diff --git a/example-api/Type/UserInfo.hs b/example-api/Type/UserInfo.hs
--- a/example-api/Type/UserInfo.hs
+++ b/example-api/Type/UserInfo.hs
@@ -8,6 +8,7 @@
 import Data.JSON.Schema
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -17,7 +18,7 @@
   { name :: User.Name
   } deriving (Generic, Show, Typeable)
 
-instance XmlPickler UserInfo where xpickle = gxpickle
-instance JSONSchema UserInfo where schema = gSchema
-instance ToJSON     UserInfo
-instance FromJSON   UserInfo
+instance XmlPickler UserInfo where xpickle   = gxpickle
+instance JSONSchema UserInfo where schema    = gSchema
+instance FromJSON   UserInfo where parseJSON = gparseJson
+instance ToJSON     UserInfo where toJSON    = gtoJson
diff --git a/example-api/Type/UserPost.hs b/example-api/Type/UserPost.hs
--- a/example-api/Type/UserPost.hs
+++ b/example-api/Type/UserPost.hs
@@ -8,6 +8,7 @@
 import Data.JSON.Schema
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Text.XML.HXT.Arrow.Pickle
 
@@ -17,7 +18,7 @@
 data UserPost = UserPost { user :: User, post :: CreatePost }
   deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler UserPost where xpickle = gxpickle
-instance JSONSchema UserPost where schema = gSchema
-instance FromJSON   UserPost
-instance ToJSON     UserPost
+instance XmlPickler UserPost where xpickle   = gxpickle
+instance JSONSchema UserPost where schema    = gSchema
+instance FromJSON   UserPost where parseJSON = gparseJson
+instance ToJSON     UserPost where toJSON    = gtoJson
diff --git a/example-api/Type/UserSignupError.hs b/example-api/Type/UserSignupError.hs
--- a/example-api/Type/UserSignupError.hs
+++ b/example-api/Type/UserSignupError.hs
@@ -8,6 +8,7 @@
 import Data.JSON.Schema
 import Data.Typeable
 import GHC.Generics
+import Generics.Generic.Aeson
 import Generics.XmlPickler
 import Rest.Error
 import Text.XML.HXT.Arrow.Pickle
@@ -15,10 +16,10 @@
 data UserSignupError = InvalidPassword | InvalidUserName
   deriving (Eq, Generic, Ord, Show, Typeable)
 
-instance XmlPickler UserSignupError where xpickle = gxpickle
-instance JSONSchema UserSignupError where schema = gSchema
-instance FromJSON   UserSignupError
-instance ToJSON     UserSignupError
+instance XmlPickler UserSignupError where xpickle   = gxpickle
+instance JSONSchema UserSignupError where schema    = gSchema
+instance FromJSON   UserSignupError where parseJSON = gparseJson
+instance ToJSON     UserSignupError where toJSON    = gtoJson
 
 instance ToResponseCode UserSignupError where
   toResponseCode _ = 400
diff --git a/rest-example.cabal b/rest-example.cabal
--- a/rest-example.cabal
+++ b/rest-example.cabal
@@ -1,5 +1,5 @@
 name:                rest-example
-version:             0.2.0.2
+version:             0.2.0.3
 synopsis:            Example project for rest
 homepage:            http://www.github.com/silkapp/rest
 license:             BSD3
@@ -41,22 +41,20 @@
     Type.UserSignupError
   build-depends:
       base >= 4.6 && < 4.9
-    , aeson >= 0.7 && < 0.9
+    , aeson >= 0.7 && < 0.11
     , containers >= 0.3 && < 0.6
-    , filepath >= 1.1 && < 1.5
     , generic-aeson == 0.2.*
     , hxt == 9.3.*
     , json-schema >= 0.6 && < 0.8
     , mtl >= 2.0 && < 2.3
     , generic-xmlpickler >= 0.1.0.1 && < 0.2
-    , rest-core == 0.36.*
+    , rest-core >= 0.36 && < 0.38
     , safe >= 0.2 && < 0.4
     , transformers >= 0.2 && < 0.5
     , transformers-compat == 0.4.*
     , stm >= 2.1 && < 2.5
     , text >= 0.11 && < 1.3
     , time >= 1.1 && < 1.6
-    , transformers-base >= 0.4.4 && < 0.5
     , unordered-containers == 0.2.*
 
 -------------------------------------------------------------------------------
@@ -93,9 +91,8 @@
         base >= 4.6 && < 4.9
       , happstack-server >= 7.1 && < 7.5
       , mtl >= 2.0 && < 2.3
-      , rest-core == 0.35.*
       , rest-example
-      , rest-happstack == 0.2.*
+      , rest-happstack >= 0.2 && < 0.4
       , transformers-compat == 0.4.*
   else
     buildable: False
@@ -109,13 +106,9 @@
     buildable: True
     build-depends:
         base >= 4.6 && < 4.9
-      , mtl >= 2.0 && < 2.3
-      , rest-core == 0.36.*
       , rest-example
-      , rest-wai == 0.1.*
-      , wai >= 2.1 && < 3.1
-      , warp >= 2.1 && < 3.1
-      , transformers-compat == 0.4.*
+      , rest-wai >= 0.1 && < 0.3
+      , warp >= 2.1 && < 3.2
   else
     buildable: False
 
@@ -129,9 +122,9 @@
     build-depends:
         base >= 4.6 && < 4.9
       , mtl >= 2.0 && < 2.3
-      , rest-core == 0.36.*
+      , rest-core >= 0.36 && < 0.38
       , rest-example
-      , rest-snap == 0.1.*
+      , rest-snap >= 0.1 && < 0.3
       , snap-core == 0.9.*
       , snap-server == 0.9.*
       , transformers-compat == 0.4.*
@@ -147,10 +140,7 @@
     buildable: True
     build-depends:
         base >= 4.6 && < 4.9
-      , mtl >= 2.0 && < 2.3
-      , rest-core == 0.36.*
       , rest-example
-      , rest-gen >= 0.14 && < 0.18
-      , transformers-compat == 0.4.*
+      , rest-gen >= 0.14 && < 0.20
   else
     buildable: False
