diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -85,7 +85,7 @@
       // Read and sum 5 integers
       int i, sum = 0, tmp;
       for (i = 0; i < 5; i++) {
-        scanf("%d ", &tmp);
+        scanf("%d", &tmp);
         sum += tmp;
       }
       return sum;
@@ -121,7 +121,7 @@
     // Read and sum n integers
     int i, sum = 0, tmp;
     for (i = 0; i < $(int n); i++) {
-      scanf("%d ", &tmp);
+      scanf("%d", &tmp);
       sum += tmp;
     }
     return sum;
@@ -197,7 +197,8 @@
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}
 import qualified Language.C.Inline as C
-import qualified Data.Vector.Storable.Mutable as V
+import qualified Data.Vector.Storable as V
+import qualified Data.Vector.Storable.Mutable as VM
 import           Data.Monoid ((<>))
 import           Foreign.C.Types
 
@@ -205,19 +206,19 @@
 -- 'C.baseCtx'.
 C.context (C.baseCtx <> C.vecCtx)
 
-sumVec :: V.IOVector CDouble -> IO CDouble
+sumVec :: VM.IOVector CDouble -> IO CDouble
 sumVec vec = [C.block| double {
     double sum = 0;
     int i;
     for (i = 0; i < $vec-len:vec; i++) {
       sum += $vec-ptr:(double *vec)[i];
     }
-    return sum
+    return sum;
   } |]
 
 main :: IO ()
 main = do
-  x <- sumVec =<< V.fromList [1,2,3]
+  x <- sumVec =<< V.thaw (V.fromList [1,2,3])
   print x
 ```
 
@@ -232,7 +233,7 @@
 exactly the same as the `vec-len` and `vec-ptr` counterparts, but with
 strict `ByteString`s.  The only difference is that it is no necessary to
 specify the type of the pointer from C -- it is always going to be
-`unsigned char *`:
+`char *`:
 
 ```
 {-# LANGUAGE TemplateHaskell #-}
@@ -250,7 +251,7 @@
     int {
       int i, bits = 0;
       for (i = 0; i < $bs-len:bs; i++) {
-        unsigned char ch = $bs-ptr:bs[i];
+        char ch = $bs-ptr:bs[i];
         bits += (ch * 01001001001ULL & 042104210421ULL) % 017;
       }
       return bits;
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,4 @@
-- 0.5.5.1: Add docs regarding internals. See issue #41.
+- 0.5.5.2: Add docs regarding internals. See issue #41.
 - 0.5.5.1: Add support for Interruptible calls. The version skip is
   simply because I forgot to update the changelog for 0.5.5.0.
 - 0.5.4.3: Fix haddock docs.
diff --git a/inline-c.cabal b/inline-c.cabal
--- a/inline-c.cabal
+++ b/inline-c.cabal
@@ -1,5 +1,5 @@
 name:                inline-c
-version:             0.5.5.2
+version:             0.5.5.3
 synopsis:            Write Haskell source files including C code inline. No FFI required.
 description:         See <https://github.com/fpco/inline-c/blob/master/README.md>.
 license:             MIT
diff --git a/src/Language/C/Inline/Context.hs b/src/Language/C/Inline/Context.hs
--- a/src/Language/C/Inline/Context.hs
+++ b/src/Language/C/Inline/Context.hs
@@ -422,7 +422,7 @@
           hsExp' <- [| \cont -> BS.unsafeUseAsCString $(return hsExp) $ \ptr -> cont ptr  |]
           return (hsTy, hsExp')
         _ ->
-          fail "impossible: got type different from `unsigned char' (bsCtx)"
+          fail "impossible: got type different from `char *' (bsCtx)"
   }
 
 bsLenAntiQuoter :: AntiQuoter HaskellIdentifier
diff --git a/src/Language/C/Inline/FunPtr.hs b/src/Language/C/Inline/FunPtr.hs
--- a/src/Language/C/Inline/FunPtr.hs
+++ b/src/Language/C/Inline/FunPtr.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -37,7 +38,11 @@
 mkFunPtrFromName name = do
   i <- TH.reify name
   case i of
+#if MIN_VERSION_template_haskell(2,11,0)
+    TH.VarI _ ty _ -> [| $(mkFunPtr (return ty)) $(TH.varE name) |]
+#else
     TH.VarI _ ty _ _ -> [| $(mkFunPtr (return ty)) $(TH.varE name) |]
+#endif
     _ -> fail "mkFunPtrFromName: expecting a variable as argument."
 
 -- | @$('peekFunPtr' [t| 'CDouble' -> 'IO' 'CDouble' |])@ generates a foreign import
