diff --git a/CHANGES.md b/CHANGES.md
index 8302610585c92e5a18d045adc4ab0358531cb9fc..1c3d575c37473d544968bc4fe64d1140d9aa054c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,64 @@
+Synapse 0.33.9 (2018-11-19)
+===========================
+
+No significant changes.
+
+
+Synapse 0.33.9rc1 (2018-11-14)
+==============================
+
+Features
+--------
+
+- Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled. ([\#4004](https://github.com/matrix-org/synapse/issues/4004), [\#4133](https://github.com/matrix-org/synapse/issues/4133), [\#4142](https://github.com/matrix-org/synapse/issues/4142), [\#4184](https://github.com/matrix-org/synapse/issues/4184))
+- Support for replacing rooms with new ones ([\#4091](https://github.com/matrix-org/synapse/issues/4091), [\#4099](https://github.com/matrix-org/synapse/issues/4099), [\#4100](https://github.com/matrix-org/synapse/issues/4100), [\#4101](https://github.com/matrix-org/synapse/issues/4101))
+
+
+Bugfixes
+--------
+
+- Fix exceptions when using the email mailer on Python 3. ([\#4095](https://github.com/matrix-org/synapse/issues/4095))
+- Fix e2e key backup with more than 9 backup versions ([\#4113](https://github.com/matrix-org/synapse/issues/4113))
+- Searches that request profile info now no longer fail with a 500. ([\#4122](https://github.com/matrix-org/synapse/issues/4122))
+- fix return code of empty key backups ([\#4123](https://github.com/matrix-org/synapse/issues/4123))
+- If the typing stream ID goes backwards (as on a worker when the master restarts), the worker's typing handler will no longer erroneously report rooms containing new typing events. ([\#4127](https://github.com/matrix-org/synapse/issues/4127))
+- Fix table lock of device_lists_remote_cache which could freeze the application ([\#4132](https://github.com/matrix-org/synapse/issues/4132))
+- Fix exception when using state res v2 algorithm ([\#4135](https://github.com/matrix-org/synapse/issues/4135))
+- Generating the user consent URI no longer fails on Python 3. ([\#4140](https://github.com/matrix-org/synapse/issues/4140), [\#4163](https://github.com/matrix-org/synapse/issues/4163))
+- Loading URL previews from the DB cache on Postgres will no longer cause Unicode type errors when responding to the request, and URL previews will no longer fail if the remote server returns a Content-Type header with the chartype in quotes. ([\#4157](https://github.com/matrix-org/synapse/issues/4157))
+- The hash_password script now works on Python 3. ([\#4161](https://github.com/matrix-org/synapse/issues/4161))
+- Fix noop checks when updating device keys, reducing spurious device list update notifications. ([\#4164](https://github.com/matrix-org/synapse/issues/4164))
+
+
+Deprecations and Removals
+-------------------------
+
+- The disused and un-specced identicon generator has been removed. ([\#4106](https://github.com/matrix-org/synapse/issues/4106))
+- The obsolete and non-functional /pull federation endpoint has been removed. ([\#4118](https://github.com/matrix-org/synapse/issues/4118))
+- The deprecated v1 key exchange endpoints have been removed. ([\#4119](https://github.com/matrix-org/synapse/issues/4119))
+- Synapse will no longer fetch keys using the fallback deprecated v1 key exchange method and will now always use v2. ([\#4120](https://github.com/matrix-org/synapse/issues/4120))
+
+
+Internal Changes
+----------------
+
+- Fix build of Docker image with docker-compose ([\#3778](https://github.com/matrix-org/synapse/issues/3778))
+- Delete unreferenced state groups during history purge ([\#4006](https://github.com/matrix-org/synapse/issues/4006))
+- The "Received rdata" log messages on workers is now logged at DEBUG, not INFO. ([\#4108](https://github.com/matrix-org/synapse/issues/4108))
+- Reduce replication traffic for device lists ([\#4109](https://github.com/matrix-org/synapse/issues/4109))
+- Fix `synapse_replication_tcp_protocol_*_commands` metric label to be full command name, rather than just the first character ([\#4110](https://github.com/matrix-org/synapse/issues/4110))
+- Log some bits about room creation ([\#4121](https://github.com/matrix-org/synapse/issues/4121))
+- Fix `tox` failure on old systems ([\#4124](https://github.com/matrix-org/synapse/issues/4124))
+- Add STATE_V2_TEST room version ([\#4128](https://github.com/matrix-org/synapse/issues/4128))
+- Clean up event accesses and tests ([\#4137](https://github.com/matrix-org/synapse/issues/4137))
+- The default logging config will now set an explicit log file encoding of UTF-8. ([\#4138](https://github.com/matrix-org/synapse/issues/4138))
+- Add helpers functions for getting prev and auth events of an event ([\#4139](https://github.com/matrix-org/synapse/issues/4139))
+- Add some tests for the HTTP pusher. ([\#4149](https://github.com/matrix-org/synapse/issues/4149))
+- add purge_history.sh and purge_remote_media.sh scripts to contrib/ ([\#4155](https://github.com/matrix-org/synapse/issues/4155))
+- HTTP tests have been refactored to contain less boilerplate. ([\#4156](https://github.com/matrix-org/synapse/issues/4156))
+- Drop incoming events from federation for unknown rooms ([\#4165](https://github.com/matrix-org/synapse/issues/4165))
+
+
 Synapse 0.33.8 (2018-11-01)
 ===========================
 
diff --git a/changelog.d/3778.misc b/changelog.d/3778.misc
deleted file mode 100644
index b78a2c9f42b375c468e8ce21f93622762001db07..0000000000000000000000000000000000000000
--- a/changelog.d/3778.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix build of Docker image with docker-compose
diff --git a/changelog.d/4004.feature b/changelog.d/4004.feature
deleted file mode 100644
index 89975f4c6e566b3d891cad698ee17e687115d16e..0000000000000000000000000000000000000000
--- a/changelog.d/4004.feature
+++ /dev/null
@@ -1 +0,0 @@
-Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled.
diff --git a/changelog.d/4006.misc b/changelog.d/4006.misc
deleted file mode 100644
index 35ffa1c2d295043b47b3e6e306d70ddd25231bca..0000000000000000000000000000000000000000
--- a/changelog.d/4006.misc
+++ /dev/null
@@ -1 +0,0 @@
-Delete unreferenced state groups during history purge
diff --git a/changelog.d/4091.feature b/changelog.d/4091.feature
deleted file mode 100644
index a3f7dbdcdd7ee0e54e9c927cc919d9154356e151..0000000000000000000000000000000000000000
--- a/changelog.d/4091.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support for replacing rooms with new ones
diff --git a/changelog.d/4095.bugfix b/changelog.d/4095.bugfix
deleted file mode 100644
index 76ee7148c27201cdfd03656b9844169afb2f18a1..0000000000000000000000000000000000000000
--- a/changelog.d/4095.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix exceptions when using the email mailer on Python 3.
diff --git a/changelog.d/4099.feature b/changelog.d/4099.feature
deleted file mode 100644
index a3f7dbdcdd7ee0e54e9c927cc919d9154356e151..0000000000000000000000000000000000000000
--- a/changelog.d/4099.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support for replacing rooms with new ones
diff --git a/changelog.d/4100.feature b/changelog.d/4100.feature
deleted file mode 100644
index a3f7dbdcdd7ee0e54e9c927cc919d9154356e151..0000000000000000000000000000000000000000
--- a/changelog.d/4100.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support for replacing rooms with new ones
diff --git a/changelog.d/4101.feature b/changelog.d/4101.feature
deleted file mode 100644
index a3f7dbdcdd7ee0e54e9c927cc919d9154356e151..0000000000000000000000000000000000000000
--- a/changelog.d/4101.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support for replacing rooms with new ones
diff --git a/changelog.d/4106.removal b/changelog.d/4106.removal
deleted file mode 100644
index 7e63208daa508694d9ebb7e46da05a238321f34a..0000000000000000000000000000000000000000
--- a/changelog.d/4106.removal
+++ /dev/null
@@ -1 +0,0 @@
-The disused and un-specced identicon generator has been removed.
diff --git a/changelog.d/4108.misc b/changelog.d/4108.misc
deleted file mode 100644
index 85810c3d836517165f7bf3bb71008f73af73563b..0000000000000000000000000000000000000000
--- a/changelog.d/4108.misc
+++ /dev/null
@@ -1 +0,0 @@
-The "Received rdata" log messages on workers is now logged at DEBUG, not INFO.
diff --git a/changelog.d/4109.misc b/changelog.d/4109.misc
deleted file mode 100644
index 566c6831193130f7d715af4752cf81b9b51157a0..0000000000000000000000000000000000000000
--- a/changelog.d/4109.misc
+++ /dev/null
@@ -1 +0,0 @@
-Reduce replication traffic for device lists
diff --git a/changelog.d/4110.misc b/changelog.d/4110.misc
deleted file mode 100644
index a50327ae34d294e4e133919aa679cff6255f4c87..0000000000000000000000000000000000000000
--- a/changelog.d/4110.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix `synapse_replication_tcp_protocol_*_commands` metric label to be full command name, rather than just the first character
diff --git a/changelog.d/4113.bugfix b/changelog.d/4113.bugfix
deleted file mode 100644
index 7f9d8ee0326ad53b4137d2102295399811e04685..0000000000000000000000000000000000000000
--- a/changelog.d/4113.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix e2e key backup with more than 9 backup versions
diff --git a/changelog.d/4118.removal b/changelog.d/4118.removal
deleted file mode 100644
index 6fb1d67b475b9ee0ad5572b9f705f79d3fc4b877..0000000000000000000000000000000000000000
--- a/changelog.d/4118.removal
+++ /dev/null
@@ -1 +0,0 @@
-The obsolete and non-functional /pull federation endpoint has been removed.
diff --git a/changelog.d/4119.removal b/changelog.d/4119.removal
deleted file mode 100644
index 81383ece6b669cc313fd908e29e939d078095734..0000000000000000000000000000000000000000
--- a/changelog.d/4119.removal
+++ /dev/null
@@ -1 +0,0 @@
-The deprecated v1 key exchange endpoints have been removed.
diff --git a/changelog.d/4120.removal b/changelog.d/4120.removal
deleted file mode 100644
index a7a567098f8dfe2f5317b83bd3e9095d5b258d36..0000000000000000000000000000000000000000
--- a/changelog.d/4120.removal
+++ /dev/null
@@ -1 +0,0 @@
-Synapse will no longer fetch keys using the fallback deprecated v1 key exchange method and will now always use v2.
diff --git a/changelog.d/4121.misc b/changelog.d/4121.misc
deleted file mode 100644
index 9c29d80c3ffe1465f3b10744fd61737a4199543f..0000000000000000000000000000000000000000
--- a/changelog.d/4121.misc
+++ /dev/null
@@ -1 +0,0 @@
-Log some bits about room creation
diff --git a/changelog.d/4122.bugfix b/changelog.d/4122.bugfix
deleted file mode 100644
index 66dcfb18b9576266453619a8284d9b2567871ea7..0000000000000000000000000000000000000000
--- a/changelog.d/4122.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Searches that request profile info now no longer fail with a 500.
diff --git a/changelog.d/4123.bugfix b/changelog.d/4123.bugfix
deleted file mode 100644
index b82bc2aad34b25b1918641aebe61a894fddd5cb4..0000000000000000000000000000000000000000
--- a/changelog.d/4123.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-fix return code of empty key backups
diff --git a/changelog.d/4124.misc b/changelog.d/4124.misc
deleted file mode 100644
index 28f438b9b2caf04ec9465ac119e90cfe9c092d1c..0000000000000000000000000000000000000000
--- a/changelog.d/4124.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix `tox` failure on old systems
diff --git a/changelog.d/4127.bugfix b/changelog.d/4127.bugfix
deleted file mode 100644
index 0701d2ceaac2d58bbc9cba496fd709f3fafbcca4..0000000000000000000000000000000000000000
--- a/changelog.d/4127.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-If the typing stream ID goes backwards (as on a worker when the master restarts), the worker's typing handler will no longer erroneously report rooms containing new typing events.
diff --git a/changelog.d/4128.misc b/changelog.d/4128.misc
deleted file mode 100644
index 76ab4b085c9150cb1993e65cf5e252e30ba9acd4..0000000000000000000000000000000000000000
--- a/changelog.d/4128.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add STATE_V2_TEST room version
diff --git a/changelog.d/4132.bugfix b/changelog.d/4132.bugfix
deleted file mode 100644
index 2304a40f057318ef11d3e640f1be9c316465b040..0000000000000000000000000000000000000000
--- a/changelog.d/4132.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix table lock of device_lists_remote_cache which could freeze the application
\ No newline at end of file
diff --git a/changelog.d/4133.feature b/changelog.d/4133.feature
deleted file mode 100644
index 89975f4c6e566b3d891cad698ee17e687115d16e..0000000000000000000000000000000000000000
--- a/changelog.d/4133.feature
+++ /dev/null
@@ -1 +0,0 @@
-Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled.
diff --git a/changelog.d/4135.bugfix b/changelog.d/4135.bugfix
deleted file mode 100644
index 6879b1c1620a2183d67515fbec33757ef724dcb7..0000000000000000000000000000000000000000
--- a/changelog.d/4135.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix exception when using state res v2 algorithm
diff --git a/changelog.d/4137.misc b/changelog.d/4137.misc
deleted file mode 100644
index 4fe933e33cbaf673b514ae0490345f177403518d..0000000000000000000000000000000000000000
--- a/changelog.d/4137.misc
+++ /dev/null
@@ -1 +0,0 @@
-Clean up event accesses and tests
diff --git a/changelog.d/4138.misc b/changelog.d/4138.misc
deleted file mode 100644
index 300199f8e8b296d720eea45595c9f69b863168ac..0000000000000000000000000000000000000000
--- a/changelog.d/4138.misc
+++ /dev/null
@@ -1 +0,0 @@
-The default logging config will now set an explicit log file encoding of UTF-8.
diff --git a/changelog.d/4139.misc b/changelog.d/4139.misc
deleted file mode 100644
index d63d9e70038bec227ebf1433f3ace2d6ff20d4d2..0000000000000000000000000000000000000000
--- a/changelog.d/4139.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add helpers functions for getting prev and auth events of an event
diff --git a/changelog.d/4140.bugfix b/changelog.d/4140.bugfix
deleted file mode 100644
index c7e0ee229dc36a8ff509a5476ef29c03faf0f56d..0000000000000000000000000000000000000000
--- a/changelog.d/4140.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Generating the user consent URI no longer fails on Python 3.
diff --git a/changelog.d/4142.feature b/changelog.d/4142.feature
deleted file mode 100644
index 89975f4c6e566b3d891cad698ee17e687115d16e..0000000000000000000000000000000000000000
--- a/changelog.d/4142.feature
+++ /dev/null
@@ -1 +0,0 @@
-Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled.
diff --git a/changelog.d/4149.misc b/changelog.d/4149.misc
deleted file mode 100644
index 0b299f0c6e7b382d6ee538ef181a1c5fcc3bb9ec..0000000000000000000000000000000000000000
--- a/changelog.d/4149.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add some tests for the HTTP pusher.
diff --git a/changelog.d/4155.misc b/changelog.d/4155.misc
deleted file mode 100644
index 4a7d5acb66e0e31f59bc1fa8ded6d5f787c41e9d..0000000000000000000000000000000000000000
--- a/changelog.d/4155.misc
+++ /dev/null
@@ -1 +0,0 @@
-add purge_history.sh and purge_remote_media.sh scripts to contrib/
diff --git a/changelog.d/4156.misc b/changelog.d/4156.misc
deleted file mode 100644
index 20d404406c1b50d993184cc7fa695c08b77d1729..0000000000000000000000000000000000000000
--- a/changelog.d/4156.misc
+++ /dev/null
@@ -1 +0,0 @@
-HTTP tests have been refactored to contain less boilerplate.
diff --git a/changelog.d/4157.bugfix b/changelog.d/4157.bugfix
deleted file mode 100644
index 265514c3af09cf1dd1f25a5dc7341b0baf0fc056..0000000000000000000000000000000000000000
--- a/changelog.d/4157.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Loading URL previews from the DB cache on Postgres will no longer cause Unicode type errors when responding to the request, and URL previews will no longer fail if the remote server returns a Content-Type header with the chartype in quotes.
\ No newline at end of file
diff --git a/changelog.d/4161.bugfix b/changelog.d/4161.bugfix
deleted file mode 100644
index 252a40376bcf5928fe9cdc0d88cc54445f147732..0000000000000000000000000000000000000000
--- a/changelog.d/4161.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-The hash_password script now works on Python 3.
diff --git a/changelog.d/4163.bugfix b/changelog.d/4163.bugfix
deleted file mode 100644
index c7e0ee229dc36a8ff509a5476ef29c03faf0f56d..0000000000000000000000000000000000000000
--- a/changelog.d/4163.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Generating the user consent URI no longer fails on Python 3.
diff --git a/changelog.d/4164.bugfix b/changelog.d/4164.bugfix
deleted file mode 100644
index f70e0b2056d648a32bf096d7d07b93e8d71bcad8..0000000000000000000000000000000000000000
--- a/changelog.d/4164.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix noop checks when updating device keys, reducing spurious device list update notifications.
diff --git a/changelog.d/4165.misc b/changelog.d/4165.misc
deleted file mode 100644
index 415d80aeab08cc2267d49e99fed00bc6383f4595..0000000000000000000000000000000000000000
--- a/changelog.d/4165.misc
+++ /dev/null
@@ -1 +0,0 @@
-Drop incoming events from federation for unknown rooms
diff --git a/changelog.d/4184.feature b/changelog.d/4184.feature
deleted file mode 100644
index 89975f4c6e566b3d891cad698ee17e687115d16e..0000000000000000000000000000000000000000
--- a/changelog.d/4184.feature
+++ /dev/null
@@ -1 +0,0 @@
-Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 89ea9a97753b9b33fe0f32dc751b97060c862552..5a28fe2b82e1568724adc7280e7098ac6952c744 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -27,4 +27,4 @@ try:
 except ImportError:
     pass
 
-__version__ = "0.33.8"
+__version__ = "0.33.9"