diff --git a/Language/Javascript/JMacro/ParseTH.hs b/Language/Javascript/JMacro/ParseTH.hs
new file mode 100644
--- /dev/null
+++ b/Language/Javascript/JMacro/ParseTH.hs
@@ -0,0 +1,41 @@
+module Language.Javascript.JMacro.ParseTH where
+
+--import Language.Haskell.Meta.Parse
+import qualified Language.Haskell.TH as TH
+import Language.Haskell.Exts.Translate
+import Language.Haskell.Exts.Parser
+import Language.Haskell.Exts.Extension
+import Language.Haskell.Exts.Annotated.Fixity
+import qualified Language.Haskell.Exts.Syntax as Hs
+
+parseHSExp :: String -> Either String TH.Exp
+parseHSExp = fmap toExp . parseResultToEither . parseExpWithMode myDefaultParseMode
+
+--for Language.Haskell.Meta
+--parseHSExp = parseExp
+
+parseResultToEither :: ParseResult a -> Either String a
+parseResultToEither (ParseOk a) = Right a
+parseResultToEither (ParseFailed loc e)
+  = let line = Hs.srcLine loc - 1
+    in Left (unlines [show line,show loc,e])
+
+myDefaultParseMode :: ParseMode
+myDefaultParseMode = ParseMode
+  {parseFilename = []
+  ,extensions = myDefaultExtensions
+  ,ignoreLanguagePragmas = False
+  ,fixities = baseFixities
+  ,ignoreLinePragmas = False}
+
+myDefaultExtensions :: [Extension]
+myDefaultExtensions = [PostfixOperators
+                      ,QuasiQuotes
+                      ,UnicodeSyntax
+                      ,PatternSignatures
+                      ,MagicHash
+                      ,ForeignFunctionInterface
+                      ,TemplateHaskell
+                      ,RankNTypes
+                      ,MultiParamTypeClasses
+                      ,RecursiveDo]
diff --git a/Language/Javascript/JMacro/QQ.hs b/Language/Javascript/JMacro/QQ.hs
--- a/Language/Javascript/JMacro/QQ.hs
+++ b/Language/Javascript/JMacro/QQ.hs
@@ -22,7 +22,7 @@
 import Data.Generics(extQ,Data)
 import qualified Data.Map as M
 
-import Language.Haskell.Meta.Parse
+--import Language.Haskell.Meta.Parse
 import qualified Language.Haskell.TH as TH
 import Language.Haskell.TH(mkName)
 import qualified Language.Haskell.TH.Lib as TH
@@ -37,6 +37,7 @@
 import Text.Regex.PCRE.Light (compileM)
 
 import Language.Javascript.JMacro.Base
+import Language.Javascript.JMacro.ParseTH
 
 -- import Debug.Trace
 
@@ -154,14 +155,14 @@
                          jm2th s2
                          ]
 
-          handleStat (AntiStat s) = case parseExp s of
+          handleStat (AntiStat s) = case parseHSExp s of
                                       Right ans -> Just $ TH.appE (TH.varE (mkName "toStat"))
                                                                   (return ans)
                                       Left err -> Just $ fail err
           handleStat _ = Nothing
 
           handleExpr :: JExpr -> Maybe (TH.ExpQ)
-          handleExpr (AntiExpr s) = case parseExp s of
+          handleExpr (AntiExpr s) = case parseHSExp s of
                                       Right ans -> Just $ TH.appE (TH.varE (mkName "toJExpr")) (return ans)
                                       Left err -> Just $ fail err
           handleExpr (ValExpr (JFunc is' s)) = Just $
@@ -440,7 +441,7 @@
         x <- (try (symbol "`(") >> anyChar `manyTill` try (symbol ")`"))
         either (fail . ("Bad AntiQuotation: \n" ++))
                (const (return x))
-               (parseExp x)
+               (parseHSExp x)
 
 --args :: JMParser [JExpr]
 --args = parens $ commaSep expr
@@ -498,7 +499,7 @@
          x <- (try (symbol "`(") >> anyChar `manyTill` try (string ")`"))
          either (fail . ("Bad AntiQuotation: \n" ++))
                 (const (return x))
-                (parseExp x)
+                (parseHSExp x)
 
     valExpr = ValExpr <$> (num <|> negnum <|> str <|> try regex <|> list <|> hash <|> func <|> var) <?> "value"
         where num = either JInt JDouble <$> try natFloat
diff --git a/jmacro.cabal b/jmacro.cabal
--- a/jmacro.cabal
+++ b/jmacro.cabal
@@ -1,5 +1,5 @@
 name:                jmacro
-version:             0.3.1
+version:             0.3.2
 synopsis:            QuasiQuotation library for programmatic generation of Javascript code.
 description:         Javascript syntax, functional syntax, hygienic names, compile-time guarantees of syntactic correctness, limited typechecking.
 category:            Language
@@ -13,7 +13,7 @@
 
 
 library
-  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec >= 2.1, template-haskell >= 2.3, mtl, haskell-src-meta, bytestring >= 0.9, syb, pcre-light, json
+  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec >= 2.1, template-haskell >= 2.3, mtl, haskell-src-exts, haskell-src-exts-qq, bytestring >= 0.9, syb, pcre-light, json
 
   exposed-modules:   Language.Javascript.JMacro
                      Language.Javascript.JMacro.Util
@@ -22,6 +22,7 @@
                      Language.Javascript.JMacro.Rpc
   other-modules:     Language.Javascript.JMacro.Base
                      Language.Javascript.JMacro.QQ
+                     Language.Javascript.JMacro.ParseTH
   ghc-options:       -Wall
   if impl(ghc >= 6.8)
     ghc-options:     -fwarn-tabs
