diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,9 +1,7 @@
 # yesod-recaptcha2
 
-![Hackage](https://img.shields.io/hackage/v/yesod-recaptcha2.svg)
+[![Hackage](https://img.shields.io/hackage/v/yesod-recaptcha2.svg)](https://hackage.haskell.org/package/yesod-recaptcha2)
 [![Build Status](https://travis-ci.org/ncaq/yesod-recaptcha2.svg?branch=master)](https://travis-ci.org/ncaq/yesod-recaptcha2)
-
-[hackage](https://hackage.haskell.org/package/yesod-recaptcha2)
 
 ~~~hs
 import Yesod.ReCaptcha2
diff --git a/src/Yesod/ReCaptcha2.hs b/src/Yesod/ReCaptcha2.hs
--- a/src/Yesod/ReCaptcha2.hs
+++ b/src/Yesod/ReCaptcha2.hs
@@ -14,15 +14,21 @@
   , reCaptchaInvisible
   , mReCaptchaInvisible
   , reCaptchaInvisibleForm
-  )
-where
+  ) where
 
-import           ClassyPrelude
-import           Data.Aeson
-import           Network.HTTP.Simple
-import           Yesod.Core
-import           Yesod.Form.Functions
-import           Yesod.Form.Types
+import           Control.Monad         (when)
+import           Data.Maybe            (isNothing)
+import           Data.String.Transform (ToByteStringStrict (toByteStringStrict))
+import           Data.Text             (Text)
+import           GHC.Generics          (Generic)
+import           Network.HTTP.Simple   (getResponseBody, httpJSON, parseRequest,
+                                        setRequestBodyURLEncoded)
+import           Yesod.Core            (FromJSON, HandlerFor, MonadIO (liftIO), MonadTrans (lift),
+                                        ToJSON, ToWidgetHead (toWidgetHead), WidgetFor,
+                                        addScriptRemote, hamlet, handlerToWidget, lookupPostParam,
+                                        newIdent, whamlet)
+import           Yesod.Form.Functions  (formToAForm)
+import           Yesod.Form.Types      (AForm, FieldView (..), FormResult (..), MForm)
 
 -- | default key is testing. you should impl reCaptchaSiteKey and reCaptchaSecretKey
 class YesodReCaptcha site where
@@ -65,7 +71,7 @@
           req <- parseRequest
             "POST https://www.google.com/recaptcha/api/siteverify"
           res <- httpJSON $ setRequestBodyURLEncoded
-            [("secret", encodeUtf8 secret), ("response", encodeUtf8 response)]
+            [("secret", toByteStringStrict secret), ("response", toByteStringStrict response)]
             req
           return $ getResponseBody res
         return $ if success
diff --git a/yesod-recaptcha2.cabal b/yesod-recaptcha2.cabal
--- a/yesod-recaptcha2.cabal
+++ b/yesod-recaptcha2.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: c1b7cd991705c1ff7b7403cc61f008ac8aad4294d6cd6ca122024733310b443b
 
 name:           yesod-recaptcha2
-version:        1.0.1
+version:        1.0.2
 synopsis:       yesod recaptcha2
 description:    recaptcha2 for yesod-form
 category:       Web
@@ -27,18 +25,19 @@
   location: https://github.com/ncaq/yesod-recaptcha2
 
 library
+  exposed-modules:
+      Yesod.ReCaptcha2
+  other-modules:
+      Paths_yesod_recaptcha2
   hs-source-dirs:
       src
-  ghc-options: -Wall -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-home-modules -Wredundant-constraints -Wcompat
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
   build-depends:
       aeson
     , base >=4.7 && <5
-    , classy-prelude
     , http-conduit
+    , string-transform
+    , text
     , yesod-core
     , yesod-form
-  exposed-modules:
-      Yesod.ReCaptcha2
-  other-modules:
-      Paths_yesod_recaptcha2
   default-language: Haskell2010
