diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,15 @@
+# Changelog for secret-sharing
+
+## Unreleased changes
+
+* None
+
+## 1.0.1.2
+
+* Updated README.
+* Minor cleanups.
+
+## 1.0.1.1
+
+* Make it build with `stack`.
+* Updated dependencies.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+Implementation of an (`m`,`n`)-threshold secret sharing scheme.
+A given ByteString `b` (the secret) is split into `n` shares,
+and any `m` shares are sufficient to reconstruct `b`.
+The scheme preserves information-theoretic perfect secrecy in the sense that the knowledge of up
+to `m-1` shares does not reveal any information about the secret `b`.
+
+*Example in GHCi:*
+Suppose that you want to split the string "my secret data" into n=5 shares such that
+at least m=3 shares are necessary to reconstruct the secret.
+
+~~~ {.haskell}
+❯ :m + Data.ByteString.Lazy.Char8 Crypto.SecretSharing
+❯ let secret = pack "my secret message!"
+❯ shares <- encode 3 5 secret
+❯ mapM_ (Prelude.putStrLn . show) shares -- each share should be deposited at a different site.
+(1,"\134\168\154\SUBV\248\CAN:\250y<\GS\EOT*\t\222_\140")
+(2,"\225\206\241\136\SUBse\199r\169\162\131D4\179P\210x")
+(3,"~\238%\192\174\206\\\f\214\173\162\148\&3\139_\183\193\235")
+(4,"Z\b0\188\DC2\f\247\f,\136\&6S\209\&5\n\FS,\223")
+(5,"x\EM\CAN\DELI*<\193q7d\192!/\183v\DC3T")
+❯ let shares' = Prelude.drop 2 shares
+❯ decode shares'
+"my secret message!"
+~~~
+
+The mathematics behind the secret sharing scheme is described in:
+\"/How to share a secret/.\" by Adi Shamir.
+In Communications of the ACM 22 (11): 612–613, 1979.
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/secret-sharing.cabal b/secret-sharing.cabal
--- a/secret-sharing.cabal
+++ b/secret-sharing.cabal
@@ -1,70 +1,65 @@
-name:                secret-sharing
-version:             1.0.1.0
-synopsis:            Information-theoretic secure secret sharing
-description:
- Implementation of an (@m@,@n@)-threshold secret sharing scheme.
- A given ByteString @b@ (the secret) is split into @n@ shares,
- and any @m@ shares are sufficient to reconstruct @b@.
- The scheme preserves information-theoretic perfect secrecy in the sense that the knowledge of up
- to @m-1@ shares does not reveal any information about the secret @b@.
- .
- /Example in GHCi:/
- Suppose that you want to split the string \"my secret data\" into n=5 shares such that
- at least m=3 shares are necessary to reconstruct the secret.
- .
- >> :m + Data.ByteString.Lazy.Char8 Crypto.SecretSharing
- >> let secret = pack "my secret message!"
- >> shares <- encode 3 5 secret
- >> mapM_ (Prelude.putStrLn . show) shares -- each share should be deposited at a different site.
- > (1,"\134\168\154\SUBV\248\CAN:\250y<\GS\EOT*\t\222_\140")
- > (2,"\225\206\241\136\SUBse\199r\169\162\131D4\179P\210x")
- > (3,"~\238%\192\174\206\\\f\214\173\162\148\&3\139_\183\193\235")
- > (4,"Z\b0\188\DC2\f\247\f,\136\&6S\209\&5\n\FS,\223")
- > (5,"x\EM\CAN\DELI*<\193q7d\192!/\183v\DC3T")
- >> let shares' = Prelude.drop 2 shares
- >> decode shares'
- > "my secret message!"
- .
- The mathematics behind the secret sharing scheme is described in:
- \"/How to share a secret/.\" by Adi Shamir.
- In Communications of the ACM 22 (11): 612–613, 1979.
-license:             LGPL-2.1
-license-file:        LICENSE
-author:              Peter Robinson <peter.robinson@monoid.at>
-maintainer:          peter.robinson@monoid.at
-copyright:           Peter Robinson 2014
-category:            Cryptography
-build-type:          Simple
-cabal-version:       >=1.8
-homepage:            https://github.com/pwrobinson/secret-sharing
-stability:           experimental
+cabal-version: 1.12
 
+-- This file has been generated from package.yaml by hpack version 0.31.2.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: c21dac92ca7fbfcbf556d7a2483bfb7a84eaaae8527274e6796ab95b958a0492
+
+name:           secret-sharing
+version:        1.0.1.2
+synopsis:       Information-theoretic secure secret sharing
+description:    Please see the README on GitHub at <https://github.com/pwrobinson/secret-sharing#readme>
+category:       Data, Cryptography
+homepage:       https://github.com/pwrobinson/secret-sharing#readme
+bug-reports:    https://github.com/pwrobinson/secret-sharing/issues
+author:         Peter Robinson
+maintainer:     peter@lowerbound.io
+copyright:      2014-2020 Peter Robinson
+license:        LGPL-2.1
+license-file:   LICENSE
+build-type:     Simple
+extra-source-files:
+    README.md
+    ChangeLog.md
+
 source-repository head
   type: git
   location: https://github.com/pwrobinson/secret-sharing
 
 library
