diff --git a/Numeric/Natural/Internal.hs b/Numeric/Natural/Internal.hs
--- a/Numeric/Natural/Internal.hs
+++ b/Numeric/Natural/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Numeric.Natural.Internal
@@ -59,6 +60,9 @@
   shiftR (Natural n) = Natural . shiftR n
   rotateL (Natural n) = Natural . rotateL n
   rotateR (Natural n) = Natural . rotateR n
+#if MIN_VERSION_base(4,6,0)
+  popCount = popCountDefault
+#endif
 
 instance Real Natural where
   toRational (Natural a) = toRational a
diff --git a/README.markdown b/README.markdown
new file mode 100644
--- /dev/null
+++ b/README.markdown
@@ -0,0 +1,18 @@
+semigroups
+==========
+
+[![Build Status](https://secure.travis-ci.org/ekmett/semigroups.png?branch=master)](http://travis-ci.org/ekmett/semigroups)
+
+
+In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.
+
+Semigroups appear all over the place, except in the Haskell Prelude, so they are packaged here.
+
+Contact Information
+-------------------
+
+Contributions and bug reports are welcome!
+
+Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.
+
+-Edward Kmett
diff --git a/semigroups.cabal b/semigroups.cabal
--- a/semigroups.cabal
+++ b/semigroups.cabal
@@ -1,6 +1,6 @@
 name:          semigroups
 category:      Algebra, Data, Data Structures, Math
-version:       0.8.3.2
+version:       0.8.4
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -16,7 +16,7 @@
     .
     In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.
 build-type:    Simple
-extra-source-files: .travis.yml
+extra-source-files: .travis.yml README.markdown
 
 source-repository head
   type: git
