diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,8 @@
+[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)
+
+To the extent possible under law, Johan Kiviniemi has waived all copyright and
+related or neighboring rights to `acme-zero` and `acme-one`. This work is
+published from: Suomi.
+
+* [Human-readable-summary of CC0](http://creativecommons.org/publicdomain/zero/1.0/)
+* [CC0 1.0 legal code](http://creativecommons.org/publicdomain/zero/1.0/legalcode)
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+# `acme-zero` and `acme-one`
+
+[Cabal][cabal] package dependencies form a commutative monoid with an absorbing
+element. They satisfy the following axioms:
+
+[cabal]: https://www.haskell.org/cabal/users-guide/developing-packages.html
+
+* **Associativity**
+
+  For all dependencies `a`, `b` and `c`,
+
+  ```
+  (a , b) , c = a , (b , c)
+  ```
+
+  In fact, the Cabal syntax does not even allow you to use the parentheses for
+  this reason.
+
+* **Commutativity**
+
+  For all dependencies `a` and `b`,
+
+  ```
+  a , b = b , a
+  ```
+
+* **Identity element**
+
+  For all dependencies `a`,
+
+  ```
+  acme-one , a = a , acme-one = a
+  ```
+
+  Depending on [`acme-one`][acme-one] has no additional effect.
+
+* **Absorbing element**
+
+  For all dependencies `a`,
+
+  ```
+  acme-zero , a = a , acme-zero = acme-zero
+  ```
+
+  Depending on [`acme-zero`][acme-zero] in addition has the same effect as
+  *only* depending on `acme-zero`.
+
+[acme-one]:  https://hackage.haskell.org/package/acme-one
+[acme-zero]: https://hackage.haskell.org/package/acme-zero
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/acme-zero.cabal b/acme-zero.cabal
new file mode 100644
--- /dev/null
+++ b/acme-zero.cabal
@@ -0,0 +1,67 @@
+name: acme-zero
+version: 0.0.1
+synopsis: The absorbing element of package dependencies
+description:
+  <https://www.haskell.org/cabal/users-guide/developing-packages.html Cabal>
+  package dependencies form a commutative monoid with an absorbing element.
+  They satisfy the following axioms:
+  .
+  [Associativity]
+  .
+  For all dependencies @a@, @b@ and @c@,
+  .
+  @
+  (a , b) , c = a , (b , c)
+  @
+  .
+  In fact, the Cabal syntax does not even allow you to use the parentheses for
+  this reason.
+  .
+  [Commutativity]
+  .
+  For all dependencies @a@ and @b@,
+  .
+  @
+  a , b = b , a
+  @
+  .
+  [Identity element]
+  .
+  For all dependencies @a@,
+  .
+  @
+  acme-one , a = a , acme-one = a
+  @
+  .
+  Depending on @<https://hackage.haskell.org/package/acme-one acme-one>@ has no
+  additional effect.
+  .
+  [Absorbing element]
+  .
+  For all dependencies @a@,
+  .
+  @
+  acme-zero , a = a , acme-zero = acme-zero
+  @
+  .
+  Depending on @<https://hackage.haskell.org/package/acme-zero acme-zero>@ in
+  addition has the same effect as /only/ depending on @acme-zero@.
+license: PublicDomain
+license-file: LICENSE.md
+author: Johan Kiviniemi <devel@johan.kiviniemi.name>
+maintainer: Johan Kiviniemi <devel@johan.kiviniemi.name>
+stability: provisional
+homepage: https://github.com/ion1/acme-zero-one
+bug-reports: https://github.com/ion1/acme-zero-one/issues
+category: ACME
+build-type: Simple
+extra-source-files: README.md
+cabal-version: >= 1.10
+
+source-repository head
+  type: git
+  location: https://github.com/ion1/acme-zero-one.git
+
+library
+  build-depends: acme-zero == 0
+  default-language: Haskell2010
