diff --git a/probability.cabal b/probability.cabal
--- a/probability.cabal
+++ b/probability.cabal
@@ -1,5 +1,5 @@
 Name:               probability
-Version:            0.2.4
+Version:            0.2.4.1
 License:            BSD3
 License-File:       COPYRIGHT
 Author:             Martin Erwig <erwig@eecs.oregonstate.edu>, Steve Kollmansberger
@@ -14,7 +14,7 @@
    but extends the List monad by a measure of probability.
    Small interface to R plotting.
 Tested-With:    GHC==6.4.1, GHC==6.8.2, GHC==6.12.3
-Tested-With:    GHC==7.0.2, GHC==7.2.2
+Tested-With:    GHC==7.0.2, GHC==7.2.2, GHC==7.4.2, GHC==7.8.2
 Cabal-Version:  >=1.6
 Build-Type:     Simple
 Data-Files:
@@ -28,7 +28,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/~thielema/probability/
-  tag:      0.2.4
+  tag:      0.2.4.1
 
 
 Flag splitBase
@@ -40,7 +40,7 @@
     transformers >=0.0.1 && <0.4
   If flag(splitBase)
     Build-Depends:
-      containers >=0.1 && <1,
+      containers >=0.1 && <0.6,
       random >=1.0 && <2,
       base >=2 && <5
   Else
diff --git a/src/Numeric/Probability/Distribution.hs b/src/Numeric/Probability/Distribution.hs
--- a/src/Numeric/Probability/Distribution.hs
+++ b/src/Numeric/Probability/Distribution.hs
@@ -8,10 +8,12 @@
 import Control.Applicative (Applicative(..))
 import Control.Monad (liftM, liftM2, join, )
 
+import qualified Data.Foldable as Fold
 import qualified Data.List.HT as ListHT
 import qualified Data.Map  as Map
 import qualified Data.List as List
 import qualified Data.Maybe as Maybe
+import Data.Tuple.HT (mapFst, )
 import Data.Ord.HT (comparing, )
 import Data.Eq.HT (equating, )
 
@@ -350,8 +352,10 @@
 above :: (Num prob, Ord prob, Ord a) =>
    prob -> T prob a -> T prob (Select a)
 above p (Cons d) =
-   let (d1,d2) = span (\(_,q)->q>=p) (sortP (norm' d))
-   in  Cons (List.map (\(x,q)->(Case x,q)) d1++[(Other,sumP d2)])
+   let (d1,d2) = Map.partition (>=p) $ Map.fromListWith (+) d
+   in  Cons $
+          (Other, Fold.sum d2) :
+          List.map (mapFst Case) (Map.toAscList d1)
 
 fromFreqs :: (Fractional prob) => [(a,prob)] -> T prob a
 fromFreqs xs = Cons (List.map (\(x,p)->(x,p/q)) xs)
