diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.3.3
+-----
+* Remove redundant constraints
+* Build warning-free on GHC 8.0-rc1
+
 0.3.2.1
 -------
 * Haddock fix
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -1,7 +1,7 @@
 heaps
 ======
 
-[![Build Status](https://secure.travis-ci.org/ekmett/heaps.png?branch=master)](http://travis-ci.org/ekmett/heaps)
+[![Hackage](https://img.shields.io/hackage/v/heaps.svg)](https://hackage.haskell.org/package/heaps) [![Build Status](https://secure.travis-ci.org/ekmett/heaps.png?branch=master)](http://travis-ci.org/ekmett/heaps)
 
 This package provides Brodal/Okasaki heaps. These are asymptotically optimal purely functional heaps.
 
diff --git a/heaps.cabal b/heaps.cabal
--- a/heaps.cabal
+++ b/heaps.cabal
@@ -1,5 +1,5 @@
 name:           heaps
-version:        0.3.2.1
+version:        0.3.3
 license:        BSD3
 license-file:   LICENSE
 author:         Edward A. Kmett
@@ -37,6 +37,4 @@
     doctest >= 0.9 && <= 0.10,
     filepath
   ghc-options: -Wall
-  if impl(ghc<7.6.1)
-    ghc-options: -Werror
   hs-source-dirs: tests
diff --git a/src/Data/Heap.hs b/src/Data/Heap.hs
--- a/src/Data/Heap.hs
+++ b/src/Data/Heap.hs
@@ -254,13 +254,13 @@
 --
 -- >>> uncons (fromList [2,1,3])
 -- Just (1,fromList [2,3])
-uncons :: Ord a => Heap a -> Maybe (a, Heap a)
+uncons :: Heap a -> Maybe (a, Heap a)
 uncons Empty = Nothing
 uncons l@(Heap _ _ t) = Just (root t, deleteMin l)
 {-# INLINE uncons #-}
 
 -- | Same as 'uncons'
-viewMin :: Ord a => Heap a -> Maybe (a, Heap a)
+viewMin :: Heap a -> Maybe (a, Heap a)
 viewMin = uncons
 {-# INLINE viewMin #-}
 
@@ -571,7 +571,7 @@
 --
 -- >>> concatMap (\a -> fromList [a,a+1]) (fromList [1,4])
 -- fromList [1,4,5,2]
-concatMap :: Ord b => (a -> Heap b) -> Heap a -> Heap b
+concatMap :: (a -> Heap b) -> Heap a -> Heap b
 concatMap _ Empty = Empty
 concatMap f h@(Heap _ _ t) = foldMap f t
 {-# INLINE concatMap #-}
@@ -745,7 +745,14 @@
 splitWithList f hp@(Heap _ leq _) = both (fromListWith leq) (f (toList hp))
 {-# INLINE splitWithList #-}
 
--- | explicit priority/payload tuples
+-- | Explicit priority/payload tuples. Useful to build a priority queue using
+-- a 'Heap', since the payload is ignored in the Eq/Ord instances.
+--
+-- @
+-- myHeap = 'fromList' ['Entry' 2 \"World", 'Entry' 1 \"Hello", 'Entry' 3 "!"]
+--
+-- ==> 'foldMap' 'payload' myHeap ≡ "HelloWorld!"
+-- @
 data Entry p a = Entry { priority :: p, payload :: a }
   deriving (Read,Show,Data,Typeable)
 
