diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..edc9edc
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,93 @@
+version: 2
+
+jobs:
+  build:
+    docker: &docker
+      - image: circleci/python:latest
+    steps: &steps
+      - run: sudo chmod -R a+r /tmp
+      - checkout
+      - restore_cache: &restore_cache
+          keys:
+            - v2-deps-{{ .Environment.CIRCLE_JOB }}-{{ checksum "sshtunnel.py" }}
+      - run: &install_sshtunnel
+          name: Install sshtunnel
+          command: sudo python setup.py install
+      - run: sudo pip install mock pytest{,-cov,-xdist} coveralls
+      - run: pip list
+      - save_cache: &save_cache
+          paths:
+            - ~/.cache/pip
+          key: v2-deps-{{ .Environment.CIRCLE_JOB }}-{{ checksum "sshtunnel.py" }}
+      - run: py.test --showlocals --cov sshtunnel --durations=10 -n4 tests
+             -W ignore::DeprecationWarning
+      - run: coveralls
+
+  python_2.7:
+    docker:
+      - image: circleci/python:2.7
+    steps: *steps
+
+  python_3.4:
+    docker:
+      - image: circleci/python:3.4
+    steps: *steps
+
+  python_3.5:
+    docker:
+      - image: circleci/python:3.5
+    steps: *steps
+
+  python_3.6:
+    docker:
+      - image: circleci/python:3.6
+    steps: *steps
+
+  docs:
+    docker: *docker
+    steps:
+      - checkout
+      - run: *install_sshtunnel
+      - restore_cache: *restore_cache
+      - run: sudo pip install -r docs/requirements-docs.txt
+      - run: sphinx-build -WavE -b html docs _build/html
+      - save_cache: *save_cache
+
+  syntax:
+    docker: *docker
+    steps:
+      - checkout
+      - run: *install_sshtunnel
+      - restore_cache: *restore_cache
+      - run:
+          name: installing testing dependencies
+          command: sudo pip install bashtest check-manifest docutils flake8
+            mccabe pygments readme twine
+      - run:
+          name: checking MANIFEST.in
+          command: sudo check-manifest --ignore "tox.ini,tests*,*.yml"
+      - run:
+          name: checking RST syntax
+          command: sudo python setup.py sdist ; twine check dist/*
+      - run:
+          name: checking PEP8 compliancy
+          command: flake8 --ignore=W504 .
+      - run:
+          name: checking CLI help
+          command: bashtest README.rst
+      - save_cache: *save_cache
+
+workflows:
+  version: 2
+  tests:
+    jobs:
+      - build  # python3.7
+      - python_2.7
+      - python_3.4
+      - python_3.5
+      - python_3.6
+  syntax_and_docs:
+    jobs:
+      - syntax
+      - docs
+
diff --git a/LICENSE b/LICENSE
index 3953212..a6de6a9 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2016 Pahaz Blinov
+Copyright (c) 2014-2019 Pahaz Blinov
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/MANIFEST.in b/MANIFEST.in
index 3eba37e..3730e3d 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,9 +1,5 @@
 # Include the data files recursive-include data *
 
-# If using Python 2.6 or less, then have to include package data, even though
-# it's already declared in setup.py
-# include sample/*.dat
-
 include LICENSE
 include *.rst
 include docs/conf.py
@@ -11,3 +7,5 @@ include docs/Makefile
 include docs/*.rst
 include docs/*.txt
 include tests/*
+include .circleci/*
+
diff --git a/PKG-INFO b/PKG-INFO
index 6b2e89d..7c36414 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: sshtunnel
-Version: 0.1.4
+Version: 0.1.5
 Summary: Pure python SSH tunnels
 Home-page: https://github.com/pahaz/sshtunnel
 Author: Pahaz Blinov
 Author-email: pahaz.blinov@gmail.com
 License: MIT
-Download-URL: https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.4.zip
-Description-Content-Type: UNKNOWN
+Download-URL: https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.5.zip
 Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
         |pyversions| |license|
@@ -112,7 +111,7 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         ``pahaz.urfuclub.ru``, password authentication and randomly assigned local bind
         port.
         
-        .. code-block:: py
+        .. code-block:: python
         
             from sshtunnel import SSHTunnelForwarder
         
@@ -137,12 +136,12 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         assuming password protected pkey authentication, remote server's SSH service is
         listening on port 443 and that port is open in the firewall (**Fig2**):
         
-        .. code-block:: py
+        .. code-block:: python
         
             import paramiko
-            from sshtunnel import SSHTunnelForwarder
+            import sshtunnel
         
-            with SSHTunnelForwarder(
+            with sshtunnel.open_tunnel(
                 (REMOTE_SERVER_IP, 443),
                 ssh_username="",
                 ssh_pkey="/var/ssh/rsa_key",
@@ -164,12 +163,12 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
         Example of a port forwarding for the Vagrant MySQL local port:
         
-        .. code-block:: py
+        .. code-block:: python
         
-            from sshtunnel import SSHTunnelForwarder
+            from sshtunnel import open_tunnel
             from time import sleep
         
-            with SSHTunnelForwarder(
+            with open_tunnel(
                 ('localhost', 2222),
                 ssh_username="vagrant",
                 ssh_password="vagrant",
@@ -189,6 +188,42 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
             (bash)$ python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost
         
+        Example 4
+        ---------
+        
+        Opening an SSH session jumping over two tunnels. SSH transport and tunnels
+        will be daemonised, which will not wait for the connections to stop at close
+        time.
+        
+        .. code-block:: python
+        
+            import sshtunnel
+            from paramiko import SSHClient
+        
+        
+            with sshtunnel.open_tunnel(
+                ssh_address_or_host=('GW1_ip', 20022),
+                remote_bind_address=('GW2_ip', 22),
+                block_on_close=False
+            ) as tunnel1:
+                print('Connection to tunnel1 (GW1_ip:GW1_port) OK...')
+                with sshtunnel.open_tunnel(
+                    ssh_address_or_host=('localhost', tunnel1.local_bind_port),
+                    remote_bind_address=('target_ip', 22),
+                    ssh_username='GW2_user',
+                    ssh_password='GW2_pwd',
+                    block_on_close=False
+                ) as tunnel2:
+                    print('Connection to tunnel2 (GW2_ip:GW2_port) OK...')
+                    with SSHClient() as ssh:
+                        ssh.connect('localhost',
+                            port=tunnel2.local_bind_port,
+                            username='target_user',
+                            password='target_pwd',
+                        )
+                        ssh.exec_command(...)
+        
+        
         CLI usage
         =========
         
@@ -202,7 +237,7 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
                              ssh_address
         
             Pure python ssh tunnel utils
-            Version 0.1.4
+            Version 0.1.5
         
             positional arguments:
               ssh_address           SSH server IP address (GW for SSH tunnels)
@@ -289,6 +324,9 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         CHANGELOG
         =========
         
+        - v.0.1.5 (`JM Fernández`_)
+            + Introduce `block_on_close` attribute
+        
         - v.0.1.4 (`Niels Zeilemaker`_)
             + Allow loading pkeys from `~/.ssh`
         
@@ -420,3 +458,6 @@ Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Provides-Extra: build_sphinx
+Provides-Extra: dev
+Provides-Extra: test
diff --git a/README.rst b/README.rst
index 419cbae..98e1892 100644
--- a/README.rst
+++ b/README.rst
@@ -102,7 +102,7 @@ Code corresponding to **Fig1** above follows, given remote server's address is
 ``pahaz.urfuclub.ru``, password authentication and randomly assigned local bind
 port.
 
-.. code-block:: py
+.. code-block:: python
 
     from sshtunnel import SSHTunnelForwarder
 
@@ -127,12 +127,12 @@ Example of a port forwarding to a private server not directly reachable,
 assuming password protected pkey authentication, remote server's SSH service is
 listening on port 443 and that port is open in the firewall (**Fig2**):
 
-.. code-block:: py
+.. code-block:: python
 
     import paramiko
-    from sshtunnel import SSHTunnelForwarder
+    import sshtunnel
 
-    with SSHTunnelForwarder(
+    with sshtunnel.open_tunnel(
         (REMOTE_SERVER_IP, 443),
         ssh_username="",
         ssh_pkey="/var/ssh/rsa_key",
@@ -154,12 +154,12 @@ Example 3
 
 Example of a port forwarding for the Vagrant MySQL local port:
 
-.. code-block:: py
+.. code-block:: python
 
-    from sshtunnel import SSHTunnelForwarder
+    from sshtunnel import open_tunnel
     from time import sleep
 
-    with SSHTunnelForwarder(
+    with open_tunnel(
         ('localhost', 2222),
         ssh_username="vagrant",
         ssh_password="vagrant",
@@ -179,6 +179,42 @@ Or simply using the CLI:
 
     (bash)$ python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost
 
+Example 4
+---------
+
+Opening an SSH session jumping over two tunnels. SSH transport and tunnels
+will be daemonised, which will not wait for the connections to stop at close
+time.
+
+.. code-block:: python
+
+    import sshtunnel
+    from paramiko import SSHClient
+
+
+    with sshtunnel.open_tunnel(
+        ssh_address_or_host=('GW1_ip', 20022),
+        remote_bind_address=('GW2_ip', 22),
+        block_on_close=False
+    ) as tunnel1:
+        print('Connection to tunnel1 (GW1_ip:GW1_port) OK...')
+        with sshtunnel.open_tunnel(
+            ssh_address_or_host=('localhost', tunnel1.local_bind_port),
+            remote_bind_address=('target_ip', 22),
+            ssh_username='GW2_user',
+            ssh_password='GW2_pwd',
+            block_on_close=False
+        ) as tunnel2:
+            print('Connection to tunnel2 (GW2_ip:GW2_port) OK...')
+            with SSHClient() as ssh:
+                ssh.connect('localhost',
+                    port=tunnel2.local_bind_port,
+                    username='target_user',
+                    password='target_pwd',
+                )
+                ssh.exec_command(...)
+
+
 CLI usage
 =========
 
@@ -192,7 +228,7 @@ CLI usage
                      ssh_address
 
     Pure python ssh tunnel utils
-    Version 0.1.4
+    Version 0.1.5
 
     positional arguments:
       ssh_address           SSH server IP address (GW for SSH tunnels)
diff --git a/changelog.rst b/changelog.rst
index 6d877bc..758bec3 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -16,6 +16,9 @@ CONTRIBUTORS
 CHANGELOG
 =========
 
+- v.0.1.5 (`JM Fernández`_)
+    + Introduce `block_on_close` attribute
+
 - v.0.1.4 (`Niels Zeilemaker`_)
     + Allow loading pkeys from `~/.ssh`
 
diff --git a/debian/changelog b/debian/changelog
index 8ced8fc..ef6955d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+sshtunnel (0.1.5-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sun, 30 Jun 2019 14:20:22 +0000
+
 sshtunnel (0.1.4-2) unstable; urgency=medium
 
   [ Chris Lamb ]
diff --git a/docs/conf.py b/docs/conf.py
index e3bd5b3..35fbef2 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -16,6 +16,8 @@
 import sys
 import os
 
+import sshtunnel
+
 # Patch to disable warning on non-local image
 import sphinx.environment
 from docutils.utils import get_source_line
@@ -61,7 +63,7 @@ master_doc = 'index'
 
 # General information about the project.
 project = 'sshtunnel'
-copyright = '2014-2016, Pahaz Blinov and contributors'
+copyright = '2014-2019, Pahaz Blinov and contributors'
 author = 'Pahaz Blinov'
 
 # The version info for the project you're documenting, acts as replacement for
@@ -69,9 +71,9 @@ author = 'Pahaz Blinov'
 # built documents.
 #
 # The short X.Y version.
-version = '0.0.8'
+version = sshtunnel.__version__
 # The full version, including alpha/beta/rc tags.
-release = '0.0.8'
+release = sshtunnel.__version__
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/docs/index.rst b/docs/index.rst
index 4210823..2e38cda 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -8,9 +8,6 @@ Welcome to sshtunnel's documentation!
 API
 ===
 
-.. toctree::
-   :maxdepth: 3
-
 .. automodule:: sshtunnel
    :members:
    :member-order: bysource
@@ -21,4 +18,4 @@ API
 License
 =======
 
-.. include:: ../LICENSE
\ No newline at end of file
+.. include:: ../LICENSE
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
index 1d3c833..76356ef 100644
--- a/docs/requirements-docs.txt
+++ b/docs/requirements-docs.txt
@@ -1,3 +1,3 @@
-docutils==0.12
-sphinx==1.3.5
-sphinxcontrib-napoleon==0.5.0
+docutils
+sphinx
+sphinxcontrib-napoleon
diff --git a/setup.py b/setup.py
index 1440405..8b0afad 100644
--- a/setup.py
+++ b/setup.py
@@ -119,6 +119,9 @@ setup(
     # dependencies). You can install these using the following syntax,
     # for example:
     # $ pip install -e .[dev,test]
+    tests_require=[
+        'tox>=1.8.1',
+    ],
     extras_require={
         'dev': ['check-manifest'],
         'test': [
diff --git a/sshtunnel.egg-info/PKG-INFO b/sshtunnel.egg-info/PKG-INFO
index 6b2e89d..7c36414 100644
--- a/sshtunnel.egg-info/PKG-INFO
+++ b/sshtunnel.egg-info/PKG-INFO
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: sshtunnel
-Version: 0.1.4
+Version: 0.1.5
 Summary: Pure python SSH tunnels
 Home-page: https://github.com/pahaz/sshtunnel
 Author: Pahaz Blinov
 Author-email: pahaz.blinov@gmail.com
 License: MIT
-Download-URL: https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.4.zip
-Description-Content-Type: UNKNOWN
+Download-URL: https://pypi.python.org/packages/source/s/sshtunnel/sshtunnel-0.1.5.zip
 Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
         |pyversions| |license|
@@ -112,7 +111,7 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         ``pahaz.urfuclub.ru``, password authentication and randomly assigned local bind
         port.
         
-        .. code-block:: py
+        .. code-block:: python
         
             from sshtunnel import SSHTunnelForwarder
         
@@ -137,12 +136,12 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         assuming password protected pkey authentication, remote server's SSH service is
         listening on port 443 and that port is open in the firewall (**Fig2**):
         
-        .. code-block:: py
+        .. code-block:: python
         
             import paramiko
-            from sshtunnel import SSHTunnelForwarder
+            import sshtunnel
         
-            with SSHTunnelForwarder(
+            with sshtunnel.open_tunnel(
                 (REMOTE_SERVER_IP, 443),
                 ssh_username="",
                 ssh_pkey="/var/ssh/rsa_key",
@@ -164,12 +163,12 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
         Example of a port forwarding for the Vagrant MySQL local port:
         
-        .. code-block:: py
+        .. code-block:: python
         
-            from sshtunnel import SSHTunnelForwarder
+            from sshtunnel import open_tunnel
             from time import sleep
         
-            with SSHTunnelForwarder(
+            with open_tunnel(
                 ('localhost', 2222),
                 ssh_username="vagrant",
                 ssh_password="vagrant",
@@ -189,6 +188,42 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         
             (bash)$ python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost
         
+        Example 4
+        ---------
+        
+        Opening an SSH session jumping over two tunnels. SSH transport and tunnels
+        will be daemonised, which will not wait for the connections to stop at close
+        time.
+        
+        .. code-block:: python
+        
+            import sshtunnel
+            from paramiko import SSHClient
+        
+        
+            with sshtunnel.open_tunnel(
+                ssh_address_or_host=('GW1_ip', 20022),
+                remote_bind_address=('GW2_ip', 22),
+                block_on_close=False
+            ) as tunnel1:
+                print('Connection to tunnel1 (GW1_ip:GW1_port) OK...')
+                with sshtunnel.open_tunnel(
+                    ssh_address_or_host=('localhost', tunnel1.local_bind_port),
+                    remote_bind_address=('target_ip', 22),
+                    ssh_username='GW2_user',
+                    ssh_password='GW2_pwd',
+                    block_on_close=False
+                ) as tunnel2:
+                    print('Connection to tunnel2 (GW2_ip:GW2_port) OK...')
+                    with SSHClient() as ssh:
+                        ssh.connect('localhost',
+                            port=tunnel2.local_bind_port,
+                            username='target_user',
+                            password='target_pwd',
+                        )
+                        ssh.exec_command(...)
+        
+        
         CLI usage
         =========
         
@@ -202,7 +237,7 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
                              ssh_address
         
             Pure python ssh tunnel utils
-            Version 0.1.4
+            Version 0.1.5
         
             positional arguments:
               ssh_address           SSH server IP address (GW for SSH tunnels)
@@ -289,6 +324,9 @@ Description: |CircleCI| |AppVeyor| |readthedocs| |coveralls| |version|
         CHANGELOG
         =========
         
+        - v.0.1.5 (`JM Fernández`_)
+            + Introduce `block_on_close` attribute
+        
         - v.0.1.4 (`Niels Zeilemaker`_)
             + Allow loading pkeys from `~/.ssh`
         
@@ -420,3 +458,6 @@ Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+Provides-Extra: build_sphinx
+Provides-Extra: dev
+Provides-Extra: test
diff --git a/sshtunnel.egg-info/SOURCES.txt b/sshtunnel.egg-info/SOURCES.txt
index d96700f..229098d 100644
--- a/sshtunnel.egg-info/SOURCES.txt
+++ b/sshtunnel.egg-info/SOURCES.txt
@@ -7,6 +7,7 @@ docs.rst
 setup.cfg
 setup.py
 sshtunnel.py
+.circleci/config.yml
 docs/Makefile
 docs/conf.py
 docs/index.rst
@@ -18,7 +19,6 @@ sshtunnel.egg-info/entry_points.txt
 sshtunnel.egg-info/requires.txt
 sshtunnel.egg-info/top_level.txt
 tests/__init__.py
-tests/__init__.pyc
 tests/test_forwarder.py
 tests/testconfig
 tests/testrsa.key
diff --git a/sshtunnel.py b/sshtunnel.py
index 9774698..50d64a3 100644
--- a/sshtunnel.py
+++ b/sshtunnel.py
@@ -36,13 +36,13 @@ else:
     input_ = input
 
 
-__version__ = '0.1.4'
+__version__ = '0.1.5'
 __author__ = 'pahaz'
 
 
 DEFAULT_LOGLEVEL = logging.ERROR  #: default level if no logger passed (ERROR)
 TUNNEL_TIMEOUT = 1.0  #: Timeout (seconds) for tunnel connection
-DAEMON = False
+_DAEMON = False  #: Use daemon threads in connections
 TRACE_LEVEL = 1
 _CONNECTION_COUNTER = 1
 _LOCK = threading.Lock()
@@ -314,7 +314,7 @@ class _ForwardHandler(socketserver.BaseRequestHandler):
                                     self.remote_address,
                                     hexlify(data)
                                 ))
-                chan.send(data)
+                chan.sendall(data)
             if chan in rqst:  # else
                 if not chan.recv_ready():
                     break
@@ -323,7 +323,7 @@ class _ForwardHandler(socketserver.BaseRequestHandler):
                     TRACE_LEVEL,
                     '<<< IN {0} recv: {1} <<<'.format(self.info, hexlify(data))
                 )
-                self.request.send(data)
+                self.request.sendall(data)
 
     def handle(self):
         uid = get_connection_id()
@@ -415,7 +415,7 @@ class _ThreadingForwardServer(socketserver.ThreadingMixIn, _ForwardServer):
     Allow concurrent connections to each tunnel
     """
     # If True, cleanly stop threads created by ThreadingMixIn when quitting
-    daemon_threads = DAEMON
+    daemon_threads = _DAEMON
 
 
 class _UnixStreamForwardServer(UnixStreamServer):
@@ -459,7 +459,7 @@ class _ThreadingUnixStreamForwardServer(socketserver.ThreadingMixIn,
     Allow concurrent connections to each tunnel
     """
     # If True, cleanly stop threads created by ThreadingMixIn when quitting
-    daemon_threads = DAEMON
+    daemon_threads = _DAEMON
 
 
 class SSHTunnelForwarder(object):
@@ -614,9 +614,8 @@ class SSHTunnelForwarder(object):
 
         host_pkey_directories (list):
             Look for pkeys in folders on this list, for example ['~/.ssh'].
-            An empty list disables this feature
 
-            Default: ``None``
+            Default: ``None`` (disabled)
 
             .. versionadded:: 0.1.4
 
@@ -720,8 +719,8 @@ class SSHTunnelForwarder(object):
 
     """
     skip_tunnel_checkup = True
-    daemon_forward_servers = DAEMON  #: flag tunnel threads in daemon mode
-    daemon_transport = DAEMON  #: flag SSH transport thread in daemon mode
+    daemon_forward_servers = _DAEMON  #: flag tunnel threads in daemon mode
+    daemon_transport = _DAEMON  #: flag SSH transport thread in daemon mode
 
     def local_is_up(self, target):
         """
@@ -1090,7 +1089,7 @@ class SSHTunnelForwarder(object):
                 logger.warning('Private key file not found: {0}'
                                .format(ssh_pkey))
         if isinstance(ssh_pkey, paramiko.pkey.PKey):
-            ssh_loaded_pkeys.append(ssh_pkey)
+            ssh_loaded_pkeys.insert(0, ssh_pkey)
 
         if not ssh_password and not ssh_loaded_pkeys:
             raise ValueError('No password or public key available!')
@@ -1580,6 +1579,12 @@ def open_tunnel(*args, **kwargs):
 
             .. versionadded:: 0.1.0
 
+        block_on_close (boolean):
+            Wait until all connections are done during close by changing the
+            value of :attr:`~SSHTunnelForwarder.block_on_close`
+
+            Default: True
+
     .. note::
         A value of ``debug_level`` set to 1 == ``TRACE`` enables tracing mode
     .. note::
@@ -1617,6 +1622,7 @@ def open_tunnel(*args, **kwargs):
 
     ssh_port = kwargs.pop('ssh_port', None)
     skip_tunnel_checkup = kwargs.pop('skip_tunnel_checkup', True)
+    block_on_close = kwargs.pop('block_on_close', _DAEMON)
     if not args:
         if isinstance(ssh_address_or_host, tuple):
             args = (ssh_address_or_host, )
@@ -1624,6 +1630,8 @@ def open_tunnel(*args, **kwargs):
             args = ((ssh_address_or_host, ssh_port), )
     forwarder = SSHTunnelForwarder(*args, **kwargs)
     forwarder.skip_tunnel_checkup = skip_tunnel_checkup
+    forwarder.daemon_forward_servers = not block_on_close
+    forwarder.daemon_transport = not block_on_close
     return forwarder
 
 
diff --git a/tests/__init__.pyc b/tests/__init__.pyc
deleted file mode 100644
index 4d58f5e..0000000
Binary files a/tests/__init__.pyc and /dev/null differ