-  hs-source-dirs:    src
-  exposed-modules:   Crypto.SecretSharing
-                     Crypto.SecretSharing.Internal
-
-  build-depends:    base >=4.6 && < 5,
-                    bytestring ==0.10.*,
-                    dice-entropy-conduit >= 1.0.0.0,
-                    binary >=0.5.1.1,
-                    vector >=0.10.11.0,
-                    finite-field >=0.8.0
-  ghc-options:      -Wall
-
+  exposed-modules:
+      Crypto.SecretSharing
+      Crypto.SecretSharing.Internal
+  other-modules:
+      Paths_secret_sharing
+  hs-source-dirs:
+      src
+  build-depends:
+      base >=4.6 && <5
+    , binary >=0.5.1.1
+    , bytestring >=0.10.0.2
+    , dice-entropy-conduit >=1.0.0.0
+    , finite-field >=0.8.0
+    , vector >=0.10.11.0
+  default-language: Haskell2010
 
-test-suite Main
-  type:            exitcode-stdio-1.0
-  x-uses-tf:       true
-  build-depends:   base >= 4 && < 5,
-                   bytestring ==0.10.*,
-                   QuickCheck >= 2.4,
-                   secret-sharing,
-                   test-framework >= 0.4.1,
-                   test-framework-quickcheck2
-  hs-source-dirs:  tests
-  main-is:         Tests.hs
+test-suite secret-sharing-test
+  type: exitcode-stdio-1.0
+  main-is: Tests.hs
+  other-modules:
+      Paths_secret_sharing
+  hs-source-dirs:
+      tests
+  build-depends:
+      QuickCheck >=2.4
+    , base >=4 && <5
+    , binary >=0.5.1.1
+    , bytestring >=0.10.0.2
+    , dice-entropy-conduit >=1.0.0.0
+    , finite-field >=0.8.0
+    , secret-sharing
+    , test-framework >=0.4.1
+    , test-framework-quickcheck2
+    , vector >=0.10.11.0
+  default-language: Haskell2010
diff --git a/src/Crypto/SecretSharing.hs b/src/Crypto/SecretSharing.hs
--- a/src/Crypto/SecretSharing.hs
+++ b/src/Crypto/SecretSharing.hs
@@ -3,19 +3,18 @@
 -- Module      :  Crypto.SecretSharing
 -- Copyright   :  Peter Robinson 2014
 -- License     :  LGPL
--- 
--- Maintainer  :  Peter Robinson <peter.robinson@monoid.at>
+--
 -- Stability   :  experimental
 -- Portability :  portable
--- 
+--
 -- Implementation of an (@m@,@n@)-threshold secret sharing scheme.
--- A given ByteString @b@ (the secret) is split into @n@ shares, 
+-- A given ByteString @b@ (the secret) is split into @n@ shares,
 -- and any @m@ shares are sufficient to reconstruct @b@.
 -- The scheme preserves perfect secrecy in the sense that the knowledge of up
 -- to @m-1@ shares does not reveal any information about the secret @b@.
 --
 -- Typically, there are @n@ parties and we would like to give the @i@-th party
--- the @i@-share of each byte. 
+-- the @i@-share of each byte.
 -- For example, to encode a bytestring @secret@ as @10@ shares, any @5@ of which
 -- are sufficient for reconstruction we could write:
 --
@@ -27,7 +26,7 @@
 -- The mathematics behind the secret sharing scheme is described in:
 -- \"How to share a secret.\" by Shamir, Adi.
 -- In Communications of the ACM 22 (11): 612–613, 1979.
--- 
+--
 --
 -----------------------------------------------------------------------------
 
diff --git a/src/Crypto/SecretSharing/Internal.hs b/src/Crypto/SecretSharing/Internal.hs
--- a/src/Crypto/SecretSharing/Internal.hs
+++ b/src/Crypto/SecretSharing/Internal.hs
@@ -5,7 +5,6 @@
 -- Copyright   :  Peter Robinson 2014
 -- License     :  LGPL
 --
--- Maintainer  :  Peter Robinson <peter.robinson@monoid.at>
 -- Stability   :  experimental
 -- Portability :  portable
 --
@@ -158,4 +157,3 @@
   foldr (\c res -> c + (x * res)) 0 coeffs
 --  let clist = zipWith (\pow c -> (\x -> c * (x^pow))) [0..] coeffs
 --  in L.foldl' (+) 0 [ c x | c <- clist ]
-
