diff --git a/src/Data/Rewriting/Substitution/Parse.hs b/src/Data/Rewriting/Substitution/Parse.hs
--- a/src/Data/Rewriting/Substitution/Parse.hs
+++ b/src/Data/Rewriting/Substitution/Parse.hs
@@ -18,6 +18,7 @@
 import qualified Data.Rewriting.Term.Parse as Term
 import Control.Monad
 import Text.Parsec hiding (parse)
+import Text.Parsec.Prim (runP)
 
 
 parse :: (Ord v) =>
diff --git a/src/Data/Rewriting/Term/Parse.hs b/src/Data/Rewriting/Term/Parse.hs
--- a/src/Data/Rewriting/Term/Parse.hs
+++ b/src/Data/Rewriting/Term/Parse.hs
@@ -19,6 +19,7 @@
 import Control.Monad.Error ()
 import Data.Rewriting.Term.Type
 import Text.Parsec hiding (parse)
+import Text.Parsec.Prim (runP)
 
 -- | Like 'fromString', but the result is wrapped in the IO monad, making this
 -- function useful for interactive testing.
diff --git a/term-rewriting.cabal b/term-rewriting.cabal
--- a/term-rewriting.cabal
+++ b/term-rewriting.cabal
@@ -1,5 +1,5 @@
 name:          term-rewriting
-version:       0.1.1
+version:       0.1.2
 stability:     experimental
 author:        Martin Avanzini,
                Bertram Felgenhauer,
@@ -62,7 +62,7 @@
     build-depends:
         containers >= 0.3 && < 0.6,
         multiset >= 0.2 && < 0.3,
-        parsec >= 3 && < 3.2,
+        parsec >= 3.1.6 && < 3.2,
         union-find-array >= 0.1 && < 0.2,
         array >= 0.3 && < 0.6,
         ansi-wl-pprint >= 0.6 && < 0.7,
