diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+0.3.2:
+- relaxed constraint on containers package (no incompatible API changes)
 0.3.1:
 - fix spaceleak in split due to pairs holding on to first component
 - fix docs for splitKeepFront
diff --git a/Data/ByteString/Search/Internal/BoyerMoore.hs b/Data/ByteString/Search/Internal/BoyerMoore.hs
--- a/Data/ByteString/Search/Internal/BoyerMoore.hs
+++ b/Data/ByteString/Search/Internal/BoyerMoore.hs
@@ -308,10 +308,11 @@
           repl subst strs
               | null strs = []
               | otherwise =
-                let (pre, mtch) = breaker strs
-                in pre ++ case mtch of
-                           [] -> []
-                           _  -> subst (repl subst (ldrop 1 mtch))
+                case breaker strs of
+                  (pre, mtch) ->
+                        pre ++ case mtch of
+                                [] -> []
+                                _  -> subst (repl subst (ldrop 1 mtch))
       in \sub -> let repl1 = repl (substitution sub)
                  in L.fromChunks . repl1 . L.toChunks
     | otherwise =
diff --git a/stringsearch.cabal b/stringsearch.cabal
--- a/stringsearch.cabal
+++ b/stringsearch.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.3.1
+Version:             0.3.2
 
 -- A short (one-line) description of the package.
 Synopsis:            Fast searching, splitting and replacing of ByteStrings
@@ -80,7 +80,7 @@
   -- Packages needed in order to build this package.
   if flag(base4)
     Build-depends:   base >= 4 && < 5, array >= 0.3 && < 0.4,
-                     bytestring >= 0.9 && < 1, containers >= 0.3 && < 0.4
+                     bytestring >= 0.9 && < 1, containers >= 0.3 && < 0.5
   else
     if flag(base3)
       Build-depends: base >= 3 && < 4, array >= 0.1 && < 0.4,
