diff --git a/coolamqp/clustering/cluster.py b/coolamqp/clustering/cluster.py
index f85e04e46508d15b37fc04434daa7cc505347b59..29f105ca441451921d378cd6bcf9a504244be37b 100644
--- a/coolamqp/clustering/cluster.py
+++ b/coolamqp/clustering/cluster.py
@@ -14,7 +14,7 @@ import six
 
 from coolamqp.attaches import Publisher, AttacheGroup, Consumer, Declarer
 from coolamqp.clustering.events import ConnectionLost, MessageReceived, \
-    NothingMuch
+    NothingMuch, Event
 from coolamqp.clustering.single import SingleNodeReconnector
 from coolamqp.exceptions import ConnectionDead
 from coolamqp.objects import Exchange
@@ -74,6 +74,8 @@ class Cluster(object):
             self.on_fail = None
 
     def declare(self, obj, persistent=False):
+        # type: (tp.Union[coolamqp.objects.Queue, coolamqp.objects.Exchange], bool) ->
+        #       concurrent.futures.Future
         """
         Declare a Queue/Exchange
         :param obj: Queue/Exchange object
@@ -82,7 +84,7 @@ class Cluster(object):
         """
         return self.decl.declare(obj, persistent=persistent)
 
-    def drain(self, timeout):
+    def drain(self, timeout):  # type: (float) -> Event
         """
         Return an Event.
         :param timeout: time to wait for an event. 0 means return immediately. None means block forever
@@ -121,7 +123,7 @@ class Cluster(object):
         self.attache_group.add(con)
         return con, fut
 
-    def delete_queue(self, queue):
+    def delete_queue(self, queue):  # type: (coolamqp.objects.Queue) -> concurrent.futures.Future
         """
         Delete a queue.
 
@@ -132,6 +134,8 @@ class Cluster(object):
 
     def publish(self, message, exchange=None, routing_key=u'', tx=None,
                 confirm=None):
+        # type: (coolamqp.objects.Message, tp.Optional[coolamqp.objects.Exchange],
+        #   tp.Union[str, bytes], bool, bool) -> concurrent.futures.Future
         """
         Publish a message.
 
@@ -176,7 +180,8 @@ class Cluster(object):
             raise NotImplementedError(
                 u'Sorry, this functionality is not yet implemented!')
 
-    def start(self, wait=True, timeout=10.0, log_frames=False):
+    def start(self, wait=True, timeout=10.0, log_frames=None):
+        # type: (bool, float, bool) -> None
         """
         Connect to broker. Initialize Cluster.
 
@@ -205,7 +210,7 @@ class Cluster(object):
 
         self.snr = SingleNodeReconnector(self.node, self.attache_group,
                                          self.listener, self.extra_properties,
-                                         self.log_frames)
+                                         log_frames)
         self.snr.on_fail.add(lambda: self.events.put_nowait(ConnectionLost()))
         if self.on_fail is not None:
             self.snr.on_fail.add(self.on_fail)
@@ -231,7 +236,7 @@ class Cluster(object):
             if not self.snr.is_connected():
                 raise ConnectionDead('Could not connect within %s seconds' % (timeout, ))
 
-    def shutdown(self, wait=True):
+    def shutdown(self, wait=True):  # type: (bool) -> None
         """
         Terminate all connections, release resources - finish the job.
         :param wait: block until this is done
diff --git a/coolamqp/clustering/single.py b/coolamqp/clustering/single.py
index 17663273bbc9aa70968b9cf67a2c0785914099b4..f86ae2e19a0d0a5ce0fab12d4c41891626132e33 100644
--- a/coolamqp/clustering/single.py
+++ b/coolamqp/clustering/single.py
@@ -29,10 +29,10 @@ class SingleNodeReconnector(object):
 
         self.on_fail.add(self._on_fail)
 
-    def is_connected(self):
+    def is_connected(self):  # type: () -> bool
         return self.connection is not None
 
-    def connect(self, timeout):
+    def connect(self, timeout):  # type: (float) -> None
         assert self.connection is None
 
         # Initiate connecting - this order is very important!