diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000000000000000000000000000000000000..6c5e2e8276413438433ed6c4b4bd4f6fe3048f0d
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,29 @@
+## Change log
+
+* v0.90:
+  * first release with a *stable API*
+  * You can pick how your received _message.body_ will look like - bytes,
+  a zero-copy-for-short-messages memoryview, or maybe a totally zero-copy list of memoryviews?
+
+* v0.89.1:
+  * **Critical bugfix**: messages larger than a frame got corrupted
+
+* v0.89:
+   * Events are no longer timestamped by CoolAMQP, it's your job now
+   * You can delete queues (_Cluster.delete_queue_)
+   * Race condition _Connection.start_ fixed
+   * Queue can accept _bytes_ as name
+   * Consumer will set _cancelled_ to _True_ if
+   [Consumer Cancel Notification](https://www.rabbitmq.com/consumer-cancel.html) is received
+   * You can register callbacks for:
+       * Consumer being cancelled for any reason
+       * Consumer being cancelled with a CCN
+
+* v0.88:
+    * Cluster.start will RuntimeError if called more than once
+    * Cluster.shutdown will RuntimeError if called without .start
+    * Warning with content list is shorter
+
+
+Latest:
+* _banana banana banana_
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..3d6b642645fb5a208026c249e85d44d5c7c589fe
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+# Contributing guide
+
+1. Keep it unit tested.
+    1.1. If it's cool af, you don't have to.
+2. Exhaustive pydoc.
+3. If you introduce any gotchas, document them in [docs/](docs/).
diff --git a/README.md b/README.md
index 22a31f5616089aa02f881e08e031f38f210bdf0e..78eb43adbcce51d904a37a10a0096e30417185d0 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,9 @@ Enjoy!
 
 _Watch out for memoryviews!_ They're here to stay.
 
+[Short'n'sweet contributing guide](CONTRIBUTING.md)
+[Change log](CHANGELOG)
+
 
 ## Notes
 Assertions are sprinkled throughout the code. You may wish to run with optimizations enabled
@@ -43,29 +46,3 @@ if you need every CPU cycle you can get.
 * channel flow mechanism is not supported (#11)
 * _confirm=True_ is not available if you're not RabbitMQ (#8)
 * no Windows support (#9)
-
-## What's new
-
-* v0.90:
-  * first release with a *stable API*
-  * You can pick how your received _message.body_ will look like - bytes, 
-  a zero-copy-for-short-messages memoryview, or maybe a totally zero-copy list of memoryviews?
-
-* v0.89.1:
-  * **Critical bugfix**: messages larger than a frame got corrupted
-
-* v0.89: 
-   * Events are no longer timestamped by CoolAMQP, it's your job now
-   * You can delete queues (_Cluster.delete_queue_)
-   * Race condition _Connection.start_ fixed
-   * Queue can accept _bytes_ as name
-   * Consumer will set _cancelled_ to _True_ if 
-   [Consumer Cancel Notification](https://www.rabbitmq.com/consumer-cancel.html) is received
-   * You can register callbacks for:
-       * Consumer being cancelled for any reason
-       * Consumer being cancelled with a CCN
-
-* v0.88:
-    * Cluster.start will RuntimeError if called more than once
-    * Cluster.shutdown will RuntimeError if called without .start
-    * Warning with content list is shorter