diff --git a/rfc.cabal b/rfc.cabal
--- a/rfc.cabal
+++ b/rfc.cabal
@@ -1,5 +1,5 @@
 name:                rfc
-version:             0.0.0.8
+version:             0.0.0.9
 synopsis:            Robert Fischer's Common library
 description:         An enhanced Prelude and various utilities for Aeson, Servant, PSQL, and Redis that Robert Fischer uses.
 homepage:            https://github.com/RobertFischer/rfc#README.md
@@ -35,7 +35,6 @@
     if flag(Browser)
       ghc-options:     -dedupe
   build-depends:       base >= 4.7 && < 5
-                     , aeson
                      , servant
                      , classy-prelude
                      , uuid-types
@@ -58,9 +57,12 @@
                      , vector
                      , lifted-async
                      , text
+  if flag(Browser)
+    build-depends:     aeson
   if !flag(Browser)
     build-depends:     servant-server
                      , wai
+                     , aeson >= 1.2.3.0
                      , wai-extra
                      , wai-cors
                      , postgresql-simple >= 0.5.3.0
diff --git a/src/RFC/Data/UUID.hs b/src/RFC/Data/UUID.hs
--- a/src/RFC/Data/UUID.hs
+++ b/src/RFC/Data/UUID.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE CPP                   #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings     #-}
 {-# LANGUAGE TypeSynonymInstances  #-}
 
 module RFC.Data.UUID
@@ -13,12 +14,20 @@
 import           Data.UUID.Types
 import qualified Data.UUID.Types                    as UUID
 
+#if MIN_VERSION_aeson(1,1,0)
+-- UUID has ToJSON and FromJSON
+#else
+import           Data.Aeson.Types
+#endif
+
 #ifndef GHCJS_BROWSER
+
 import           Database.PostgreSQL.Simple.FromRow
 import           Database.PostgreSQL.Simple.ToRow
 import           Database.PostgreSQL.Simple.Types   (Only (..))
 #endif
 
+
 #ifndef GHCJS_BROWSER
 instance FromRow UUID where
   fromRow = do
@@ -27,6 +36,23 @@
 
 instance ToRow UUID where
   toRow id = toRow $ Only id
+#endif
+
+#if MIN_VERSION_aeson(1,1,0)
+-- UUID has ToJSON and FromJSON
+#else
+
+instance ToJSON UUID where
+  toJSON = toJSON . UUID.toText
+
+instance FromJSON UUID where
+  parseJSON (String txt) =
+    case UUID.fromText txt of
+      Nothing   -> fail $ "Invalid UUID: " ++ cs txt
+      Just uuid -> return uuid
+
+  parseJSON invalid = typeMismatch "UUID" invalid
+
 #endif
 
 instance ConvertibleStrings UUID String where
