diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,3 @@
+1.0.3
+* Get building on ghc-8
+* Limit column size for session key
diff --git a/serversession-backend-persistent.cabal b/serversession-backend-persistent.cabal
--- a/serversession-backend-persistent.cabal
+++ b/serversession-backend-persistent.cabal
@@ -1,5 +1,5 @@
 name:            serversession-backend-persistent
-version:         1.0.2
+version:         1.0.3
 license:         MIT
 license-file:    LICENSE
 author:          Felipe Lessa <felipe.lessa@gmail.com>
@@ -12,7 +12,12 @@
 homepage:        https://github.com/yesodweb/serversession
 description:     API docs and the README are available at <http://www.stackage.org/package/serversession-backend-persistent>
 extra-source-files: README.md
+                    changelog.md
 
+flag lib-Werror
+  default: False
+  manual: True
+
 library
   hs-source-dirs: src
   build-depends:
@@ -22,7 +27,7 @@
     , bytestring
     , cereal                    >= 0.4
     , path-pieces
-    , persistent                >= 2.1   && < 2.3
+    , persistent                >= 2.1
     , tagged                    >= 0.7
     , text
     , time
@@ -51,8 +56,11 @@
     TypeFamilies
     UndecidableInstances
   ghc-options:     -Wall
+  if flag(lib-Werror)
+    ghc-options: -Werror
 
 
+
 test-suite tests
   type: exitcode-stdio-1.0
   hs-source-dirs:  tests
@@ -64,8 +72,8 @@
 
     , hspec                     >= 2.1 && < 3
     , monad-logger
-    , persistent-sqlite         >= 2.1   && < 2.3
-    , persistent-postgresql     >= 2.1   && < 2.3
+    , persistent-sqlite         >= 2.1
+    , persistent-postgresql     >= 2.1
     , resource-pool
     , QuickCheck
 
@@ -76,6 +84,9 @@
     TemplateHaskell
   main-is:         Main.hs
   ghc-options:     -Wall -threaded "-with-rtsopts=-N -s -M1G -c" -rtsopts
+  if flag(lib-Werror)
+    ghc-options: -Werror
+
 
 
 source-repository head
diff --git a/src/Web/ServerSession/Backend/Persistent/Internal/Impl.hs b/src/Web/ServerSession/Backend/Persistent/Internal/Impl.hs
--- a/src/Web/ServerSession/Backend/Persistent/Internal/Impl.hs
+++ b/src/Web/ServerSession/Backend/Persistent/Internal/Impl.hs
@@ -12,10 +12,10 @@
   , throwSS
   ) where
 
-import Control.Applicative ((<$>), (<*>))
+import Control.Applicative as A
 import Control.Monad (void)
 import Control.Monad.IO.Class (liftIO)
-import Data.Monoid (mempty)
+import Data.Monoid as M
 import Data.Proxy (Proxy(..))
 import Data.Time (UTCTime)
 import Data.Typeable (Typeable)
@@ -94,7 +94,7 @@
         []
         []
         ["Eq", "Ord", "Show", "Typeable"]
-        mempty
+        M.mempty
         False
     where
       pfd :: P.EntityField (PersistentSession sess) typ -> P.FieldDef
@@ -109,7 +109,7 @@
 
   fromPersistValues [a, b, c, d, e] =
     PersistentSession
-      <$> err "key"        (P.fromPersistValue a)
+      A.<$> err "key"        (P.fromPersistValue a)
       <*> err "authId"     (P.fromPersistValue b)
       <*> err "session"    (P.fromPersistValue c)
       <*> err "createdAt"  (P.fromPersistValue d)
@@ -150,7 +150,7 @@
         (P.DBName "key")
         (P.FTTypeCon Nothing "SessionId sess")
         (P.sqlType (Proxy :: Proxy (SessionId sess)))
-        []
+        ["maxlen=30"]
         True
         P.NoReference
   persistFieldDef PersistentSessionAuthId
diff --git a/src/Web/ServerSession/Backend/Persistent/Internal/Types.hs b/src/Web/ServerSession/Backend/Persistent/Internal/Types.hs
--- a/src/Web/ServerSession/Backend/Persistent/Internal/Types.hs
+++ b/src/Web/ServerSession/Backend/Persistent/Internal/Types.hs
@@ -12,7 +12,7 @@
     -- $orphanSessionMap
   ) where
 
-import Control.Applicative ((<$>))
+import Control.Applicative as A
 import Control.Arrow (first)
 import Control.Monad ((>=>), mzero)
 import Data.ByteString (ByteString)
@@ -103,7 +103,7 @@
 
 instance S.Serialize SessionMap where
   put = S.put . map (first TE.encodeUtf8) . HM.toList . unSessionMap
-  get = SessionMap . HM.fromList . map (first TE.decodeUtf8) <$> S.get
+  get = SessionMap . HM.fromList . map (first TE.decodeUtf8) A.<$> S.get
 
 instance A.FromJSON SessionMap where
   parseJSON = fmap fixup . A.parseJSON
