diff --git a/build.sh b/build.sh
new file mode 100644
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+dir=$(mktemp -d dist-docs.XXXXXX)
+trap 'rm -r "$dir"' EXIT
+
+cabal haddock --builddir="$dir" --for-hackage --haddock-option=--hyperlinked-source
+# Starting with cabal 2.0, `--publish` is needed for uploading to non-candidate releases
+cabal upload -d $dir/*-docs.tar.gz
diff --git a/doldol.cabal b/doldol.cabal
--- a/doldol.cabal
+++ b/doldol.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
 name:           doldol
-version:        0.4.1.1
+version:        0.4.1.2
 synopsis:       Flag packer & handler for flaggable data
 description:    Please see the README on GitHub at <https://github.com/QuietJoon/doldol#readme>
 category:       Data
-homepage:       https://github.com/QuietJoon/doldol
+homepage:       https://github.com/QuietJoon/doldol/
 bug-reports:    https://github.com/QuietJoon/doldol/issues
 author:         YongJoon Joe
 maintainer:     developer+doldol@quietjoon.net
diff --git a/src/Data/Flag/Simple.hs b/src/Data/Flag/Simple.hs
--- a/src/Data/Flag/Simple.hs
+++ b/src/Data/Flag/Simple.hs
@@ -21,7 +21,7 @@
 
 -- | Encode `Flag` from a given collection of `Enum` e
 encodeFlag :: (Foldable f, Bounded e, Enum e) => f e -> Flag
-encodeFlag = Prelude.foldr (\x b -> setBit b (fromEnum x)) zeroBits
+encodeFlag = Data.Foldable.foldr' (\x b -> setBit b (fromEnum x)) zeroBits
 
 -- | Decode `Flag` to a list of `Enum` e
 decodeFlag :: Enum e => Flag -> [e]
