diff --git a/Language/Javascript/JMacro/Base.hs b/Language/Javascript/JMacro/Base.hs
--- a/Language/Javascript/JMacro/Base.hs
+++ b/Language/Javascript/JMacro/Base.hs
@@ -46,7 +46,7 @@
 import qualified Data.Set as S
 import qualified Data.Map as M
 import Data.Generics
-import Data.Monoid
+import Data.Monoid(Monoid, mappend, mempty)
 
 import Numeric(showHex)
 import Safe
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
@@ -37,12 +37,14 @@
 import qualified Text.ParserCombinators.Parsec.Token as P
 import Text.ParserCombinators.Parsec.Language(javaStyle)
 
-import Text.Regex.PCRE.Light (compileM)
+import Text.Regex.Posix.String
 
 import Language.Javascript.JMacro.Base
 import Language.Javascript.JMacro.Types
 import Language.Javascript.JMacro.ParseTH
 
+import System.IO.Unsafe
+
 import Web.Encodings
 
 --import Debug.Trace
@@ -186,7 +188,7 @@
                                       Left err -> Just $ fail err
           handleExpr (ValExpr (JFunc is' s)) = Just $
               TH.appE (TH.varE $ mkName "jLam")
-                      (TH.lamE (map (TH.varP . mkName) is)
+                      (TH.lamE (map (TH.varP . mkName . fixIdent) is)
                                (jm2th $ antiIdents is s))
             where is = map (\(StrI i) -> i) is'
 
@@ -549,6 +551,10 @@
 --args :: JMParser [JExpr]
 --args = parens $ commaSep expr
 
+compileRegex s = unsafePerformIO $ compile co eo s
+    where co = compExtended
+          eo = execBlank
+
 expr :: JMParser JExpr
 expr = do
   e <- exprWithIf
@@ -628,9 +634,9 @@
               str   = JStr   <$> (myStringLiteral '"' <|> myStringLiteral '\'')
               regex = do
                 s <- regexLiteral --myStringLiteralNoBr '/'
-                case compileM (BS.pack s) [] of
+                case compileRegex s of
                   Right _ -> return (JRegEx s)
-                  Left err -> fail ("Parse error in regexp: " ++ err)
+                  Left err -> fail ("Parse error in regexp: " ++ show err)
               list  = JList  <$> brackets' (commaSep expr)
               hash  = JHash  . M.fromList <$> braces' (commaSep propPair)
               var = JVar <$> ident'
diff --git a/Language/Javascript/JMacro/Util.hs b/Language/Javascript/JMacro/Util.hs
--- a/Language/Javascript/JMacro/Util.hs
+++ b/Language/Javascript/JMacro/Util.hs
@@ -1,6 +1,6 @@
 module Language.Javascript.JMacro.Util where
 
-import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read)
+import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read, (<), (&&))
 
 import qualified Prelude as P
 import Language.Javascript.JMacro.Base
diff --git a/jmacro.cabal b/jmacro.cabal
--- a/jmacro.cabal
+++ b/jmacro.cabal
@@ -1,5 +1,5 @@
 name:                jmacro
-version:             0.5.2
+version:             0.5.5
 synopsis:            QuasiQuotation library for programmatic generation of Javascript code.
 description:         Javascript syntax, functional syntax, hygienic names, compile-time guarantees of syntactic correctness, limited typechecking. Additional documentation available at <http://www.haskell.org/haskellwiki/Jmacro>
 category:            Language
@@ -13,7 +13,7 @@
 
 
 library
-  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, pcre-light, json, web-encodings > 0.2
+  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, json, web-encodings > 0.2, regex-posix > 0.9
 
   exposed-modules:   Language.Javascript.JMacro
                      Language.Javascript.JMacro.Util
