diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Changelog
 
+## 1.14
+
+* Switch XML serialization from `regular` (`regular-xmlpickler`) to
+  GHC Generics (`generic-xmlpickler`). The derived serialization
+  formats should be equivalent. Instead of deriving `PF` instances
+  datatypes you should now `derive Generic`. The PF instances have
+  also been removed from this package.
+
 ### 1.13.1
 
 * Add `Applicative` and `Monad` instances for `Reason`.
diff --git a/rest-types.cabal b/rest-types.cabal
--- a/rest-types.cabal
+++ b/rest-types.cabal
@@ -1,5 +1,5 @@
 name:                rest-types
-version:             1.13.1
+version:             1.14
 description:         Silk Rest Framework Types
 synopsis:            Silk Rest Framework Types
 maintainer:          code@silk.co
@@ -37,8 +37,7 @@
     , hxt >= 9.2 && < 9.4
     , json-schema >= 0.6 && < 0.8
     , mtl >= 2.0 && < 2.3
-    , regular == 0.3.*
-    , regular-xmlpickler == 0.2.*
+    , generic-xmlpickler >= 0.1.0.1 && < 0.2
     , rest-stringmap == 0.2.*
     , text >= 0.11 && < 1.3
     , transformers >= 0.3 && < 0.5
diff --git a/src/Rest/Types/Container.hs b/src/Rest/Types/Container.hs
--- a/src/Rest/Types/Container.hs
+++ b/src/Rest/Types/Container.hs
@@ -8,9 +8,7 @@
   , GADTs
   , ScopedTypeVariables
   , StandaloneDeriving
-  , TemplateHaskell
   , TupleSections
-  , TypeFamilies
   , UndecidableInstances
   #-}
 module Rest.Types.Container
@@ -25,8 +23,7 @@
 import Data.Typeable
 import GHC.Generics
 import Generics.Generic.Aeson
-import Generics.Regular (PF, deriveAll)
-import Generics.Regular.XmlPickler (gxpickle)
+import Generics.XmlPickler (gxpickle)
 import Text.XML.HXT.Arrow.Pickle
 import Text.XML.HXT.Arrow.Pickle.Schema
 import Text.XML.HXT.Arrow.Pickle.Xml
@@ -39,9 +36,6 @@
   , count  :: Int
   , items  :: [a]
   } deriving (Generic, Show, Typeable)
-
-deriveAll ''List "PFList"
-type instance PF (List a) = PFList a
 
 instance XmlPickler a => XmlPickler (List a) where xpickle   = gxpickle
 instance ToJSON     a => ToJSON     (List a) where toJSON    = gtoJson
diff --git a/src/Rest/Types/Container/Resource.hs b/src/Rest/Types/Container/Resource.hs
--- a/src/Rest/Types/Container/Resource.hs
+++ b/src/Rest/Types/Container/Resource.hs
@@ -4,8 +4,6 @@
   , EmptyDataDecls
   , GeneralizedNewtypeDeriving
   , StandaloneDeriving
-  , TemplateHaskell
-  , TypeFamilies
   #-}
 module Rest.Types.Container.Resource
   ( Resource (..)
@@ -21,8 +19,7 @@
 import Data.Typeable
 import GHC.Generics
 import Generics.Generic.Aeson
-import Generics.Regular (PF, deriveAll)
-import Generics.Regular.XmlPickler (gxpickle)
+import Generics.XmlPickler (gxpickle)
 import Rest.StringMap.HashMap.Strict (StringHashMap)
 import Rest.Types.Method
 import Text.XML.HXT.Arrow.Pickle
@@ -50,9 +47,6 @@
   , input      :: String
   } deriving (Generic, Show, Typeable)
 
-deriveAll ''Resource "PFResource"
-type instance PF Resource = PFResource
-
 instance XmlPickler Resource where
   xpickle = gxpickle
 
@@ -63,9 +57,6 @@
 -------------------------------------------------------------------------------
 
 newtype Resources = Resources [Resource] deriving (Generic, Typeable)
-
-deriveAll ''Resources "PFResources"
-type instance PF Resources = PFResources
 
 instance XmlPickler Resources where
   xpickle = gxpickle
diff --git a/src/Rest/Types/Error.hs b/src/Rest/Types/Error.hs
--- a/src/Rest/Types/Error.hs
+++ b/src/Rest/Types/Error.hs
@@ -8,8 +8,6 @@
   , GADTs
   , ScopedTypeVariables
   , StandaloneDeriving
-  , TemplateHaskell
-  , TypeFamilies
   #-}
 module Rest.Types.Error
   ( DataError (..)
@@ -32,8 +30,7 @@
 import Data.Typeable
 import GHC.Generics
 import Generics.Generic.Aeson
-import Generics.Regular (PF, deriveAll)
-import Generics.Regular.XmlPickler (gxpickle)
+import Generics.XmlPickler (gxpickle)
 import Text.XML.HXT.Arrow.Pickle
 import Text.XML.HXT.Arrow.Pickle.Schema
 import Text.XML.HXT.Arrow.Pickle.Xml
@@ -67,9 +64,6 @@
 data Status a b = Failure a | Success b
   deriving (Eq, Show, Generic, Typeable, Functor, Foldable, Traversable)
 
-deriveAll ''Status "PFStatus"
-type instance PF (Status a b) = PFStatus a b
-
 instance (XmlPickler a, XmlPickler b) => XmlPickler (Status a b) where
   xpickle = gxpickle
 
@@ -134,13 +128,7 @@
     Busy                          -> Busy
     Gone                          -> Gone
 
-deriveAll ''DataError "PFDataError"
-deriveAll ''Reason    "PFReason"
-
-type instance PF DataError  = PFDataError
-type instance PF (Reason e) = PFReason e
-
-instance XmlPickler DataError  where xpickle = gxpickle
+instance XmlPickler DataError where xpickle = gxpickle
 instance XmlPickler e => XmlPickler (Reason e) where xpickle = gxpickle
 
 instance ToJSON DataError where toJSON = gtoJson
