diff --git a/coolamqp/orders.py b/coolamqp/orders.py
index abbee28b1f22ee0b400ac72941a9d03d68ce0258..e6525343c7a7f99f2afd62a80b012e891953406d 100644
--- a/coolamqp/orders.py
+++ b/coolamqp/orders.py
@@ -106,17 +106,16 @@ class CancelQueue(Order):
         self.queue = queue
 
 
-class AcknowledgeMessage(Order):
-    """ACK a message"""
+
+class _AcksAndNacks(Order):
+    """related to acking and nacking"""
     def __init__(self, connect_id, delivery_tag, on_completed):
         Order.__init__(self, on_completed=on_completed)
         self.connect_id = connect_id
         self.delivery_tag = delivery_tag
 
+class AcknowledgeMessage(_AcksAndNacks):
+    """ACK a message"""
 
-class NAcknowledgeMessage(Order):
+class NAcknowledgeMessage(_AcksAndNacks):
     """NACK a message"""
-    def __init__(self, connect_id, delivery_tag, on_completed):
-        Order.__init__(self, on_completed=on_completed)
-        self.connect_id = connect_id
-        self.delivery_tag = delivery_tag
diff --git a/tests/test_basics.py b/tests/test_basics.py
index d67ffec25c5f7d6448284bc132358a5ecd111f73..623ed3b702c8e4310dfc0212596af666d118b14b 100644
--- a/tests/test_basics.py
+++ b/tests/test_basics.py
@@ -1,6 +1,7 @@
 #coding=UTF-8
 from __future__ import absolute_import, division, print_function
 import unittest
+import six
 
 from coolamqp import Cluster, ClusterNode, Queue, MessageReceived, ConnectionUp, \
     ConnectionDown, ConsumerCancelled, Message
@@ -19,7 +20,7 @@ class TestBasics(unittest.TestCase):
         myq = Queue('myqueue', exclusive=True)
 
         self.amqp.consume(myq)
-        self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue')
+        self.amqp.send(Message('what the fuck'), '', routing_key='myqueue')
 
         p = self.amqp.drain(wait=4)
         self.assertIsInstance(p, MessageReceived)
@@ -34,16 +35,16 @@ class TestBasics(unittest.TestCase):
         myq = Queue('myqueue', exclusive=True)
 
         self.amqp.consume(myq)
-        self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue')
+        self.amqp.send(Message('what the fuck'), '', routing_key='myqueue')
 
         p = self.amqp.drain(wait=4)
         self.assertIsInstance(p, MessageReceived)
-        self.assertEquals(p.message.body, b'what the fuck')
+        self.assertEquals(p.message.body, 'what the fuck')
         p.message.nack()
 
         p = self.amqp.drain(wait=4)
         self.assertIsInstance(p, MessageReceived)
-        self.assertEquals(p.message.body, b'what the fuck')
+        self.assertEquals(six.binary_type(p.message.body), 'what the fuck')
 
         self.amqp.delete_queue(myq)
 
@@ -51,11 +52,11 @@ class TestBasics(unittest.TestCase):
         myq = Queue('myqueue', exclusive=True)
 
         self.amqp.consume(myq)
-        self.amqp.send(Message(b'what the fuck'), '', routing_key='myqueue')
+        self.amqp.send(Message('what the fuck'), '', routing_key='myqueue')
 
         p = self.amqp.drain(wait=10)
         self.assertIsInstance(p, MessageReceived)
-        self.assertEquals(p.message.body, b'what the fuck')
+        self.assertEquals(p.message.body, 'what the fuck')
 
     def test_consumer_cancelled_on_queue_deletion(self):
         myq = Queue('myqueue', exclusive=True)
diff --git a/tests/test_failures.py b/tests/test_failures.py
new file mode 100644
index 0000000000000000000000000000000000000000..2347f667bdc43f0e87ef112b246c971a37eeb082
--- /dev/null
+++ b/tests/test_failures.py
@@ -0,0 +1,24 @@
+#coding=UTF-8
+from __future__ import absolute_import, division, print_function
+
+import unittest
+import os
+from coolamqp import Cluster, ClusterNode, Queue, MessageReceived, ConnectionUp, \
+    ConnectionDown, ConsumerCancelled, Message
+
+
+class TestFailures(unittest.TestCase):
+
+    def setUp(self):
+        self.amqp = Cluster([ClusterNode('127.0.0.1', 'guest', 'guest')])
+        self.amqp.start()
+        self.assertIsInstance(self.amqp.drain(1), ConnectionUp)
+
+    def tearDown(self):
+        self.amqp.shutdown()
+
+    def test_connection_down_and_up(self):
+        """are messages generated at all? does it reconnect?"""
+        os.system("sudo service rabbitmq-server restart")
+        self.assertIsInstance(self.amqp.drain(wait=4), ConnectionDown)
+        self.assertIsInstance(self.amqp.drain(wait=6), ConnectionUp)