diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,4 +1,24 @@
-commit 98cd6ba239381b1ec64855631f8082a0bce3a71c
+commit 7f421b38df3a8047e6c35ae012c851edc613e66d
+Author: Magicloud <1886157+Magicloud@users.noreply.github.com>
+Date:   Sat Apr 6 21:40:45 2019 +0800
+
+    Bugfix: Wrong source file was fed to C2HS.
+    
+    C2HS should be the step after lambda annotation expanding. But it was
+    fed with the input of former step, instead of the output. This was not
+    noted until building cairo-core with previous version of Cairo.
+    
+    Another issue appeared when building with previous versoin of Cairo,
+    that the dumb version of functions triggered two warnings. No type
+    signature and unused variables. Also fixed.
+
+commit ccb4d612c2428a7fd013359363ed07ae897d7201
+Author: Magicloud <1886157+Magicloud@users.noreply.github.com>
+Date:   Sat Apr 6 13:55:11 2019 +0800
+
+    CircleCI setup
+
+commit d93da9d25a398326a529ba29c7726da1f4486732
 Author: Magicloud <1886157+Magicloud@users.noreply.github.com>
 Date:   Sun Feb 10 18:47:28 2019 +0800
 
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE LambdaCase          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 import           Control.Exception
-import           Control.Monad
 import qualified Data.ByteString.Lazy as LBS
 import           Data.Char
 import           Data.List
@@ -33,7 +32,7 @@
     PreProcessor False $ \(iD, iF) (oD, oF) verbosity -> do
       catch (do
         require (iD </> iF) (oD </> iF)
-        (runPreProcessor $ ppC2hs bi lbi clbi) (iD, iF) (oD, oF) verbosity
+        (runPreProcessor $ ppC2hs bi lbi clbi) (oD, iF) (oD, oF) verbosity
         rmLINE (oD </> oF)
         bindingDoc (oD </> oF)
         c2hsWrapper bi (oD </> oF)) (\(e :: SomeException) -> do
@@ -68,7 +67,9 @@
           , if "{#enum " `isPrefixOf` code
               then "data " ++ name
               else if "{#fun " `isPrefixOf` code
-              then name ++ " " ++ intercalate " " (map ((:) 'v' . show) [1..argc]) ++ " = undefined"
+              then intercalate "\n"
+                [ name ++ " :: " ++ intercalate " -> " (map ((:) 't' . show) [1 .. argc + 1])
+                , name ++ " " ++ intercalate " " (replicate argc "_") ++ " = undefined" ]
               else error code
           , "#endif" ])) conds
       else line) . lines
diff --git a/cairo-core.cabal b/cairo-core.cabal
--- a/cairo-core.cabal
+++ b/cairo-core.cabal
@@ -1,5 +1,5 @@
 name:                cairo-core
-version:             1.16.6
+version:             1.16.7
 synopsis:            Cairo Haskell binding (partial)
 description:         For using Cairo in Haskell. Functions/Types for X11, Windows, MacOS are not included.
 homepage:            https://github.com/magicloud/cairo-core#readme
diff --git a/src/Graphics/Cairo/Fonts/FontOptions.chs b/src/Graphics/Cairo/Fonts/FontOptions.chs
--- a/src/Graphics/Cairo/Fonts/FontOptions.chs
+++ b/src/Graphics/Cairo/Fonts/FontOptions.chs
@@ -7,7 +7,8 @@
 module Graphics.Cairo.Fonts.FontOptions where
 
 {#import Graphics.Cairo.Types#}
-import Graphics.Cairo.HasStatus
+import qualified Foreign.Ptr as C2HSImp
+import           Graphics.Cairo.HasStatus
 
 {#context lib="cairo" prefix="cairo"#}
 
