diff --git a/src/Network/Ethereum/Web3/JsonRpc.hs b/src/Network/Ethereum/Web3/JsonRpc.hs
--- a/src/Network/Ethereum/Web3/JsonRpc.hs
+++ b/src/Network/Ethereum/Web3/JsonRpc.hs
@@ -16,10 +16,10 @@
 
 import Network.Ethereum.Web3.Types
 
-import Network.HTTP.Client (httpLbs, newManager, requestBody, responseBody,
-                            method, requestHeaders, parseRequest,
+import Network.HTTP.Client (httpLbs, newManager, defaultManagerSettings,
+                            requestBody, responseBody, method,
+                            requestHeaders, parseRequest,
                             RequestBody(RequestBodyLBS))
-import Network.HTTP.Client.TLS (tlsManagerSettings)
 import Control.Monad.Error.Class (throwError)
 import Data.ByteString.Lazy (ByteString)
 import Control.Monad.Trans.Reader (ask)
@@ -41,7 +41,7 @@
   where connection body = do
             conf <- ask
             liftIO $ do
-                manager <- newManager tlsManagerSettings
+                manager <- newManager defaultManagerSettings
                 request <- parseRequest (rpcUri conf)
                 let request' = request
                              { requestBody = RequestBodyLBS body
diff --git a/src/Network/Ethereum/Web3/TH.hs b/src/Network/Ethereum/Web3/TH.hs
--- a/src/Network/Ethereum/Web3/TH.hs
+++ b/src/Network/Ethereum/Web3/TH.hs
@@ -37,7 +37,8 @@
 import Network.Ethereum.Web3.JsonAbi
 import Network.Ethereum.Web3.Types
 import Data.Text (Text, isPrefixOf)
-import Data.Monoid (mconcat)
+import Data.List (groupBy, sortBy)
+import Data.Monoid (mconcat, (<>))
 import Language.Haskell.TH.Quote
 import Language.Haskell.TH.Lib
 import Language.Haskell.TH
@@ -136,7 +137,7 @@
 genABIHeader :: [(Text, Name)] -> [ExpQ]
 genABIHeader vars = fmap go offsetVars
   where offsetVars :: [((Text, Name), Int)]
-        offsetVars = zip vars (fmap ((64 *) . (length vars +)) [0..])
+        offsetVars = zip vars (fmap ((32 *) . (length vars +)) [0..])
         go ((typ, v), o) | isDynType typ = [|toDataBuilder (o :: Int)|]
                          | otherwise     = [|toDataBuilder $(varE v)|]
 
@@ -211,7 +212,7 @@
 
 -- | Method delcarations maker
 mkFun :: Declaration -> Q [Dec]
-mkFun fun@(DFunction name constant inputs outputs) =
+mkFun fun@(DFunction name constant inputs outputs) = do
     sequence $
         [ dataD' dataName (normalC dataName bangInput) derivingD
         , instanceD' dataName encodingT (funEncodigD dataName inputs mIdent)
@@ -220,13 +221,26 @@
         , funWrapper constant funName dataName inputs
         ]
   where mIdent    = T.unpack (methodId fun)
-        funName  = mkName (toLowerFirst (T.unpack name))
-        dataName = mkName (toUpperFirst (T.unpack name) ++ "Function")
+        dataName  = mkName (toUpperFirst (T.unpack $ name <> "Data"))
+        funName   = mkName (toLowerFirst (T.unpack name))
         bangInput = fmap funBangType inputs
         derivingD = [mkName "Show", mkName "Eq", mkName "Ord"]
         encodingT = conT (mkName "ABIEncoding")
         methodT   = conT (mkName "Method")
 
+escape :: [Declaration] -> [Declaration]
+escape = concat . escapeNames . groupBy fnEq . sortBy fnCompare
+  where fnEq (DFunction n1 _ _ _) (DFunction n2 _ _ _) = n1 == n2
+        fnEq _ _ = False
+        fnCompare (DFunction n1 _ _ _) (DFunction n2 _ _ _) = compare n1 n2
+        fnCompare _ _ = GT
+
+escapeNames :: [[Declaration]] -> [[Declaration]]
+escapeNames = fmap go
+  where go (x : xs) = x : zipWith appendToName xs hats
+        hats = [T.replicate n "'" | n <- [1..]]
+        appendToName dfn addition = dfn { funName = funName dfn <> addition }
+
 -- | Declaration parser
 mkDecl :: Declaration -> Q [Dec]
 mkDecl x@(DFunction{}) = mkFun x
@@ -237,7 +251,7 @@
 quoteAbiDec :: String -> Q [Dec]
 quoteAbiDec abi_string =
     case decode abi_lbs of
-        Just (ContractABI abi) -> concat <$> mapM mkDecl abi
+        Just (ContractABI abi) -> concat <$> mapM mkDecl (escape abi)
         _ -> fail "Unable to parse ABI!"
   where abi_lbs = LT.encodeUtf8 (LT.pack abi_string)
 
diff --git a/web3.cabal b/web3.cabal
--- a/web3.cabal
+++ b/web3.cabal
@@ -1,5 +1,5 @@
 name:                web3
-version:             0.3.2.1
+version:             0.3.3.0
 synopsis:            Ethereum API for Haskell
 description:         Web3 is a Haskell client library for Ethereum
 homepage:            https://github.com/airalab/hs-web3#readme
@@ -36,17 +36,15 @@
   other-modules:       Network.Ethereum.Web3.JsonRpc
                      , Network.Ethereum.Web3.Internal
                      , Network.Ethereum.Web3.EncodingUtils
-  build-depends:       base >= 4.5 && <4.10
+  build-depends:       base >4.8 && <4.10
                      , data-default-class
                      , base16-bytestring
                      , template-haskell
-                     , http-client-tls
                      , transformers
                      , http-client
                      , attoparsec
                      , bytestring
                      , cryptonite
-                     , binary
                      , vector
                      , memory
                      , aeson
