diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+pandoc (1.14.0.3)
+
+  * Allow compilation with syb 0.5.*.
+
+  * Custom writer:  fixed some compiler warnings for ghc < 7.10.
+
 pandoc (1.14.0.2)
 
   * Allow building with hslua 0.4.
diff --git a/pandoc.cabal b/pandoc.cabal
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -1,5 +1,5 @@
 Name:            pandoc
-Version:         1.14.0.2
+Version:         1.14.0.3
 Cabal-Version:   >= 1.10
 Build-Type:      Custom
 License:         GPL
@@ -234,7 +234,7 @@
 
 Library
   Build-Depends: base >= 4.2 && <5,
-                 syb >= 0.1 && < 0.5,
+                 syb >= 0.1 && < 0.6,
                  containers >= 0.1 && < 0.6,
                  unordered-containers >= 0.2 && < 0.3,
                  array >= 0.3 && < 0.6,
@@ -440,7 +440,7 @@
   Main-Is:        test-pandoc.hs
   Hs-Source-Dirs: tests
   Build-Depends:  base >= 4.2 && < 5,
-                  syb >= 0.1 && < 0.5,
+                  syb >= 0.1 && < 0.6,
                   pandoc,
                   pandoc-types >= 1.12.4 && < 1.13,
                   bytestring >= 0.9 && < 0.11,
@@ -491,7 +491,7 @@
   Hs-Source-Dirs:  benchmark
   Build-Depends:   pandoc,
                    base >= 4.2 && < 5,
-                   syb >= 0.1 && < 0.5,
+                   syb >= 0.1 && < 0.6,
                    criterion >= 0.5 && < 1.1
   Ghc-Options:   -rtsopts -Wall -fno-warn-unused-do-bind
   Default-Language: Haskell98
diff --git a/src/Text/Pandoc/Writers/Custom.hs b/src/Text/Pandoc/Writers/Custom.hs
--- a/src/Text/Pandoc/Writers/Custom.hs
+++ b/src/Text/Pandoc/Writers/Custom.hs
@@ -57,24 +57,17 @@
     : ("class", unwords classes)
     : keyvals
 
-getList :: StackValue a => LuaState -> Int -> IO [a]
-getList lua i' = do
-  continue <- Lua.next lua i'
-  if continue
-     then do
-       next <- Lua.peek lua (-1)
-       Lua.pop lua 1
-       x <- maybe (fail "peek returned Nothing") return next
-       rest <- getList lua i'
-       return (x : rest)
-     else return []
-
 #if MIN_VERSION_hslua(0,4,0)
+#if MIN_VERSION_base(4,8,0)
 instance {-# OVERLAPS #-} StackValue [Char] where
+#else
+instance StackValue [Char] where
+#endif
   push lua cs = Lua.push lua (UTF8.fromString cs)
   peek lua i = do
                  res <- Lua.peek lua i
                  return $ UTF8.toString `fmap` res
+  valuetype _ = Lua.TSTRING
 #else
 #if MIN_VERSION_base(4,8,0)
 instance {-# OVERLAPS #-} StackValue a => StackValue [a] where
@@ -93,6 +86,18 @@
     Lua.pop lua 1
     return (Just lst)
   valuetype _ = Lua.TTABLE
+
+getList :: StackValue a => LuaState -> Int -> IO [a]
+getList lua i' = do
+  continue <- Lua.next lua i'
+  if continue
+     then do
+       next <- Lua.peek lua (-1)
+       Lua.pop lua 1
+       x <- maybe (fail "peek returned Nothing") return next
+       rest <- getList lua i'
+       return (x : rest)
+     else return []
 #endif
 
 instance StackValue Format where
