diff --git a/Data/Ranges.hs b/Data/Ranges.hs
--- a/Data/Ranges.hs
+++ b/Data/Ranges.hs
@@ -38,8 +38,8 @@
 	| otherwise = error "lower bound must be smaller than upper bound"
 
 -- | Construct a 'Ranges' from a list of lower and upper bounds.
-ranges :: (Ord a) => [(a,a)] -> Ranges a
-ranges = Ranges . foldr (flip mergeRanges) [] . map (uncurry range)
+ranges :: (Ord a) => [Range a] -> Ranges a
+ranges = Ranges . foldr (flip mergeRanges) []
 
 -- | Tests if a given range contains a particular value.
 inRange :: (Ord a) => a -> Range a -> Bool
diff --git a/ranges.cabal b/ranges.cabal
--- a/ranges.cabal
+++ b/ranges.cabal
@@ -1,5 +1,5 @@
 Name: ranges
-Version: 0.2.1
+Version: 0.2.2
 Description: Ranges and some functions allowing things like fast membership
 	lookup on ranges with holes in them and so on.
 Synopsis: Ranges and various functions on them.
