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
@@ -91,7 +91,7 @@
             (x:xs) -> do
                put xs
                return x
-            _ -> fail "not enough elements"
+            _ -> error "not enough elements"
 
 newIdentSupply :: Maybe String -> [Ident]
 newIdentSupply Nothing     = newIdentSupply (Just "jmId")
@@ -406,7 +406,7 @@
               ([StrI a], b) -> do
                 put b
                 return $ withHygiene_ a f z
-              _ -> fail "Not as string"
+              _ -> error "Not as string"
 
 withHygiene_ :: JMacro a => String -> (a -> a) -> a -> a
 withHygiene_ un f x = jfromGADT $ case jtoGADT x of
@@ -437,7 +437,7 @@
                                        put st
                                        rest <- blocks xs
                                        return $ [DeclStat newI t `mappend` jsReplace_ [(StrI i, newI)] (BlockStat rest)]
-                                     _ -> fail "scopify"
+                                     _ -> error "scopify"
                              blocks (x':xs) = (jfromGADT <$> go (jtoGADT x')) <:> blocks xs
                              (<:>) = liftM2 (:)
                    (JMGStat (ForInStat b (StrI i) e s)) -> get >>= \case
@@ -445,7 +445,7 @@
                              put st
                              rest <- jfromGADT <$> go (jtoGADT s)
                              return $ JMGStat . ForInStat b newI e $ jsReplace_ [(StrI i, newI)] rest
-                          _ -> fail "scopify2"
+                          _ -> error "scopify2"
                    (JMGStat (TryStat s (StrI i) s1 s2)) -> get >>= \case
                           (newI:st) -> do
                             put st
@@ -453,7 +453,7 @@
                             c <- jfromGADT <$> go (jtoGADT s1)
                             f <- jfromGADT <$> go (jtoGADT s2)
                             return . JMGStat . TryStat t newI (jsReplace_ [(StrI i, newI)] c) $ f
-                          _ -> fail "scopify3"
+                          _ -> error "scopify3"
                    (JMGExpr (ValExpr (JFunc is s))) -> do
                             st <- get
                             let (newIs,newSt) = splitAt (length is) st
diff --git a/Language/Javascript/JMacro/TypeCheck.hs b/Language/Javascript/JMacro/TypeCheck.hs
--- a/Language/Javascript/JMacro/TypeCheck.hs
+++ b/Language/Javascript/JMacro/TypeCheck.hs
@@ -884,7 +884,7 @@
 
 
     typecheck (UnsatExpr _) = undefined --saturate (avoiding creation of existing ids) then typecheck
-    typecheck (AntiExpr s) = fail $ "Antiquoted expression not provided with explicit signature: " ++ show s
+    typecheck (AntiExpr s) = error $ "Antiquoted expression not provided with explicit signature: " ++ show s
 
     --TODO: if we're typechecking a function, we can assign the types of the args to the given args
     typecheck (TypeExpr forceType e t)
diff --git a/jmacro.cabal b/jmacro.cabal
--- a/jmacro.cabal
+++ b/jmacro.cabal
@@ -1,5 +1,5 @@
 name:                jmacro
-version:             0.6.16
+version:             0.6.17
 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
@@ -12,7 +12,7 @@
 Cabal-Version:       >= 1.6
 
 library
-  build-depends:     base >= 4, base < 5, containers, wl-pprint-text, text, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, aeson >= 0.5 , regex-posix > 0.9, vector >= 0.8, unordered-containers >= 0.2
+  build-depends:     base >= 4.9, base < 5, containers, wl-pprint-text, text, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, aeson >= 0.5 , regex-posix > 0.9, vector >= 0.8, unordered-containers >= 0.2
 
   exposed-modules:   Language.Javascript.JMacro
                      Language.Javascript.JMacro.Util
