diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdcaba0..4a800ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,95 @@
+
+# [0.4.0](https://github.com/multiformats/js-multicodec/compare/v0.3.0...v0.4.0) (2019-01-08)
+
+
+* Revert "feat: make adding a custom codec possible" ([9e251ce](https://github.com/multiformats/js-multicodec/commit/9e251ce))
+
+
+### Chores
+
+* fully automatic table generation ([f3d8c0d](https://github.com/multiformats/js-multicodec/commit/f3d8c0d))
+
+
+### BREAKING CHANGES
+
+* multibase is not part of this package anymore
+
+As multibase works differently from multicodec, those codecs
+were [removed from the multicodec table], hence those are also
+removed from this implementation as we have automatic
+conversion from the upstream table.
+
+[removed from the multicodec table]:
+https://github.com/multiformats/multicodec/commit/1ec0e971d589d2fd5d5418b212846301909525bd
+* the `addCodec()` function is removed
+
+The `addCodec()` function is removed as it doesn't work as expected.
+Things break as soon as the module is loaded several times, which
+can happen if dependencies require a different version.
+
+Steps to reproduce this problem:
+
+```console
+$ mkdir addcodecbug
+$ cd addcodecbug
+$ npm install cids@0.5.7 multicodec@0.3.0
+npm WARN saveError ENOENT: no such file or directory, open '/tmp/addcodecbug/package.json'
+npm notice created a lockfile as package-lock.json. You should commit this file.
+npm WARN enoent ENOENT: no such file or directory, open '/tmp/addcodecbug/package.json'
+npm WARN addcodecbug No description
+npm WARN addcodecbug No repository field.
+npm WARN addcodecbug No README data
+npm WARN addcodecbug No license field.
+
++ multicodec@0.3.0
++ cids@0.5.7
+added 10 packages from 35 contributors and audited 14 packages in 1.363s
+found 0 vulnerabilities
+$ cat > index.js <<'EOF'
+// Uses multicodec v0.2.7
+const CID = require('cids')
+// Imports multicodec v0.3.0
+const multicodec = require('multicodec')
+
+multicodec.addCodec('my-codec', Buffer.from('5566', 'hex'))
+// Works, the codec was added
+console.log(multicodec.getCodeVarint('my-codec'))
+
+const multihash = Buffer.from(
+ '1220b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9',
+ 'hex')
+const cid = new CID(1, 'my-codec', multihash)
+console.log(cid)
+// Fails as `my-codec` was only added to the multicodec module loaded by this
+// file, and not the one loaded by `cids`.
+console.log(cid.toBaseEncodedString())
+EOF
+$ node index.js
+
+CID {
+ codec: 'my-codec',
+ version: 1,
+ multihash:
+ }
+/tmp/addcodecbug/node_modules/cids/node_modules/multicodec/src/index.js:76
+ throw new Error('Codec `' + codecName + '` not found')
+ ^
+
+Error: Codec `my-codec` not found
+ at Object.exports.getCodeVarint (/tmp/addcodecbug/node_modules/cids/node_modules/multicodec/src/index.js:76:11)
+ at ClassIsWrapper.get buffer [as buffer] (/tmp/addcodecbug/node_modules/cids/src/index.js:131:22)
+ at ClassIsWrapper.toBaseEncodedString (/tmp/addcodecbug/node_modules/cids/src/index.js:202:44)
+ at Object. (/tmp/addcodecbug/index.js:17:17)
+ at Module._compile (internal/modules/cjs/loader.js:702:30)
+ at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
+ at Module.load (internal/modules/cjs/loader.js:612:32)
+ at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
+ at Function.Module._load (internal/modules/cjs/loader.js:543:3)
+ at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
+```
+
+
+
# [0.3.0](https://github.com/multiformats/js-multicodec/compare/v0.2.7...v0.3.0) (2018-12-18)