diff --git a/Data/Parser/Grempa/Grammar.hs b/Data/Parser/Grempa/Grammar.hs
--- a/Data/Parser/Grempa/Grammar.hs
+++ b/Data/Parser/Grempa/Grammar.hs
@@ -35,7 +35,7 @@
     Grammars can be recursively defined by using recursive do-notation.
 -}
 
-{-# LANGUAGE DoRec, TypeFamilies #-}
+{-# LANGUAGE RecursiveDo, TypeFamilies #-}
 module Data.Parser.Grempa.Grammar
     ( module Data.Parser.Grempa.Grammar.Typed
     , module Data.Parser.Grempa.Grammar.Levels
diff --git a/Data/Parser/Grempa/Grammar/Levels.hs b/Data/Parser/Grempa/Grammar/Levels.hs
--- a/Data/Parser/Grempa/Grammar/Levels.hs
+++ b/Data/Parser/Grempa/Grammar/Levels.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE DoRec #-}
+{-# LANGUAGE RecursiveDo #-}
 module Data.Parser.Grempa.Grammar.Levels
     ( levels
     , lrule
diff --git a/Data/Parser/Grempa/Grammar/Typed.hs b/Data/Parser/Grempa/Grammar/Typed.hs
--- a/Data/Parser/Grempa/Grammar/Typed.hs
+++ b/Data/Parser/Grempa/Grammar/Typed.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE GADTs, DoRec, DeriveDataTypeable, TypeFamilies, FlexibleInstances, MultiParamTypeClasses #-}
+{-# LANGUAGE GADTs, RecursiveDo, DeriveDataTypeable, TypeFamilies, FlexibleInstances, MultiParamTypeClasses #-}
 {-# OPTIONS_HADDOCK hide #-}
 module Data.Parser.Grempa.Grammar.Typed
     ( Grammar
diff --git a/Data/Parser/Grempa/Grammar/Untyped.hs b/Data/Parser/Grempa/Grammar/Untyped.hs
--- a/Data/Parser/Grempa/Grammar/Untyped.hs
+++ b/Data/Parser/Grempa/Grammar/Untyped.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE GADTs, DoRec #-}
+{-# LANGUAGE GADTs, RecursiveDo #-}
 module Data.Parser.Grempa.Grammar.Untyped
     ( Rule, Prod, Symbol(..), RId(..)
     , unType
diff --git a/Data/Parser/Grempa/Parser/LALR.hs b/Data/Parser/Grempa/Parser/LALR.hs
--- a/Data/Parser/Grempa/Parser/LALR.hs
+++ b/Data/Parser/Grempa/Parser/LALR.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TupleSections, DoRec, FlexibleInstances, MultiParamTypeClasses #-}
+{-# LANGUAGE TupleSections, RecursiveDo, FlexibleInstances, MultiParamTypeClasses #-}
 module Data.Parser.Grempa.Parser.LALR
     ( lalr
     ) where
diff --git a/Grempa.cabal b/Grempa.cabal
--- a/Grempa.cabal
+++ b/Grempa.cabal
@@ -1,5 +1,5 @@
 Name:                Grempa
-Version:             0.2.1
+Version:             0.2.2
 Synopsis:            Embedded grammar DSL and LALR parser generator
 Description:
     A library for expressing programming language grammars in a form similar
@@ -38,12 +38,12 @@
       your grammars.
       Default: False
 Library
-    Build-depends:   array            >= 0.3 && < 0.5
+    Build-depends:   array            >= 0.3
                    , base             >= 4.2 && < 5
-                   , containers       >= 0.3 && < 0.5
-                   , mtl              == 2.0.*
-                   , template-haskell >= 2.4 && < 2.8
-                   , th-lift          == 0.5.*
+                   , containers       >= 0.3
+                   , mtl              >= 2
+                   , template-haskell >= 2.4
+                   , th-lift          >= 0.5
     Exposed-modules: Data.Parser.Grempa.Grammar
                    , Data.Parser.Grempa.Static
                    , Data.Parser.Grempa.Dynamic
@@ -64,5 +64,5 @@
                    , Data.Parser.Grempa.Parser.Table
     GHC-Options:   -Wall
     if flag(test)
-      Build-Depends:   QuickCheck == 2.4.*
+      Build-Depends:   QuickCheck >= 2.4
       Exposed-modules: Data.Parser.Grempa.Test
diff --git a/examples/Ex1SimpleExpr.hs b/examples/Ex1SimpleExpr.hs
--- a/examples/Ex1SimpleExpr.hs
+++ b/examples/Ex1SimpleExpr.hs
@@ -2,7 +2,7 @@
 --              correct precedence levels.
 
 -- Needed for recursive do notation.
-{-# LANGUAGE DoRec #-}
+{-# LANGUAGE RecursiveDo #-}
 -- Needed for deriving 'Typeable'.
 {-# LANGUAGE DeriveDataTypeable #-}
 
diff --git a/examples/Ex2Calculator.hs b/examples/Ex2Calculator.hs
--- a/examples/Ex2Calculator.hs
+++ b/examples/Ex2Calculator.hs
@@ -6,7 +6,7 @@
 --              parser.
 
 -- Needed for recursive do notation.
-{-# LANGUAGE DoRec #-}
+{-# LANGUAGE RecursiveDo #-}
 -- Needed for deriving 'Typeable'.
 {-# LANGUAGE DeriveDataTypeable #-}
 -- Needed for deriving 'Lift'.
diff --git a/examples/Ex3Fun.hs b/examples/Ex3Fun.hs
--- a/examples/Ex3Fun.hs
+++ b/examples/Ex3Fun.hs
@@ -1,6 +1,6 @@
 -- | Example 3: A grammar for a small functional language.
 --              This example also includes a naive lexer.
-{-# LANGUAGE DeriveDataTypeable, DoRec #-}
+{-# LANGUAGE DeriveDataTypeable, RecursiveDo #-}
 module Ex3Fun (fun, Def) where
 
 import Control.Applicative
diff --git a/examples/Ex4StateA.hs b/examples/Ex4StateA.hs
--- a/examples/Ex4StateA.hs
+++ b/examples/Ex4StateA.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE StandaloneDeriving, GeneralizedNewtypeDeriving, DeriveDataTypeable, DoRec #-}
+{-# LANGUAGE StandaloneDeriving, GeneralizedNewtypeDeriving, DeriveDataTypeable, RecursiveDo #-}
 module Ex4StateA (state, Expr, St, evalSt) where
 
 import Control.Applicative
diff --git a/examples/Ex4StateB.hs b/examples/Ex4StateB.hs
--- a/examples/Ex4StateB.hs
+++ b/examples/Ex4StateB.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable, DoRec #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable, RecursiveDo #-}
 module Ex4StateB (state, Expr, St, evalSt) where
 
 import Control.Applicative
