diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,25 @@
+# hscuid [![Build Status](https://travis-ci.org/eightyeight/hscuid.svg?branch=master)](https://travis-ci.org/eightyeight/hscuid)
+
+A Haskell port of the [JavaScript library][cuid] for collision-resistant identifiers.
+To install, [`cabal install hscuid`][hscuid].
+
+## What is a CUID?
+
+CUIDs are short random strings designed so that you can generate a lot of them over many different machines and not get collisions.
+They are designed to be usable in many situations, such as HTML element IDs.
+You can read more about them at [usecuid.org][].
+
+## How do I use this library?
+
+```haskell
+>>> import Web.Cuid (newCuid, newSlug)
+>>> newCuid
+"cib3c3tcu0000zwowx9ho2gh4"
+>>> newSlug
+"y900001wmf"
+```
+
+[cuid]: https://github.com/ericelliott/cuid
+[hscuid]: https://hackage.haskell.org/package/hscuid
+[semver]: http://semver.org
+[usecuid.org]: https://usecuid.org
diff --git a/hscuid.cabal b/hscuid.cabal
--- a/hscuid.cabal
+++ b/hscuid.cabal
@@ -2,30 +2,9 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                hscuid
-version:             1.1.0
+version:             1.2.0.0
 synopsis:            Collision-resistant IDs
-description:         CUIDs are designed for horizontal scalability and collision
-                     resistance.
-                     Read more about them at <https://usecuid.org usecuid.org>.
-                     Here's everything you need to know:
-                     .
-                     >>> import Web.Cuid (newCuid, newSlug)
-                     >>> newCuid
-                     "cib3c3tcu0000zwowx9ho2gh4"
-                     >>> newSlug
-                     "c900001wmf"
-                     .
-                     This module does not use crypto-strength sources of
-                     randomness.
-                     Use at your own peril!
-                     .
-                     For better or worse, this module uses semantic versioning
-                     (see <http://semver.org/ semver.org>).
-                     That is, if you want to depend upon, for example, version 1
-                     of the API, you should add @hscuid ==1.*@ to your Cabal
-                     file. No breaking changes will be (deliberately) introduced
-                     under that version number.
-
+description:         See README (link below).
 homepage:            https://github.com/eightyeight/hscuid
 license:             BSD3
 license-file:        LICENSE
@@ -35,30 +14,31 @@
 category:            Web
 build-type:          Simple
 cabal-version:       >=1.8
+extra-source-files:  README.md
 
 library
   hs-source-dirs:      lib
   exposed-modules:     Web.Cuid
   other-modules:       Web.Cuid.Internal
-  build-depends:       base ==4.*,
-                       formatting ==6.*,
-                       time ==1.*,
-                       random ==1.*,
-                       transformers ==0.4.*,
-                       hostname ==1.*,
-                       text ==1.*
+  build-depends:       base >= 4.6 && < 5,
+                       formatting >= 6.2,
+                       time >= 1.4,
+                       random >= 1.0,
+                       transformers >= 0.4,
+                       hostname >= 1.0,
+                       text >= 1.2
   if os(windows)
-    build-depends:     Win32 ==2.*
+    build-depends:     Win32 >= 2.3
     extra-libraries:   kernel32
   else
-    build-depends:     unix ==2.*
+    build-depends:     unix >= 2.6
   ghc-options:         -Wall
 
 test-suite hscuid-test
   type:                exitcode-stdio-1.0
   hs-source-dirs:      test
   main-is:             Test.hs
-  build-depends:       base ==4.*,
+  build-depends:       base >= 4.6 && < 5,
                        containers ==0.5.*,
                        hscuid
   ghc-options:         -Wall -rtsopts -O2
