diff --git a/priority-queue.cabal b/priority-queue.cabal
--- a/priority-queue.cabal
+++ b/priority-queue.cabal
@@ -1,5 +1,5 @@
 name:                   priority-queue
-version:                0.2.1
+version:                0.2.2
 stability:              provisional
 license:                BSD3
 license-file:           LICENSE
@@ -24,10 +24,20 @@
   extensions:           CPP
   
   if flag(splitBase)
-    build-depends:      base >= 3 && <5, containers
+    build-depends:      base >= 3 && <5, containers <0.4
   else
     build-depends:      base < 3
     cpp-options:        -DNoMinViewWithKey
+  
+  if !impl(ghc >= 6.12)
+      --   There are probably other tests that would tell us we have breakl
+      -- (eg perhaps impl(otherhc >= x.y)), but I don't know what they are.
+      -- it should be safe to assume it's not there, so this condition is 
+      -- intentionally conservative.
+      --   I tried just using another flag to discriminate on the version 
+      -- of 'containers', but then cabal wants to install whatever version 
+      -- it decides it likes best, which is a very bad thing to do.
+    cpp-options:        -DNoBreakL
   
   build-depends:        reord >= 0.0.0.2, stateref >= 0.3 && < 0.4,
                         queue >= 0.1.2 && < 0.2
diff --git a/src/Data/PriorityQueue.hs b/src/Data/PriorityQueue.hs
--- a/src/Data/PriorityQueue.hs
+++ b/src/Data/PriorityQueue.hs
@@ -51,7 +51,8 @@
 import Data.StateRef
 import Data.Ord.ReOrd
 import qualified Data.Map as M
-import Data.Sequence as Seq
+import qualified Data.Sequence as Seq
+import Data.Sequence (Seq, viewl, ViewL(..), (><), (<|), singleton, fromList)
 import Data.List as List
 import Data.Foldable as Foldable
 
@@ -172,6 +173,19 @@
 minViewWithKey = M.minViewWithKey
 #endif
 
+breakl :: (a -> Bool) -> Seq a -> (Seq a, Seq a)
+#ifdef NoBreakL
+-- breakl p xs = (fromList ys, fromList zs)
+--     where (ys, zs) = break p (toList xs)
+breakl p xs = case viewl xs of
+    EmptyL  -> (xs, xs)
+    x :< xs' 
+        | p x       -> (Seq.empty, xs)
+        | otherwise -> let (ys, zs) = breakl p xs' in (x <| ys, zs)
+#else
+breakl = Seq.breakl
+#endif
+
 -- |'on' combinator (Data.Function doesn't always have it)
 on :: (b -> b -> c) -> (a -> b) -> (a -> a -> c)
 op `on` f = \x y -> f x `op` f y
@@ -179,6 +193,6 @@
 -- |given a Seq known to contain at least one item matching the predicate,
 -- return the (first) matching item and the seq sans that element
 extractFirstWhere :: (a -> Bool) -> Seq a -> (a, Seq a)
-extractFirstWhere p xs = case Seq.breakl p xs of
+extractFirstWhere p xs = case breakl p xs of
     (noMatch, rest) -> case viewl rest of
         x :< rest -> (x, noMatch >< rest)
