diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -0,0 +1,14 @@
+hydrogen-multimap
+=================
+
+[![Build Status](https://travis-ci.org/scravy/hydrogen-multimap.svg?branch=master)](https://travis-ci.org/scravy/hydrogen-multimap)
+
+A very simple, basic implementation of a MultiMap (a map that associates
+a single key with multiple values).
+
+This MultiMap is basically a `Map k [v]` (multiple keys are backed by Lists).
+
++ Hackage: [`hackage.haskell.org/package/hydrogen-multimap`](http://hackage.haskell.org/package/hydrogen-multimap)
++ Haddock: [`hackage.haskell.org/package/hydrogen-multimap-0.1/docs/Hydrogen-MultiMap.html`](http://hackage.haskell.org/package/hydrogen-multimap-0.1/docs/Hydrogen-MultiMap.html)
+
+
diff --git a/hydrogen-multimap.cabal b/hydrogen-multimap.cabal
--- a/hydrogen-multimap.cabal
+++ b/hydrogen-multimap.cabal
@@ -1,5 +1,5 @@
 name:                 hydrogen-multimap
-version:              0.1
+version:              0.3
 homepage:             https://scravy.de/hydrogen-multimap/
 synopsis:             Hydrogen Multimap
 license:              MIT
@@ -17,8 +17,9 @@
 
 library
   exposed-modules:    Hydrogen.MultiMap
-  build-depends:      base ==4.7.*
-                      , containers ==0.5.*
+  build-depends:      base >=4.5 && <5
+                      , containers >=0.4.2.1
+                      , ghc-prim
   hs-source-dirs:     src
   ghc-options:        -Wall
   default-language:   Haskell2010
@@ -29,9 +30,5 @@
                        , DeriveGeneric
                        , DeriveTraversable
                        , GADTs
-                       , LambdaCase
-                       , MultiWayIf
-                       , NoImplicitPrelude
                        , ScopedTypeVariables
-                       , TypeFamilies
 
diff --git a/src/Hydrogen/MultiMap.hs b/src/Hydrogen/MultiMap.hs
--- a/src/Hydrogen/MultiMap.hs
+++ b/src/Hydrogen/MultiMap.hs
@@ -30,12 +30,13 @@
 
 import GHC.Generics (Generic)
 
-import Data.Map (Map)
-import Data.Set (Set)
-
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 import qualified Data.List as List
 
+type Map = Map.Map
+type Set = Set.Set
+
 data MultiMap k v = MultiMap (Map k [v]) Int
   deriving (Eq, Ord, Functor, Foldable, Traversable, Generic, Typeable)
 
@@ -115,10 +116,16 @@
 fromList' :: Ord k => [(k, v)] -> MultiMap k v
 fromList' = foldr (uncurry insert) empty
 
-fromSet :: Ord k => (k -> [v]) -> Set k -> MultiMap k v
+fromSet :: forall k. forall v. Ord k => (k -> [v]) -> Set k -> MultiMap k v
 fromSet f s = MultiMap m (count m)
   where
+    m :: Map k [v]
+#if MIN_VERSION_containers(5,0,0)
     m = Map.fromSet f s
+#else
+    m = Map.fromList $ zip xs (map f xs)
+    xs = Set.toList s
+#endif
 
 union :: Ord k => MultiMap k v -> MultiMap k v -> MultiMap k v
 union (MultiMap m1 s1) (MultiMap m2 s2) = MultiMap (Map.unionWith (++) m1 m2) (s1 + s2)
