diff --git a/.codeclimate.yml b/.codeclimate.yml
index 4096f28d4d16ab0347e3fccf5cdbec0e96443261..249d03d1eebe265a1a2e3ea2019fc67abcaadf9d 100644
--- a/.codeclimate.yml
+++ b/.codeclimate.yml
@@ -15,7 +15,7 @@ engines:
     enabled: true
 exclude_paths:
 - examples/**
+- tests/**
 ratings:
   paths:
   - coolamqp/**
-  - tests/**
diff --git a/.travis.yml b/.travis.yml
index ee745ad9f0de77131e013fa24d0a5024dfadba18..c2b5a6cdb2770133c3c7b84aff327a0c22104494 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,7 @@ python:
  - "2.7"
  - "pypy"
 cache: pip
+sudo: required
 script:
  - nosetests --with-coverage
 install:
diff --git a/coolamqp/orders.py b/coolamqp/orders.py
index e6525343c7a7f99f2afd62a80b012e891953406d..9be573523d999600239dd631b7baf7346d836f07 100644
--- a/coolamqp/orders.py
+++ b/coolamqp/orders.py
@@ -57,39 +57,36 @@ class SendMessage(Order):
         self.routing_key = routing_key
 
 
-class DeclareExchange(Order):
-    """Declare an exchange"""
+class _Exchange(Order):
+    """Things with exchanges"""
     def __init__(self, exchange, on_completed=None, on_failed=None):
         Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
         self.exchange = exchange
 
+class DeclareExchange(_Exchange):
+    """Declare an exchange"""
 
-class DeleteExchange(Order):
+class DeleteExchange(_Exchange):
     """Delete an exchange"""
-    def __init__(self, exchange, on_completed=None, on_failed=None):
-        Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
-        self.exchange = exchange
 
 
-class DeclareQueue(Order):
-    """Declare a a queue"""
+class _Queue(Order):
+    """Things with queues"""
     def __init__(self, queue, on_completed=None, on_failed=None):
         Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
         self.queue = queue
 
+class DeclareQueue(_Queue):
+    """Declare a a queue"""
 
-class ConsumeQueue(Order):
+class ConsumeQueue(_Queue):
     """Declare and consume from a queue"""
-    def __init__(self, queue, on_completed=None, on_failed=None):
-        Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
-        self.queue = queue
-
 
-class DeleteQueue(Order):
+class DeleteQueue(_Queue):
     """Delete a queue"""
-    def __init__(self, queue, on_completed=None, on_failed=None):
-        Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
-        self.queue = queue
+
+class CancelQueue(_Queue):
+    """Cancel consuming from a queue"""
 
 
 class SetQoS(Order):
@@ -99,14 +96,6 @@ class SetQoS(Order):
         self.qos = (prefetch_window, prefetch_count)
 
 
-class CancelQueue(Order):
-    """Cancel consuming from a queue"""
-    def __init__(self, queue, on_completed=None, on_failed=None):
-        Order.__init__(self, on_completed=on_completed, on_failed=on_failed)
-        self.queue = queue
-
-
-
 class _AcksAndNacks(Order):
     """related to acking and nacking"""
     def __init__(self, connect_id, delivery_tag, on_completed):