diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6e1410df86d3fc130d40f62a63aba3fe6d6b2587..b805cfa5cc82f1a00802b8ebd1c8fde0bfd65857 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+# v0.100:
+
+* significant docs update
+* cosmetics
+
+# v0.99:
+
+* *bugfix release*: extra requirements added to [setup.py](/setup.py)
+
 # v0.98:
 
 * *bugfix release*: fixed multiple race conditions, added stress tests
diff --git a/setup.py b/setup.py
index 0b591c72bebcba6c352e2a941f9bcf040fdcfa5d..6837717dcdab4101f3dcf8fab9c2134905f18ca8 100644
--- a/setup.py
+++ b/setup.py
@@ -8,10 +8,10 @@ setup(keywords=['amqp', 'rabbitmq', 'client', 'network', 'ha', 'high availabilit
       long_description=u'''Pure Python AMQP client, but with dynamic class generation and memoryviews FOR THE GODSPEED.
 
 Also, handles your reconnects and transactionality THE RIGHT WAY, though somewhat opinionated''',
-      install_requires=['six', 'monotonic', 'futures'],
+      install_requires=['six', 'monotonic', 'futures', 'typing'],
       # per coverage version for codeclimate-reporter
       tests_require=["nose", 'coverage>=4.0,<4.4'],
       test_suite='nose.collector'
-     )
+      )
 
 
diff --git a/tests/test_clustering/test_a.py b/tests/test_clustering/test_a.py
index ac46f7c0f74f15e5938e3954c5b00bc5158d6273..39aee907af84bb27cf0e51a8146f8eb795fc0212 100644
--- a/tests/test_clustering/test_a.py
+++ b/tests/test_clustering/test_a.py
@@ -207,7 +207,7 @@ class TestA(unittest.TestCase):
         self.assertEquals(m.body[0], data)
 
         data = six.binary_type(os.urandom(512 * 1024))
-        self.c.publish(Message(data), routing_key=u'hello7', confirm=True)
+        self.c.publish(Message(data), routing_key=u'hello8', confirm=True)
         m = self.c.drain(5)
         self.assertIsInstance(m, MessageReceived)
         self.assertTrue(all([isinstance(x, memoryview) for x in m.body]))