diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
new file mode 100644
index 000000000..36fcff7c3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
@@ -0,0 +1,23 @@
+---
+name: Bug report
+about: Create a report to help us fix things!
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Configure the Monkey with X settings
+2. Run the monkey on specific machine
+3. See error
+
+**Expected behavior**
+A description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Machine version(please complete the following information):**
+ - OS: Windows or Linux
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..8b780e2fc
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,27 @@
+group: travis_latest
+language: python
+cache: pip
+python:
+    - 2.7
+    - 3.6
+    #- nightly
+    #- pypy
+    #- pypy3
+matrix:
+    allow_failures:
+        - python: nightly
+        - python: pypy
+        - python: pypy3
+install:
+    #- pip install -r requirements.txt
+    - pip install flake8  # pytest  # add another testing frameworks later
+before_script:
+    # stop the build if there are Python syntax errors or undefined names
+    - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
+    # exit-zero treats all errors as warnings.  The GitHub editor is 127 chars wide
+    - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+script:
+    - true  # pytest --capture=sys  # add other tests here
+notifications:
+    on_success: change
+    on_failure: change # `always` will be the setting once code changes slow down
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 09de83205..2744fac11 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -20,7 +20,7 @@ The following is a *short* list of recommendations. PRs that don't match these c
 * **Don't** leave your pull request description blank.
 * **Do** license your code as GPLv3.
 
-
+Also, please submit PRs to the develop branch.
 
 ## Issues
 * **Do** write a detailed description of your bug and use a descriptive title.
diff --git a/common/network/network_range.py b/common/network/network_range.py
index 0173b5810..a2142ce0e 100644
--- a/common/network/network_range.py
+++ b/common/network/network_range.py
@@ -4,6 +4,7 @@ import struct
 from abc import ABCMeta, abstractmethod
 
 import ipaddress
+from six import text_type
 
 __author__ = 'itamar'
 
@@ -65,7 +66,7 @@ class CidrRange(NetworkRange):
     def __init__(self, cidr_range, shuffle=True):
         super(CidrRange, self).__init__(shuffle=shuffle)
         self._cidr_range = cidr_range.strip()
-        self._ip_network = ipaddress.ip_network(unicode(self._cidr_range), strict=False)
+        self._ip_network = ipaddress.ip_network(text_type(self._cidr_range), strict=False)
 
     def __repr__(self):
         return "<CidrRange %s>" % (self._cidr_range,)
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 000000000..6cd945d70
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,19 @@
+FROM debian:jessie-slim
+
+LABEL MAINTAINER="theonlydoo <theonlydoo@gmail.com>"
+
+WORKDIR /app
+
+ADD https://github.com/guardicore/monkey/releases/download/1.5.2/infection_monkey_1.5.2_deb.tgz .
+
+RUN tar xvf infection_monkey_1.5.2_deb.tgz  \
+    && apt-get -yqq update                  \
+    && apt-get -yqq upgrade                 \
+    && apt-get -yqq install python-pip      \
+                            libssl-dev      \
+                            supervisor      \
+    && dpkg -i *.deb    
+
+COPY stack.conf /etc/supervisor/conf.d/stack.conf
+
+ENTRYPOINT [ "supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf" ]
\ No newline at end of file
diff --git a/docker/README.md b/docker/README.md
new file mode 100644
index 000000000..768730061
--- /dev/null
+++ b/docker/README.md
@@ -0,0 +1,11 @@
+# Improvements needed
+
+* Remove embedded mongodb from .deb, it forbids installation on a `debian:stretch` distro.
+* Package monkey for system's python usage.
+* Fix package number: (I installed the 1.5.2)
+```
+ii  gc-monkey-island           1.0                      amd64        Guardicore Infection Monkey Island installation package
+```
+* Use .deb dependencies for mongodb setup?
+* Use docker-compose for stack construction.
+* Remove the .sh script from the systemd unit file (`/var/monkey_island/ubuntu/systemd/start_server.sh`) which only does a `cd && localpython run`
\ No newline at end of file
diff --git a/docker/stack.conf b/docker/stack.conf
new file mode 100644
index 000000000..b742c0392
--- /dev/null
+++ b/docker/stack.conf
@@ -0,0 +1,4 @@
+[program:mongod]
+command=/var/monkey_island/bin/mongodb/bin/mongod --quiet --dbpath /var/monkey_island/db
+[program:monkey]
+command=/var/monkey_island/ubuntu/systemd/start_server.sh
diff --git a/infection_monkey/config.py b/infection_monkey/config.py
index c5421fb83..f4ca4e89e 100644
--- a/infection_monkey/config.py
+++ b/infection_monkey/config.py
@@ -40,7 +40,7 @@ def _cast_by_example(value, example):
         return int(value)
     elif example_type is float:
         return float(value)
-    elif example_type is types.ClassType or example_type is ABCMeta:
+    elif example_type in (type, ABCMeta):
         return globals()[value]
     else:
         return None
@@ -84,10 +84,10 @@ class Configuration(object):
             if val_type is types.FunctionType or val_type is types.MethodType:
                 continue
 
-            if val_type is types.ClassType or val_type is ABCMeta:
+            if val_type in (type, ABCMeta):
                 value = value.__name__
             elif val_type is tuple or val_type is list:
-                if len(value) != 0 and (type(value[0]) is types.ClassType or type(value[0]) is ABCMeta):
+                if len(value) != 0 and type(value[0]) in (type, ABCMeta):
                     value = val_type([x.__name__ for x in value])
 
             result[key] = value
diff --git a/infection_monkey/example.conf b/infection_monkey/example.conf
index 51a108e5d..bc0156d8a 100644
--- a/infection_monkey/example.conf
+++ b/infection_monkey/example.conf
@@ -3,9 +3,9 @@
         "41.50.73.31:5000"
     ],
     "internet_services": [
-     "monkey.guardicore.com",
-     "www.google.com"
-     ],
+        "monkey.guardicore.com",
+        "www.google.com"
+    ],
     "keep_tunnel_open_time": 60,
     "subnet_scan_list": [
         ""
@@ -36,15 +36,15 @@
         "WmiExploiter",
         "ShellShockExploiter",
         "ElasticGroovyExploiter",
-        "SambaCryExploiter",
+        "SambaCryExploiter"
     ],
     "finger_classes": [
         "SSHFinger",
         "PingScanner",
         "HTTPFinger",
         "SMBFinger",
-        "MySQLFinger"
-        "ElasticFinger",
+        "MySQLFinger",
+        "ElasticFinger"
     ],
     "max_iterations": 3,
     "monkey_log_path_windows": "%temp%\\~df1563.tmp",
@@ -91,4 +91,4 @@
     "use_file_logging": true,
     "victims_max_exploit": 7,
     "victims_max_find": 30
-}
+}
\ No newline at end of file
diff --git a/infection_monkey/exploit/rdpgrinder.py b/infection_monkey/exploit/rdpgrinder.py
index d95bd74ba..5d73c8279 100644
--- a/infection_monkey/exploit/rdpgrinder.py
+++ b/infection_monkey/exploit/rdpgrinder.py
@@ -27,7 +27,7 @@ LOG = getLogger(__name__)
 
 
 def twisted_log_func(*message, **kw):
-    if kw.has_key('isError') and kw['isError']:
+    if kw.get('isError'):
         error_msg = 'Unknown'
         if 'failure' in kw:
             error_msg = kw['failure'].getErrorMessage()
diff --git a/infection_monkey/exploit/shellshock.py b/infection_monkey/exploit/shellshock.py
index bca03b6ea..e1ef246b6 100644
--- a/infection_monkey/exploit/shellshock.py
+++ b/infection_monkey/exploit/shellshock.py
@@ -8,7 +8,7 @@ import requests
 
 from exploit import HostExploiter
 from exploit.tools import get_target_monkey, HTTPTools, get_monkey_depth
-from model import MONKEY_ARG
+from model import DROPPER_ARG
 from shellshock_resources import CGI_FILES
 from tools import build_monkey_commandline
 
@@ -133,7 +133,7 @@ class ShellShockExploiter(HostExploiter):
             self.attack_page(url, header, run_path)
 
             # run the monkey
-            cmdline = "%s %s" % (dropper_target_path_linux, MONKEY_ARG)
+            cmdline = "%s %s" % (dropper_target_path_linux, DROPPER_ARG)
             cmdline += build_monkey_commandline(self.host, get_monkey_depth() - 1) + ' & '
             run_path = exploit + cmdline
             self.attack_page(url, header, run_path)
diff --git a/infection_monkey/exploit/tools.py b/infection_monkey/exploit/tools.py
index 60e3950a6..dbbd8070a 100644
--- a/infection_monkey/exploit/tools.py
+++ b/infection_monkey/exploit/tools.py
@@ -405,7 +405,7 @@ def get_interface_to_target(dst):
         for d, m, gw, i, a in routes:
             aa = atol(a)
             if aa == dst:
-                pathes.append((0xffffffffL, ("lo", a, "0.0.0.0")))
+                pathes.append((0xffffffff, ("lo", a, "0.0.0.0")))
             if (dst & m) == (d & m):
                 pathes.append((m, (i, a, gw)))
         if not pathes:
diff --git a/infection_monkey/monkey.py b/infection_monkey/monkey.py
index b36569b78..8ad1baf8c 100644
--- a/infection_monkey/monkey.py
+++ b/infection_monkey/monkey.py
@@ -12,6 +12,7 @@ from control import ControlClient
 from model import DELAY_DELETE_CMD
 from network.firewall import app as firewall
 from network.network_scanner import NetworkScanner
+from six.moves import xrange
 from system_info import SystemInfoCollector
 from system_singleton import SystemSingleton
 from windows_upgrader import WindowsUpgrader
diff --git a/infection_monkey/network/info.py b/infection_monkey/network/info.py
index 179befd4f..a55dbcdc5 100644
--- a/infection_monkey/network/info.py
+++ b/infection_monkey/network/info.py
@@ -10,6 +10,11 @@ from subprocess import check_output
 from random import randint
 from common.network.network_range import CidrRange
 
+try:
+    long        # Python 2
+except NameError:
+    long = int  # Python 3
+
 
 def get_host_subnets():
     """
@@ -93,8 +98,8 @@ else:
                     ifaddr = socket.inet_ntoa(ifreq[20:24])
                 else:
                     continue
-            routes.append((socket.htonl(long(dst, 16)) & 0xffffffffL,
-                           socket.htonl(long(msk, 16)) & 0xffffffffL,
+            routes.append((socket.htonl(long(dst, 16)) & 0xffffffff,
+                           socket.htonl(long(msk, 16)) & 0xffffffff,
                            socket.inet_ntoa(struct.pack("I", long(gw, 16))),
                            iff, ifaddr))
 
diff --git a/infection_monkey/network/smbfinger.py b/infection_monkey/network/smbfinger.py
index bf8e5bfec..9ccb52422 100644
--- a/infection_monkey/network/smbfinger.py
+++ b/infection_monkey/network/smbfinger.py
@@ -144,13 +144,13 @@ class SMBFinger(HostFinger):
                     host.os['type'] = 'linux'
 
                 host.services[SMB_SERVICE]['name'] = service_client
-                if not host.os.has_key('version'):
+                if 'version' not in host.os:
                     host.os['version'] = os_version
                 else:
                     host.services[SMB_SERVICE]['os-version'] = os_version
 
                 return True
-        except Exception, exc:
+        except Exception as exc:
             LOG.debug("Error getting smb fingerprint: %s", exc)
 
         return False
diff --git a/infection_monkey/requirements.txt b/infection_monkey/requirements.txt
index bd7689886..8683987c4 100644
--- a/infection_monkey/requirements.txt
+++ b/infection_monkey/requirements.txt
@@ -10,8 +10,7 @@ odict
 paramiko
 psutil==3.4.2
 PyInstaller
+six
 ecdsa
 netifaces
-mock
-nose
-ipaddress
\ No newline at end of file
+ipaddress
diff --git a/infection_monkey/system_info/mimikatz_collector.py b/infection_monkey/system_info/mimikatz_collector.py
index e69bcd73e..65f326256 100644
--- a/infection_monkey/system_info/mimikatz_collector.py
+++ b/infection_monkey/system_info/mimikatz_collector.py
@@ -24,7 +24,7 @@ class MimikatzCollector(object):
             self._collect = collect_proto(("collect", self._dll))
             self._get = get_proto(("get", self._dll))
             self._isInit = True
-        except StandardError:
+        except Exception:
             LOG.exception("Error initializing mimikatz collector")
 
     def get_logon_info(self):
@@ -71,7 +71,7 @@ class MimikatzCollector(object):
                     logon_data_dictionary[username]["ntlm_hash"] = ntlm_hash
 
             return logon_data_dictionary
-        except StandardError:
+        except Exception:
             LOG.exception("Error getting logon info")
             return {}
 
diff --git a/infection_monkey/test/__init__.py b/infection_monkey/test/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/infection_monkey/test/config__test.py b/infection_monkey/test/config__test.py
deleted file mode 100644
index accdd5a49..000000000
--- a/infection_monkey/test/config__test.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- coding: UTF-8 -*-
-# NOTE: Launch all tests with `nosetests` command from infection_monkey dir.
-
-import json
-import unittest
-
-from mock import Mock, patch
-
-import control
-
-from config import GUID
-
-
-class ReportConfigErrorTestCase(unittest.TestCase):
-    """
-    When unknown config variable received form the island server, skip it and report config
-    error back to the server.
-    """
-
-    config_response = Mock(json=Mock(return_value={'config': {'blah': 'blah'}}))
-
-    def teardown(self):
-        patch.stopall()
-
-    def test_config(self):
-        patch('control.requests.patch', Mock()).start()
-        patch('control.WormConfiguration', Mock(current_server='127.0.0.1:123')).start()
-
-        # GIVEN the server with uknown config variable
-        patch('control.requests.get', Mock(return_value=self.config_response)).start()
-
-        # WHEN monkey tries to load config from server
-        control.ControlClient.load_control_config()
-
-        # THEN she reports config error back to the server
-        control.requests.patch.assert_called_once_with(
-                "https://127.0.0.1:123/api/monkey/%s" % GUID,
-                data=json.dumps({'config_error': True}),
-                headers={'content-type': 'application/json'},
-                verify=False,
-                proxies=control.ControlClient.proxies)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/infection_monkey/transport/ftp.py b/infection_monkey/transport/ftp.py
index 733dee884..c90f8c484 100644
--- a/infection_monkey/transport/ftp.py
+++ b/infection_monkey/transport/ftp.py
@@ -32,12 +32,12 @@ class FTPServer(threading.Thread):
                 try:
                     func=getattr(self,cmd[:4].strip().upper())
                     func(cmd)
-                except Exception,e:
+                except Exception as e:
                     self.conn.send('500 Sorry.\r\n')
                     break
         
         self.conn.close()
-        self.sock.close()                    
+        self.sock.close()
 
     def SYST(self,cmd):
         self.conn.send('215 UNIX Type: L8\r\n')
@@ -83,7 +83,7 @@ class FTPServer(threading.Thread):
     def PASV(self,cmd):
         self.pasv_mode = True
         self.servsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
-        self.servsock.bind((local_ip,0))
+        self.servsock.bind((self.local_ip,0))
         self.servsock.listen(1)
         ip, port = self.servsock.getsockname()
         self.conn.send('227 Entering Passive Mode (%s,%u,%u).\r\n' %
diff --git a/infection_monkey/transport/http.py b/infection_monkey/transport/http.py
index ee198a08a..8d07fd155 100644
--- a/infection_monkey/transport/http.py
+++ b/infection_monkey/transport/http.py
@@ -122,7 +122,7 @@ class HTTPConnectProxyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
         address = (u.hostname, u.port or 443)
         try:
             conn = socket.create_connection(address)
-        except socket.error, e:
+        except socket.error as e:
             LOG.debug("HTTPConnectProxyHandler: Got exception while trying to connect to %s: %s" % (repr(address), e))
             self.send_error(504)  # 504 Gateway Timeout
             return
diff --git a/infection_monkey/transport/tcp.py b/infection_monkey/transport/tcp.py
index ee3a05442..eaa94de1c 100644
--- a/infection_monkey/transport/tcp.py
+++ b/infection_monkey/transport/tcp.py
@@ -63,7 +63,7 @@ class TcpProxy(TransportProxyBase):
             try:
                 dest = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                 dest.connect((self.dest_host, self.dest_port))
-            except socket.error, ex:
+            except socket.error as ex:
                 source.close()
                 dest.close()
                 continue
diff --git a/monkey_island/cc/app.py b/monkey_island/cc/app.py
index 34d14ae86..6b9ac1154 100644
--- a/monkey_island/cc/app.py
+++ b/monkey_island/cc/app.py
@@ -14,6 +14,7 @@ from cc.resources.client_run import ClientRun
 from cc.resources.edge import Edge
 from cc.resources.local_run import LocalRun
 from cc.resources.log import Log
+from cc.resources.island_logs import IslandLog
 from cc.resources.monkey import Monkey
 from cc.resources.monkey_configuration import MonkeyConfiguration
 from cc.resources.monkey_download import MonkeyDownload
@@ -104,5 +105,6 @@ def init_app(mongo_url):
     api.add_resource(Report, '/api/report', '/api/report/')
     api.add_resource(TelemetryFeed, '/api/telemetry-feed', '/api/telemetry-feed/')
     api.add_resource(Log, '/api/log', '/api/log/')
+    api.add_resource(IslandLog, '/api/log/island/download', '/api/log/island/download/')
 
     return app
diff --git a/monkey_island/cc/environment/environment.py b/monkey_island/cc/environment/environment.py
index 8eb97a999..094b9c235 100644
--- a/monkey_island/cc/environment/environment.py
+++ b/monkey_island/cc/environment/environment.py
@@ -1,7 +1,11 @@
 import json
+import logging
 import standard
 import aws
 
+logger = logging.getLogger(__name__)
+
+
 ENV_DICT = {
     'standard': standard.StandardEnvironment,
     'aws': aws.AwsEnvironment
@@ -18,6 +22,7 @@ def load_env_from_file():
 try:
     __env_type = load_env_from_file()
     env = ENV_DICT[__env_type]()
+    logger.info('Monkey\'s env is: {0}'.format(env.__class__.__name__))
 except Exception:
-    print('Failed initializing environment: %s' % __env_type)
+    logger.error('Failed initializing environment', exc_info=True)
     raise
diff --git a/monkey_island/cc/island_logger.py b/monkey_island/cc/island_logger.py
new file mode 100644
index 000000000..8fbef1e0e
--- /dev/null
+++ b/monkey_island/cc/island_logger.py
@@ -0,0 +1,26 @@
+import os
+import json
+import logging.config
+
+
+__author__ = 'Maor.Rayzin'
+
+
+def json_setup_logging(default_path='logging.json', default_level=logging.INFO, env_key='LOG_CFG'):
+    """
+    Setup the logging configuration
+    :param default_path: the default log configuration file path
+    :param default_level: Default level to log from
+    :param env_key: SYS ENV key to use for external configuration file path
+    :return:
+    """
+    path = default_path
+    value = os.getenv(env_key, None)
+    if value:
+        path = value
+    if os.path.exists(path):
+        with open(path, 'rt') as f:
+            config = json.load(f)
+        logging.config.dictConfig(config)
+    else:
+        logging.basicConfig(level=default_level)
diff --git a/monkey_island/cc/island_logger_default_config.json b/monkey_island/cc/island_logger_default_config.json
new file mode 100644
index 000000000..e41ca3d9b
--- /dev/null
+++ b/monkey_island/cc/island_logger_default_config.json
@@ -0,0 +1,33 @@
+{
+    "version": 1,
+    "disable_existing_loggers": false,
+    "formatters": {
+        "simple": {
+            "format": "%(asctime)s - %(filename)s:%(lineno)s - %(funcName)10s() - %(levelname)s - %(message)s"
+        }
+    },
+
+    "handlers": {
+        "console": {
+            "class": "logging.StreamHandler",
+            "level": "DEBUG",
+            "formatter": "simple",
+            "stream": "ext://sys.stdout"
+        },
+
+        "info_file_handler": {
+            "class": "logging.handlers.RotatingFileHandler",
+            "level": "INFO",
+            "formatter": "simple",
+            "filename": "info.log",
+            "maxBytes": 10485760,
+            "backupCount": 20,
+            "encoding": "utf8"
+        }
+    },
+
+    "root": {
+        "level": "INFO",
+        "handlers": ["console", "info_file_handler"]
+    }
+}
\ No newline at end of file
diff --git a/monkey_island/cc/main.py b/monkey_island/cc/main.py
index e0f6ab079..c1133a9c8 100644
--- a/monkey_island/cc/main.py
+++ b/monkey_island/cc/main.py
@@ -2,19 +2,25 @@ from __future__ import print_function  # In python 2.7
 
 import os
 import sys
-
 import time
+import logging
 
 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 if BASE_PATH not in sys.path:
     sys.path.insert(0, BASE_PATH)
 
+from cc.island_logger import json_setup_logging
+# This is here in order to catch EVERYTHING, some functions are being called on imports the log init needs to be on top.
+json_setup_logging(default_path='island_logger_default_config.json', default_level=logging.DEBUG)
+logger = logging.getLogger(__name__)
+
 from cc.app import init_app
 from cc.utils import local_ip_addresses
 from cc.environment.environment import env
 from cc.database import is_db_server_up
 
-if __name__ == '__main__':
+
+def main():
     from tornado.wsgi import WSGIContainer
     from tornado.httpserver import HTTPServer
     from tornado.ioloop import IOLoop
@@ -22,7 +28,7 @@ if __name__ == '__main__':
     mongo_url = os.environ.get('MONGO_URL', env.get_mongo_url())
 
     while not is_db_server_up(mongo_url):
-        print('Waiting for MongoDB server')
+        logger.info('Waiting for MongoDB server')
         time.sleep(1)
 
     app = init_app(mongo_url)
@@ -33,6 +39,10 @@ if __name__ == '__main__':
                                  ssl_options={'certfile': os.environ.get('SERVER_CRT', 'server.crt'),
                                               'keyfile': os.environ.get('SERVER_KEY', 'server.key')})
         http_server.listen(env.get_island_port())
-        print('Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
+        logger.info(
+            'Monkey Island Server is running on https://{}:{}'.format(local_ip_addresses()[0], env.get_island_port()))
         IOLoop.instance().start()
 
+
+if __name__ == '__main__':
+    main()
diff --git a/monkey_island/cc/resources/client_run.py b/monkey_island/cc/resources/client_run.py
index 111c0d1a2..0e4be42e7 100644
--- a/monkey_island/cc/resources/client_run.py
+++ b/monkey_island/cc/resources/client_run.py
@@ -1,3 +1,4 @@
+import logging
 from flask import request, jsonify
 import flask_restful
 
@@ -5,6 +6,8 @@ from cc.services.node import NodeService
 
 __author__ = 'itay.mizeretz'
 
+logger = logging.getLogger(__name__)
+
 
 class ClientRun(flask_restful.Resource):
     def get(self):
@@ -17,6 +20,7 @@ class ClientRun(flask_restful.Resource):
         if monkey is not None:
             is_monkey_running = not monkey["dead"]
         else:
+            logger.info("Monkey is not running")
             is_monkey_running = False
 
         return jsonify(is_running=is_monkey_running)
diff --git a/monkey_island/cc/resources/island_logs.py b/monkey_island/cc/resources/island_logs.py
new file mode 100644
index 000000000..971306c14
--- /dev/null
+++ b/monkey_island/cc/resources/island_logs.py
@@ -0,0 +1,19 @@
+import logging
+
+import flask_restful
+
+from cc.auth import jwt_required
+from cc.services.island_logs import IslandLogService
+
+__author__ = "Maor.Rayzin"
+
+logger = logging.getLogger(__name__)
+
+
+class IslandLog(flask_restful.Resource):
+    @jwt_required()
+    def get(self):
+        try:
+            return IslandLogService.get_log_file()
+        except Exception as e:
+            logger.error('Monkey Island logs failed to download', exc_info=True)
diff --git a/monkey_island/cc/resources/local_run.py b/monkey_island/cc/resources/local_run.py
index c588eaf80..7b8965e1e 100644
--- a/monkey_island/cc/resources/local_run.py
+++ b/monkey_island/cc/resources/local_run.py
@@ -13,6 +13,8 @@ from cc.utils import local_ip_addresses
 
 __author__ = 'Barak'
 
+import logging
+logger = logging.getLogger(__name__)
 
 def run_local_monkey():
     import platform
@@ -32,6 +34,7 @@ def run_local_monkey():
         copyfile(monkey_path, target_path)
         os.chmod(target_path, stat.S_IRWXU | stat.S_IRWXG)
     except Exception as exc:
+        logger.error('Copy file failed', exc_info=True)
         return False, "Copy file failed: %s" % exc
 
     # run the monkey
@@ -41,6 +44,7 @@ def run_local_monkey():
             args = "".join(args)
         pid = subprocess.Popen(args, shell=True).pid
     except Exception as exc:
+        logger.error('popen failed', exc_info=True)
         return False, "popen failed: %s" % exc
 
     return True, "pis: %s" % pid
diff --git a/monkey_island/cc/resources/monkey_configuration.py b/monkey_island/cc/resources/monkey_configuration.py
index db4d17167..6dab8dddb 100644
--- a/monkey_island/cc/resources/monkey_configuration.py
+++ b/monkey_island/cc/resources/monkey_configuration.py
@@ -17,7 +17,7 @@ class MonkeyConfiguration(flask_restful.Resource):
     @jwt_required()
     def post(self):
         config_json = json.loads(request.data)
-        if config_json.has_key('reset'):
+        if 'reset' in config_json:
             ConfigService.reset_config()
         else:
             ConfigService.update_config(config_json, should_encrypt=True)
diff --git a/monkey_island/cc/resources/monkey_download.py b/monkey_island/cc/resources/monkey_download.py
index ac1f9de2d..25e67fdb2 100644
--- a/monkey_island/cc/resources/monkey_download.py
+++ b/monkey_island/cc/resources/monkey_download.py
@@ -1,3 +1,4 @@
+import logging
 import json
 
 import os
@@ -6,6 +7,8 @@ import flask_restful
 
 __author__ = 'Barak'
 
+logger = logging.getLogger(__name__)
+
 
 MONKEY_DOWNLOADS = [
     {
@@ -42,7 +45,10 @@ MONKEY_DOWNLOADS = [
 def get_monkey_executable(host_os, machine):
     for download in MONKEY_DOWNLOADS:
         if host_os == download.get('type') and machine == download.get('machine'):
+            logger.info('Monkey exec found for os: {0} and machine: {1}'.format(host_os, machine))
             return download
+    logger.warning('No monkey executables could be found for the host os or machine or both: host_os: {0}, machine: {1}'
+                   .format(host_os, machine))
     return None
 
 
diff --git a/monkey_island/cc/resources/root.py b/monkey_island/cc/resources/root.py
index 61c788d7e..56a7695c7 100644
--- a/monkey_island/cc/resources/root.py
+++ b/monkey_island/cc/resources/root.py
@@ -1,4 +1,5 @@
 from datetime import datetime
+import logging
 
 import flask_restful
 from flask import request, make_response, jsonify
@@ -12,6 +13,8 @@ from cc.utils import local_ip_addresses
 
 __author__ = 'Barak'
 
+logger = logging.getLogger(__name__)
+
 
 class Root(flask_restful.Resource):
 
@@ -42,6 +45,7 @@ class Root(flask_restful.Resource):
         # We can't drop system collections.
         [mongo.db[x].drop() for x in mongo.db.collection_names() if not x.startswith('system.')]
         ConfigService.init_config()
+        logger.info('DB was reset')
         return jsonify(status='OK')
 
     @staticmethod
@@ -50,6 +54,7 @@ class Root(flask_restful.Resource):
         mongo.db.monkey.update({'dead': False}, {'$set': {'config.alive': False, 'modifytime': datetime.now()}},
                                upsert=False,
                                multi=True)
+        logger.info('Kill all monkeys was called')
         return jsonify(status='OK')
 
     @staticmethod
@@ -59,6 +64,7 @@ class Root(flask_restful.Resource):
         infection_done = NodeService.is_monkey_finished_running()
         if not infection_done:
             report_done = False
+            logger.info('Report generation cannot be completed, infection is not done.')
         else:
             report_done = ReportService.is_report_generated()
         return dict(run_server=True, run_monkey=is_any_exists, infection_done=infection_done, report_done=report_done)
diff --git a/monkey_island/cc/resources/telemetry.py b/monkey_island/cc/resources/telemetry.py
index 01caf3003..052b8a045 100644
--- a/monkey_island/cc/resources/telemetry.py
+++ b/monkey_island/cc/resources/telemetry.py
@@ -1,4 +1,5 @@
 import json
+import logging
 import traceback
 import copy
 from datetime import datetime
@@ -17,6 +18,9 @@ from cc.encryptor import encryptor
 __author__ = 'Barak'
 
 
+logger = logging.getLogger(__name__)
+
+
 class Telemetry(flask_restful.Resource):
     @jwt_required()
     def get(self, **kw):
@@ -52,10 +56,9 @@ class Telemetry(flask_restful.Resource):
             if telem_type in TELEM_PROCESS_DICT:
                 TELEM_PROCESS_DICT[telem_type](telemetry_json)
             else:
-                print('Got unknown type of telemetry: %s' % telem_type)
-        except StandardError as ex:
-            print("Exception caught while processing telemetry: %s" % str(ex))
-            traceback.print_exc()
+                logger.info('Got unknown type of telemetry: %s' % telem_type)
+        except Exception as ex:
+            logger.error("Exception caught while processing telemetry", exc_info=True)
 
         telem_id = mongo.db.telemetry.insert(telemetry_json)
         return mongo.db.telemetry.find_one_or_404({"_id": telem_id})
diff --git a/monkey_island/cc/services/config.py b/monkey_island/cc/services/config.py
index 11f58481f..390968a86 100644
--- a/monkey_island/cc/services/config.py
+++ b/monkey_island/cc/services/config.py
@@ -1,7 +1,9 @@
 import copy
 import collections
 import functools
+import logging
 from jsonschema import Draft4Validator, validators
+from six import string_types
 
 from cc.database import mongo
 from cc.encryptor import encryptor
@@ -10,6 +12,8 @@ from cc.utils import local_ip_addresses
 
 __author__ = "itay.mizeretz"
 
+logger = logging.getLogger(__name__)
+
 WARNING_SIGN = u" \u26A0"
 
 SCHEMA = {
@@ -916,6 +920,7 @@ class ConfigService:
         if should_encrypt:
             ConfigService.encrypt_config(config_json)
         mongo.db.config.update({'name': 'newconfig'}, {"$set": config_json}, upsert=True)
+        logger.info('monkey config was updated')
 
     @staticmethod
     def init_default_config():
@@ -931,6 +936,7 @@ class ConfigService:
         config = copy.deepcopy(ConfigService.default_config)
         if should_encrypt:
             ConfigService.encrypt_config(config)
+        logger.info("Default config was called")
         return config
 
     @staticmethod
@@ -944,6 +950,7 @@ class ConfigService:
         config = ConfigService.get_default_config(True)
         ConfigService.set_server_ips_in_config(config)
         ConfigService.update_config(config, should_encrypt=False)
+        logger.info('Monkey config reset was called')
 
     @staticmethod
     def set_server_ips_in_config(config):
@@ -960,6 +967,7 @@ class ConfigService:
         initial_config['name'] = 'initial'
         initial_config.pop('_id')
         mongo.db.config.insert(initial_config)
+        logger.info('Monkey config was inserted to mongo and saved')
 
     @staticmethod
     def _extend_config_with_default(validator_class):
@@ -1001,7 +1009,7 @@ class ConfigService:
         """
         keys = [config_arr_as_array[2] for config_arr_as_array in ENCRYPTED_CONFIG_ARRAYS]
         for key in keys:
-            if isinstance(flat_config[key], collections.Sequence) and not isinstance(flat_config[key], basestring):
+            if isinstance(flat_config[key], collections.Sequence) and not isinstance(flat_config[key], string_types):
                 # Check if we are decrypting ssh key pair
                 if flat_config[key] and isinstance(flat_config[key][0], dict) and 'public_key' in flat_config[key][0]:
                     flat_config[key] = [ConfigService.decrypt_ssh_key_pair(item) for item in flat_config[key]]
diff --git a/monkey_island/cc/services/island_logs.py b/monkey_island/cc/services/island_logs.py
new file mode 100644
index 000000000..77b28bdd4
--- /dev/null
+++ b/monkey_island/cc/services/island_logs.py
@@ -0,0 +1,32 @@
+import logging
+__author__ = "Maor.Rayzin"
+
+logger = logging.getLogger(__name__)
+
+
+class IslandLogService:
+    def __init__(self):
+        pass
+
+    @staticmethod
+    def get_log_file():
+        """
+        This static function is a helper function for the monkey island log download function.
+        It finds the logger handlers and checks if one of them is a fileHandler of any kind by checking if the handler
+        has the property handler.baseFilename.
+        :return:
+        a dict with the log file content.
+        """
+        logger_handlers = logger.parent.handlers
+        for handler in logger_handlers:
+            if hasattr(handler, 'baseFilename'):
+                logger.info('Log file found: {0}'.format(handler.baseFilename))
+                log_file_path = handler.baseFilename
+                with open(log_file_path, 'rt') as f:
+                    log_file = f.read()
+                return {
+                    'log_file': log_file
+                }
+
+        logger.warning('No log file could be found, check logger config.')
+        return None
diff --git a/monkey_island/cc/services/report.py b/monkey_island/cc/services/report.py
index 561ef004b..13b52422c 100644
--- a/monkey_island/cc/services/report.py
+++ b/monkey_island/cc/services/report.py
@@ -1,6 +1,9 @@
 import ipaddress
+import logging
 from enum import Enum
 
+from six import text_type
+
 from cc.database import mongo
 from cc.services.config import ConfigService
 from cc.services.edge import EdgeService
@@ -10,6 +13,9 @@ from cc.utils import local_ip_addresses, get_subnets
 __author__ = "itay.mizeretz"
 
 
+logger = logging.getLogger(__name__)
+
+
 class ReportService:
     def __init__(self):
         pass
@@ -78,6 +84,8 @@ class ReportService:
         creds = ReportService.get_azure_creds()
         machines = set([instance['origin'] for instance in creds])
 
+        logger.info('Azure issues generated for reporting')
+
         return [
             {
                 'type': 'azure_password',
@@ -104,6 +112,8 @@ class ReportService:
             }
             for node in nodes]
 
+        logger.info('Scanned nodes generated for reporting')
+
         return nodes
 
     @staticmethod
@@ -125,6 +135,8 @@ class ReportService:
             }
             for monkey in exploited]
 
+        logger.info('Exploited nodes generated for reporting')
+
         return exploited
 
     @staticmethod
@@ -148,6 +160,7 @@ class ReportService:
                             'origin': origin
                         }
                     )
+        logger.info('Stolen creds generated for reporting')
         return creds
 
     @staticmethod
@@ -189,6 +202,8 @@ class ReportService:
             azure_leaked_users = [{'username': user.replace(',', '.'), 'type': 'Clear Password',
                                    'origin': origin} for user in azure_users]
             creds.extend(azure_leaked_users)
+
+        logger.info('Azure machines creds generated for reporting')
         return creds
 
     @staticmethod
@@ -311,7 +326,7 @@ class ReportService:
 
         return \
             [
-                ipaddress.ip_interface(unicode(network['addr'] + '/' + network['netmask'])).network
+                ipaddress.ip_interface(text_type(network['addr'] + '/' + network['netmask'])).network
                 for network in network_info['data']['network_info']['networks']
             ]
 
@@ -324,7 +339,7 @@ class ReportService:
             monkey_subnets = ReportService.get_monkey_subnets(monkey['guid'])
             for subnet in monkey_subnets:
                 for ip in island_ips:
-                    if ipaddress.ip_address(unicode(ip)) in subnet:
+                    if ipaddress.ip_address(text_type(ip)) in subnet:
                         found_good_ip = True
                         break
                 if found_good_ip:
@@ -348,6 +363,7 @@ class ReportService:
             if machine not in issues_dict:
                 issues_dict[machine] = []
             issues_dict[machine].append(issue)
+        logger.info('Issues generated for reporting')
         return issues_dict
 
     @staticmethod
@@ -437,6 +453,7 @@ class ReportService:
             {'name': 'generated_report'},
             {'$set': {'value': True}},
             upsert=True)
+        logger.info("Report marked as generated.")
 
     @staticmethod
     def get_report():
diff --git a/monkey_island/cc/ui/package-lock.json b/monkey_island/cc/ui/package-lock.json
index 57cdfdc01..e0f519cbc 100644
--- a/monkey_island/cc/ui/package-lock.json
+++ b/monkey_island/cc/ui/package-lock.json
@@ -347,7 +347,7 @@
           "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
           "dev": true,
           "requires": {
-            "core-js": "2.5.5",
+            "core-js": "2.5.6",
             "regenerator-runtime": "0.11.0"
           }
         },
@@ -442,7 +442,7 @@
           "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
           "dev": true,
           "requires": {
-            "core-js": "2.5.5",
+            "core-js": "2.5.6",
             "regenerator-runtime": "0.11.0"
           }
         },
@@ -1170,7 +1170,7 @@
       "dev": true,
       "requires": {
         "babel-runtime": "6.26.0",
-        "core-js": "2.5.5",
+        "core-js": "2.5.6",
         "regenerator-runtime": "0.10.5"
       },
       "dependencies": {
@@ -1180,7 +1180,7 @@
           "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
           "dev": true,
           "requires": {
-            "core-js": "2.5.5",
+            "core-js": "2.5.6",
             "regenerator-runtime": "0.11.0"
           },
           "dependencies": {
@@ -1304,7 +1304,7 @@
       "requires": {
         "babel-core": "6.26.0",
         "babel-runtime": "6.26.0",
-        "core-js": "2.5.5",
+        "core-js": "2.5.6",
         "home-or-tmp": "2.0.0",
         "lodash": "4.17.4",
         "mkdirp": "0.5.1",
@@ -1317,7 +1317,7 @@
           "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
           "dev": true,
           "requires": {
-            "core-js": "2.5.5",
+            "core-js": "2.5.6",
             "regenerator-runtime": "0.11.0"
           }
         },
@@ -1334,7 +1334,7 @@
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz",
       "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=",
       "requires": {
-        "core-js": "2.5.5",
+        "core-js": "2.5.6",
         "regenerator-runtime": "0.10.5"
       }
     },
@@ -2105,9 +2105,9 @@
       }
     },
     "core-js": {
-      "version": "2.5.5",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
-      "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
+      "version": "2.5.6",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
+      "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -5262,7 +5262,7 @@
         "colors": "1.1.2",
         "combine-lists": "1.0.1",
         "connect": "3.6.3",
-        "core-js": "2.5.5",
+        "core-js": "2.5.6",
         "di": "0.0.1",
         "dom-serialize": "2.2.1",
         "expand-braces": "0.1.2",
@@ -6201,9 +6201,9 @@
       "integrity": "sha1-IdZsxVcVTUN5/R4HnsfeWKN5sJk="
     },
     "npm": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/npm/-/npm-5.8.0.tgz",
-      "integrity": "sha512-DowXzQwtSWDtbAjuWecuEiismR0VdNEYaL3VxNTYTdW6AGkYxfGk9LUZ/rt6etEyiH4IEk95HkJeGfXE5Rz9xQ==",
+      "version": "5.10.0",
+      "resolved": "https://registry.npmjs.org/npm/-/npm-5.10.0.tgz",
+      "integrity": "sha512-lvjvjgR5wG2RJ2uqak1xtZcVAWMwVOzN5HkUlUj/n8rU1f3A0fNn+7HwOzH9Lyf0Ppyu9ApgsEpHczOSnx1cwA==",
       "requires": {
         "JSONStream": "1.3.2",
         "abbrev": "1.1.1",
@@ -6214,9 +6214,11 @@
         "archy": "1.0.0",
         "bin-links": "1.1.0",
         "bluebird": "3.5.1",
+        "byte-size": "4.0.2",
         "cacache": "10.0.4",
         "call-limit": "1.1.0",
         "chownr": "1.0.1",
+        "cli-columns": "3.1.2",
         "cli-table2": "0.2.0",
         "cmd-shim": "2.0.2",
         "columnify": "1.5.4",
@@ -6241,11 +6243,12 @@
         "ini": "1.3.5",
         "init-package-json": "1.10.3",
         "is-cidr": "1.0.0",
-        "json-parse-better-errors": "1.0.1",
+        "json-parse-better-errors": "1.0.2",
         "lazy-property": "1.0.0",
-        "libcipm": "1.6.0",
-        "libnpx": "10.0.1",
-        "lockfile": "1.0.3",
+        "libcipm": "1.6.2",
+        "libnpx": "10.2.0",
+        "lock-verify": "2.0.2",
+        "lockfile": "1.0.4",
         "lodash._baseindexof": "3.1.0",
         "lodash._baseuniq": "4.6.0",
         "lodash._bindcallback": "3.0.1",
@@ -6257,20 +6260,23 @@
         "lodash.union": "4.6.0",
         "lodash.uniq": "4.5.0",
         "lodash.without": "4.4.0",
-        "lru-cache": "4.1.1",
+        "lru-cache": "4.1.2",
         "meant": "1.0.1",
         "mississippi": "3.0.0",
         "mkdirp": "0.5.1",
         "move-concurrently": "1.0.1",
+        "node-gyp": "3.6.2",
         "nopt": "4.0.1",
         "normalize-package-data": "2.4.0",
+        "npm-audit-report": "1.0.9",
         "npm-cache-filename": "1.0.2",
         "npm-install-checks": "3.0.0",
         "npm-lifecycle": "2.0.1",
-        "npm-package-arg": "6.0.0",
+        "npm-package-arg": "6.1.0",
         "npm-packlist": "1.1.10",
         "npm-profile": "3.0.1",
         "npm-registry-client": "8.5.1",
+        "npm-registry-fetch": "1.1.0",
         "npm-user-validate": "1.0.0",
         "npmlog": "4.1.2",
         "once": "1.4.0",
@@ -6279,39 +6285,40 @@
         "pacote": "7.6.1",
         "path-is-inside": "1.0.2",
         "promise-inflight": "1.0.1",
-        "qrcode-terminal": "0.11.0",
-        "query-string": "5.1.0",
+        "qrcode-terminal": "0.12.0",
+        "query-string": "6.1.0",
         "qw": "1.0.1",
         "read": "1.0.7",
         "read-cmd-shim": "1.0.1",
         "read-installed": "4.0.3",
         "read-package-json": "2.0.13",
-        "read-package-tree": "5.1.6",
-        "readable-stream": "2.3.5",
+        "read-package-tree": "5.2.1",
+        "readable-stream": "2.3.6",
         "readdir-scoped-modules": "1.0.2",
-        "request": "2.83.0",
-        "retry": "0.10.1",
+        "request": "2.85.0",
+        "retry": "0.12.0",
         "rimraf": "2.6.2",
-        "safe-buffer": "5.1.1",
+        "safe-buffer": "5.1.2",
         "semver": "5.5.0",
         "sha": "2.0.1",
         "slide": "1.1.6",
         "sorted-object": "2.0.1",
         "sorted-union-stream": "2.1.3",
-        "ssri": "5.2.4",
+        "ssri": "5.3.0",
         "strip-ansi": "4.0.0",
-        "tar": "4.4.0",
+        "tar": "4.4.2",
         "text-table": "0.2.0",
+        "tiny-relative-date": "1.3.0",
         "uid-number": "0.0.6",
         "umask": "1.1.0",
         "unique-filename": "1.1.0",
         "unpipe": "1.0.0",
-        "update-notifier": "2.3.0",
+        "update-notifier": "2.5.0",
         "uuid": "3.2.1",
-        "validate-npm-package-license": "3.0.1",
+        "validate-npm-package-license": "3.0.3",
         "validate-npm-package-name": "3.0.0",
         "which": "1.3.0",
-        "worker-farm": "1.5.4",
+        "worker-farm": "1.6.0",
         "wrappy": "1.0.2",
         "write-file-atomic": "2.3.0"
       },
@@ -6374,6 +6381,10 @@
           "version": "3.5.1",
           "bundled": true
         },
+        "byte-size": {
+          "version": "4.0.2",
+          "bundled": true
+        },
         "cacache": {
           "version": "10.0.4",
           "bundled": true,
@@ -6382,13 +6393,13 @@
             "chownr": "1.0.1",
             "glob": "7.1.2",
             "graceful-fs": "4.1.11",
-            "lru-cache": "4.1.1",
+            "lru-cache": "4.1.2",
             "mississippi": "2.0.0",
             "mkdirp": "0.5.1",
             "move-concurrently": "1.0.1",
             "promise-inflight": "1.0.1",
             "rimraf": "2.6.2",
-            "ssri": "5.2.4",
+            "ssri": "5.3.0",
             "unique-filename": "1.1.0",
             "y18n": "4.0.0"
           },
@@ -6414,7 +6425,7 @@
                   "bundled": true,
                   "requires": {
                     "inherits": "2.0.3",
-                    "readable-stream": "2.3.5",
+                    "readable-stream": "2.3.6",
                     "typedarray": "0.0.6"
                   },
                   "dependencies": {
@@ -6430,7 +6441,7 @@
                   "requires": {
                     "end-of-stream": "1.4.1",
                     "inherits": "2.0.3",
-                    "readable-stream": "2.3.5",
+                    "readable-stream": "2.3.6",
                     "stream-shift": "1.0.0"
                   },
                   "dependencies": {
@@ -6452,7 +6463,7 @@
                   "bundled": true,
                   "requires": {
                     "inherits": "2.0.3",
-                    "readable-stream": "2.3.5"
+                    "readable-stream": "2.3.6"
                   }
                 },
                 "from2": {
@@ -6460,7 +6471,7 @@
                   "bundled": true,
                   "requires": {
                     "inherits": "2.0.3",
-                    "readable-stream": "2.3.5"
+                    "readable-stream": "2.3.6"
                   }
                 },
                 "parallel-transform": {
@@ -6469,7 +6480,7 @@
                   "requires": {
                     "cyclist": "0.2.2",
                     "inherits": "2.0.3",
-                    "readable-stream": "2.3.5"
+                    "readable-stream": "2.3.6"
                   },
                   "dependencies": {
                     "cyclist": {
@@ -6513,7 +6524,7 @@
                   "version": "2.0.3",
                   "bundled": true,
                   "requires": {
-                    "readable-stream": "2.3.5",
+                    "readable-stream": "2.3.6",
                     "xtend": "4.0.1"
                   },
                   "dependencies": {
@@ -6539,6 +6550,50 @@
           "version": "1.0.1",
           "bundled": true
         },
+        "cli-columns": {
+          "version": "3.1.2",
+          "bundled": true,
+          "requires": {
+            "string-width": "2.1.1",
+            "strip-ansi": "3.0.1"
+          },
+          "dependencies": {
+            "string-width": {
+              "version": "2.1.1",
+              "bundled": true,
+              "requires": {
+                "is-fullwidth-code-point": "2.0.0",
+                "strip-ansi": "4.0.0"
+              },
+              "dependencies": {
+                "is-fullwidth-code-point": {
+                  "version": "2.0.0",
+                  "bundled": true
+                },
+                "strip-ansi": {
+                  "version": "4.0.0",
+                  "bundled": true,
+                  "requires": {
+                    "ansi-regex": "3.0.0"
+                  }
+                }
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "bundled": true,
+              "requires": {
+                "ansi-regex": "2.1.1"
+              },
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "2.1.1",
+                  "bundled": true
+                }
+              }
+            }
+          }
+        },
         "cli-table2": {
           "version": "0.2.0",
           "bundled": true,
@@ -6717,7 +6772,7 @@
             "graceful-fs": "4.1.11",
             "iferr": "0.1.5",
             "imurmurhash": "0.1.4",
-            "readable-stream": "2.3.5"
+            "readable-stream": "2.3.6"
           }
         },
         "gentle-fs": {
@@ -6824,12 +6879,12 @@
           "bundled": true,
           "requires": {
             "glob": "7.1.2",
-            "npm-package-arg": "6.0.0",
+            "npm-package-arg": "6.1.0",
             "promzard": "0.3.0",
             "read": "1.0.7",
             "read-package-json": "2.0.13",
             "semver": "5.5.0",
-            "validate-npm-package-license": "3.0.1",
+            "validate-npm-package-license": "3.0.3",
             "validate-npm-package-name": "3.0.0"
           },
           "dependencies": {
@@ -6856,7 +6911,7 @@
           }
         },
         "json-parse-better-errors": {
-          "version": "1.0.1",
+          "version": "1.0.2",
           "bundled": true
         },
         "lazy-property": {
@@ -6864,26 +6919,26 @@
           "bundled": true
         },
         "libcipm": {
-          "version": "1.6.0",
+          "version": "1.6.2",
           "bundled": true,
           "requires": {
             "bin-links": "1.1.0",
             "bluebird": "3.5.1",
             "find-npm-prefix": "1.0.2",
             "graceful-fs": "4.1.11",
-            "lock-verify": "2.0.0",
+            "lock-verify": "2.0.1",
             "npm-lifecycle": "2.0.1",
             "npm-logical-tree": "1.2.1",
-            "npm-package-arg": "6.0.0",
+            "npm-package-arg": "6.1.0",
             "pacote": "7.6.1",
             "protoduck": "5.0.0",
             "read-package-json": "2.0.13",
             "rimraf": "2.6.2",
-            "worker-farm": "1.5.4"
+            "worker-farm": "1.6.0"
           },
           "dependencies": {
             "lock-verify": {
-              "version": "2.0.0",
+              "version": "2.0.1",
               "bundled": true,
               "requires": {
                 "npm-package-arg": "5.1.2",
@@ -6918,45 +6973,18 @@
                   "bundled": true
                 }
               }
-            },
-            "worker-farm": {
-              "version": "1.5.4",
-              "bundled": true,
-              "requires": {
-                "errno": "0.1.7",
-                "xtend": "4.0.1"
-              },
-              "dependencies": {
-                "errno": {
-                  "version": "0.1.7",
-                  "bundled": true,
-                  "requires": {
-                    "prr": "1.0.1"
-                  },
-                  "dependencies": {
-                    "prr": {
-                      "version": "1.0.1",
-                      "bundled": true
-                    }
-                  }
-                },
-                "xtend": {
-                  "version": "4.0.1",
-                  "bundled": true
-                }
-              }
             }
           }
         },
         "libnpx": {
-          "version": "10.0.1",
+          "version": "10.2.0",
           "bundled": true,
           "requires": {
             "dotenv": "5.0.1",
-            "npm-package-arg": "6.0.0",
+            "npm-package-arg": "6.1.0",
             "rimraf": "2.6.2",
-            "safe-buffer": "5.1.1",
-            "update-notifier": "2.3.0",
+            "safe-buffer": "5.1.2",
+            "update-notifier": "2.5.0",
             "which": "1.3.0",
             "y18n": "4.0.0",
             "yargs": "11.0.0"
@@ -6974,7 +7002,7 @@
               "version": "11.0.0",
               "bundled": true,
               "requires": {
-                "cliui": "4.0.0",
+                "cliui": "4.1.0",
                 "decamelize": "1.2.0",
                 "find-up": "2.1.0",
                 "get-caller-file": "1.0.2",
@@ -6989,7 +7017,7 @@
               },
               "dependencies": {
                 "cliui": {
-                  "version": "4.0.0",
+                  "version": "4.1.0",
                   "bundled": true,
                   "requires": {
                     "string-width": "2.1.1",
@@ -7129,7 +7157,7 @@
                           "version": "5.1.0",
                           "bundled": true,
                           "requires": {
-                            "lru-cache": "4.1.1",
+                            "lru-cache": "4.1.2",
                             "shebang-command": "1.2.0",
                             "which": "1.3.0"
                           },
@@ -7263,9 +7291,26 @@
             }
           }
         },
+        "lock-verify": {
+          "version": "2.0.2",
+          "bundled": true,
+          "requires": {
+            "npm-package-arg": "6.1.0",
+            "semver": "5.5.0"
+          }
+        },
         "lockfile": {
-          "version": "1.0.3",
-          "bundled": true
+          "version": "1.0.4",
+          "bundled": true,
+          "requires": {
+            "signal-exit": "3.0.2"
+          },
+          "dependencies": {
+            "signal-exit": {
+              "version": "3.0.2",
+              "bundled": true
+            }
+          }
         },
         "lodash._baseindexof": {
           "version": "3.1.0",
@@ -7329,7 +7374,7 @@
           "bundled": true
         },
         "lru-cache": {
-          "version": "4.1.1",
+          "version": "4.1.2",
           "bundled": true,
           "requires": {
             "pseudomap": "1.0.2",
@@ -7371,7 +7416,7 @@
               "bundled": true,
               "requires": {
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5",
+                "readable-stream": "2.3.6",
                 "typedarray": "0.0.6"
               },
               "dependencies": {
@@ -7387,7 +7432,7 @@
               "requires": {
                 "end-of-stream": "1.4.1",
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5",
+                "readable-stream": "2.3.6",
                 "stream-shift": "1.0.0"
               },
               "dependencies": {
@@ -7409,7 +7454,7 @@
               "bundled": true,
               "requires": {
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5"
+                "readable-stream": "2.3.6"
               }
             },
             "from2": {
@@ -7417,7 +7462,7 @@
               "bundled": true,
               "requires": {
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5"
+                "readable-stream": "2.3.6"
               }
             },
             "parallel-transform": {
@@ -7426,7 +7471,7 @@
               "requires": {
                 "cyclist": "0.2.2",
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5"
+                "readable-stream": "2.3.6"
               },
               "dependencies": {
                 "cyclist": {
@@ -7480,7 +7525,7 @@
               "version": "2.0.3",
               "bundled": true,
               "requires": {
-                "readable-stream": "2.3.5",
+                "readable-stream": "2.3.6",
                 "xtend": "4.0.1"
               },
               "dependencies": {
@@ -7538,6 +7583,93 @@
             }
           }
         },
+        "node-gyp": {
+          "version": "3.6.2",
+          "bundled": true,
+          "requires": {
+            "fstream": "1.0.11",
+            "glob": "7.1.2",
+            "graceful-fs": "4.1.11",
+            "minimatch": "3.0.4",
+            "mkdirp": "0.5.1",
+            "nopt": "3.0.6",
+            "npmlog": "4.1.2",
+            "osenv": "0.1.5",
+            "request": "2.85.0",
+            "rimraf": "2.6.2",
+            "semver": "5.3.0",
+            "tar": "2.2.1",
+            "which": "1.3.0"
+          },
+          "dependencies": {
+            "fstream": {
+              "version": "1.0.11",
+              "bundled": true,
+              "requires": {
+                "graceful-fs": "4.1.11",
+                "inherits": "2.0.3",
+                "mkdirp": "0.5.1",
+                "rimraf": "2.6.2"
+              }
+            },
+            "minimatch": {
+              "version": "3.0.4",
+              "bundled": true,
+              "requires": {
+                "brace-expansion": "1.1.11"
+              },
+              "dependencies": {
+                "brace-expansion": {
+                  "version": "1.1.11",
+                  "bundled": true,
+                  "requires": {
+                    "balanced-match": "1.0.0",
+                    "concat-map": "0.0.1"
+                  },
+                  "dependencies": {
+                    "balanced-match": {
+                      "version": "1.0.0",
+                      "bundled": true
+                    },
+                    "concat-map": {
+                      "version": "0.0.1",
+                      "bundled": true
+                    }
+                  }
+                }
+              }
+            },
+            "nopt": {
+              "version": "3.0.6",
+              "bundled": true,
+              "requires": {
+                "abbrev": "1.1.1"
+              }
+            },
+            "semver": {
+              "version": "5.3.0",
+              "bundled": true
+            },
+            "tar": {
+              "version": "2.2.1",
+              "bundled": true,
+              "requires": {
+                "block-stream": "0.0.9",
+                "fstream": "1.0.11",
+                "inherits": "2.0.3"
+              },
+              "dependencies": {
+                "block-stream": {
+                  "version": "0.0.9",
+                  "bundled": true,
+                  "requires": {
+                    "inherits": "2.0.3"
+                  }
+                }
+              }
+            }
+          }
+        },
         "nopt": {
           "version": "4.0.1",
           "bundled": true,
@@ -7553,7 +7685,7 @@
             "hosted-git-info": "2.6.0",
             "is-builtin-module": "1.0.0",
             "semver": "5.5.0",
-            "validate-npm-package-license": "3.0.1"
+            "validate-npm-package-license": "3.0.3"
           },
           "dependencies": {
             "is-builtin-module": {
@@ -7571,6 +7703,20 @@
             }
           }
         },
+        "npm-audit-report": {
+          "version": "1.0.9",
+          "bundled": true,
+          "requires": {
+            "cli-table2": "0.2.0",
+            "console-control-strings": "1.1.0"
+          },
+          "dependencies": {
+            "console-control-strings": {
+              "version": "1.1.0",
+              "bundled": true
+            }
+          }
+        },
         "npm-cache-filename": {
           "version": "1.0.2",
           "bundled": true
@@ -7600,93 +7746,6 @@
               "version": "5.0.0",
               "bundled": true
             },
-            "node-gyp": {
-              "version": "3.6.2",
-              "bundled": true,
-              "requires": {
-                "fstream": "1.0.11",
-                "glob": "7.1.2",
-                "graceful-fs": "4.1.11",
-                "minimatch": "3.0.4",
-                "mkdirp": "0.5.1",
-                "nopt": "3.0.6",
-                "npmlog": "4.1.2",
-                "osenv": "0.1.5",
-                "request": "2.83.0",
-                "rimraf": "2.6.2",
-                "semver": "5.3.0",
-                "tar": "2.2.1",
-                "which": "1.3.0"
-              },
-              "dependencies": {
-                "fstream": {
-                  "version": "1.0.11",
-                  "bundled": true,
-                  "requires": {
-                    "graceful-fs": "4.1.11",
-                    "inherits": "2.0.3",
-                    "mkdirp": "0.5.1",
-                    "rimraf": "2.6.2"
-                  }
-                },
-                "minimatch": {
-                  "version": "3.0.4",
-                  "bundled": true,
-                  "requires": {
-                    "brace-expansion": "1.1.11"
-                  },
-                  "dependencies": {
-                    "brace-expansion": {
-                      "version": "1.1.11",
-                      "bundled": true,
-                      "requires": {
-                        "balanced-match": "1.0.0",
-                        "concat-map": "0.0.1"
-                      },
-                      "dependencies": {
-                        "balanced-match": {
-                          "version": "1.0.0",
-                          "bundled": true
-                        },
-                        "concat-map": {
-                          "version": "0.0.1",
-                          "bundled": true
-                        }
-                      }
-                    }
-                  }
-                },
-                "nopt": {
-                  "version": "3.0.6",
-                  "bundled": true,
-                  "requires": {
-                    "abbrev": "1.1.1"
-                  }
-                },
-                "semver": {
-                  "version": "5.3.0",
-                  "bundled": true
-                },
-                "tar": {
-                  "version": "2.2.1",
-                  "bundled": true,
-                  "requires": {
-                    "block-stream": "0.0.9",
-                    "fstream": "1.0.11",
-                    "inherits": "2.0.3"
-                  },
-                  "dependencies": {
-                    "block-stream": {
-                      "version": "0.0.9",
-                      "bundled": true,
-                      "requires": {
-                        "inherits": "2.0.3"
-                      }
-                    }
-                  }
-                }
-              }
-            },
             "resolve-from": {
               "version": "4.0.0",
               "bundled": true
@@ -7694,7 +7753,7 @@
           }
         },
         "npm-package-arg": {
-          "version": "6.0.0",
+          "version": "6.1.0",
           "bundled": true,
           "requires": {
             "hosted-git-info": "2.6.0",
@@ -7770,12 +7829,12 @@
                 "http-cache-semantics": "3.8.1",
                 "http-proxy-agent": "2.0.0",
                 "https-proxy-agent": "2.1.1",
-                "lru-cache": "4.1.1",
+                "lru-cache": "4.1.2",
                 "mississippi": "1.3.1",
                 "node-fetch-npm": "2.0.2",
                 "promise-retry": "1.1.1",
                 "socks-proxy-agent": "3.0.1",
-                "ssri": "5.2.4"
+                "ssri": "5.3.0"
               },
               "dependencies": {
                 "agentkeepalive": {
@@ -7915,7 +7974,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "typedarray": "0.0.6"
                       },
                       "dependencies": {
@@ -7931,7 +7990,7 @@
                       "requires": {
                         "end-of-stream": "1.4.1",
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "stream-shift": "1.0.0"
                       },
                       "dependencies": {
@@ -7953,7 +8012,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       }
                     },
                     "from2": {
@@ -7961,7 +8020,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       }
                     },
                     "parallel-transform": {
@@ -7970,7 +8029,7 @@
                       "requires": {
                         "cyclist": "0.2.2",
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       },
                       "dependencies": {
                         "cyclist": {
@@ -8024,7 +8083,7 @@
                       "version": "2.0.3",
                       "bundled": true,
                       "requires": {
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "xtend": "4.0.1"
                       },
                       "dependencies": {
@@ -8042,7 +8101,7 @@
                   "requires": {
                     "encoding": "0.1.12",
                     "json-parse-better-errors": "1.0.1",
-                    "safe-buffer": "5.1.1"
+                    "safe-buffer": "5.1.2"
                   },
                   "dependencies": {
                     "encoding": {
@@ -8075,6 +8134,10 @@
                     "err-code": {
                       "version": "1.1.2",
                       "bundled": true
+                    },
+                    "retry": {
+                      "version": "0.10.1",
+                      "bundled": true
                     }
                   }
                 },
@@ -8139,15 +8202,15 @@
             "concat-stream": "1.6.1",
             "graceful-fs": "4.1.11",
             "normalize-package-data": "2.4.0",
-            "npm-package-arg": "6.0.0",
+            "npm-package-arg": "6.1.0",
             "npmlog": "4.1.2",
             "once": "1.4.0",
-            "request": "2.83.0",
+            "request": "2.85.0",
             "retry": "0.10.1",
-            "safe-buffer": "5.1.1",
+            "safe-buffer": "5.1.2",
             "semver": "5.5.0",
             "slide": "1.1.6",
-            "ssri": "5.2.4"
+            "ssri": "5.3.0"
           },
           "dependencies": {
             "concat-stream": {
@@ -8155,7 +8218,7 @@
               "bundled": true,
               "requires": {
                 "inherits": "2.0.3",
-                "readable-stream": "2.3.5",
+                "readable-stream": "2.3.6",
                 "typedarray": "0.0.6"
               },
               "dependencies": {
@@ -8164,6 +8227,264 @@
                   "bundled": true
                 }
               }
+            },
+            "retry": {
+              "version": "0.10.1",
+              "bundled": true
+            }
+          }
+        },
+        "npm-registry-fetch": {
+          "version": "1.1.0",
+          "bundled": true,
+          "requires": {
+            "bluebird": "3.5.1",
+            "figgy-pudding": "2.0.1",
+            "lru-cache": "4.1.2",
+            "make-fetch-happen": "3.0.0",
+            "npm-package-arg": "6.1.0",
+            "safe-buffer": "5.1.2"
+          },
+          "dependencies": {
+            "figgy-pudding": {
+              "version": "2.0.1",
+              "bundled": true
+            },
+            "make-fetch-happen": {
+              "version": "3.0.0",
+              "bundled": true,
+              "requires": {
+                "agentkeepalive": "3.4.1",
+                "cacache": "10.0.4",
+                "http-cache-semantics": "3.8.1",
+                "http-proxy-agent": "2.1.0",
+                "https-proxy-agent": "2.2.1",
+                "lru-cache": "4.1.2",
+                "mississippi": "3.0.0",
+                "node-fetch-npm": "2.0.2",
+                "promise-retry": "1.1.1",
+                "socks-proxy-agent": "3.0.1",
+                "ssri": "5.3.0"
+              },
+              "dependencies": {
+                "agentkeepalive": {
+                  "version": "3.4.1",
+                  "bundled": true,
+                  "requires": {
+                    "humanize-ms": "1.2.1"
+                  },
+                  "dependencies": {
+                    "humanize-ms": {
+                      "version": "1.2.1",
+                      "bundled": true,
+                      "requires": {
+                        "ms": "2.1.1"
+                      },
+                      "dependencies": {
+                        "ms": {
+                          "version": "2.1.1",
+                          "bundled": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "http-cache-semantics": {
+                  "version": "3.8.1",
+                  "bundled": true
+                },
+                "http-proxy-agent": {
+                  "version": "2.1.0",
+                  "bundled": true,
+                  "requires": {
+                    "agent-base": "4.2.0",
+                    "debug": "3.1.0"
+                  },
+                  "dependencies": {
+                    "agent-base": {
+                      "version": "4.2.0",
+                      "bundled": true,
+                      "requires": {
+                        "es6-promisify": "5.0.0"
+                      },
+                      "dependencies": {
+                        "es6-promisify": {
+                          "version": "5.0.0",
+                          "bundled": true,
+                          "requires": {
+                            "es6-promise": "4.2.4"
+                          },
+                          "dependencies": {
+                            "es6-promise": {
+                              "version": "4.2.4",
+                              "bundled": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "debug": {
+                      "version": "3.1.0",
+                      "bundled": true,
+                      "requires": {
+                        "ms": "2.0.0"
+                      },
+                      "dependencies": {
+                        "ms": {
+                          "version": "2.0.0",
+                          "bundled": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "https-proxy-agent": {
+                  "version": "2.2.1",
+                  "bundled": true,
+                  "requires": {
+                    "agent-base": "4.2.0",
+                    "debug": "3.1.0"
+                  },
+                  "dependencies": {
+                    "agent-base": {
+                      "version": "4.2.0",
+                      "bundled": true,
+                      "requires": {
+                        "es6-promisify": "5.0.0"
+                      },
+                      "dependencies": {
+                        "es6-promisify": {
+                          "version": "5.0.0",
+                          "bundled": true,
+                          "requires": {
+                            "es6-promise": "4.2.4"
+                          },
+                          "dependencies": {
+                            "es6-promise": {
+                              "version": "4.2.4",
+                              "bundled": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "debug": {
+                      "version": "3.1.0",
+                      "bundled": true,
+                      "requires": {
+                        "ms": "2.0.0"
+                      },
+                      "dependencies": {
+                        "ms": {
+                          "version": "2.0.0",
+                          "bundled": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "node-fetch-npm": {
+                  "version": "2.0.2",
+                  "bundled": true,
+                  "requires": {
+                    "encoding": "0.1.12",
+                    "json-parse-better-errors": "1.0.2",
+                    "safe-buffer": "5.1.2"
+                  },
+                  "dependencies": {
+                    "encoding": {
+                      "version": "0.1.12",
+                      "bundled": true,
+                      "requires": {
+                        "iconv-lite": "0.4.21"
+                      },
+                      "dependencies": {
+                        "iconv-lite": {
+                          "version": "0.4.21",
+                          "bundled": true,
+                          "requires": {
+                            "safer-buffer": "2.1.2"
+                          },
+                          "dependencies": {
+                            "safer-buffer": {
+                              "version": "2.1.2",
+                              "bundled": true
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "promise-retry": {
+                  "version": "1.1.1",
+                  "bundled": true,
+                  "requires": {
+                    "err-code": "1.1.2",
+                    "retry": "0.10.1"
+                  },
+                  "dependencies": {
+                    "err-code": {
+                      "version": "1.1.2",
+                      "bundled": true
+                    },
+                    "retry": {
+                      "version": "0.10.1",
+                      "bundled": true
+                    }
+                  }
+                },
+                "socks-proxy-agent": {
+                  "version": "3.0.1",
+                  "bundled": true,
+                  "requires": {
+                    "agent-base": "4.2.0",
+                    "socks": "1.1.10"
+                  },
+                  "dependencies": {
+                    "agent-base": {
+                      "version": "4.2.0",
+                      "bundled": true,
+                      "requires": {
+                        "es6-promisify": "5.0.0"
+                      },
+                      "dependencies": {
+                        "es6-promisify": {
+                          "version": "5.0.0",
+                          "bundled": true,
+                          "requires": {
+                            "es6-promise": "4.2.4"
+                          },
+                          "dependencies": {
+                            "es6-promise": {
+                              "version": "4.2.4",
+                              "bundled": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "socks": {
+                      "version": "1.1.10",
+                      "bundled": true,
+                      "requires": {
+                        "ip": "1.1.5",
+                        "smart-buffer": "1.1.15"
+                      },
+                      "dependencies": {
+                        "ip": {
+                          "version": "1.1.5",
+                          "bundled": true
+                        },
+                        "smart-buffer": {
+                          "version": "1.1.15",
+                          "bundled": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
             }
           }
         },
@@ -8186,7 +8507,7 @@
               "bundled": true,
               "requires": {
                 "delegates": "1.0.0",
-                "readable-stream": "2.3.5"
+                "readable-stream": "2.3.6"
               },
               "dependencies": {
                 "delegates": {
@@ -8314,13 +8635,13 @@
             "cacache": "10.0.4",
             "get-stream": "3.0.0",
             "glob": "7.1.2",
-            "lru-cache": "4.1.1",
+            "lru-cache": "4.1.2",
             "make-fetch-happen": "2.6.0",
             "minimatch": "3.0.4",
             "mississippi": "3.0.0",
             "mkdirp": "0.5.1",
             "normalize-package-data": "2.4.0",
-            "npm-package-arg": "6.0.0",
+            "npm-package-arg": "6.1.0",
             "npm-packlist": "1.1.10",
             "npm-pick-manifest": "2.1.0",
             "osenv": "0.1.5",
@@ -8328,10 +8649,10 @@
             "promise-retry": "1.1.1",
             "protoduck": "5.0.0",
             "rimraf": "2.6.2",
-            "safe-buffer": "5.1.1",
+            "safe-buffer": "5.1.2",
             "semver": "5.5.0",
-            "ssri": "5.2.4",
-            "tar": "4.4.0",
+            "ssri": "5.3.0",
+            "tar": "4.4.2",
             "unique-filename": "1.1.0",
             "which": "1.3.0"
           },
@@ -8349,12 +8670,12 @@
                 "http-cache-semantics": "3.8.1",
                 "http-proxy-agent": "2.1.0",
                 "https-proxy-agent": "2.2.0",
-                "lru-cache": "4.1.1",
+                "lru-cache": "4.1.2",
                 "mississippi": "1.3.1",
                 "node-fetch-npm": "2.0.2",
                 "promise-retry": "1.1.1",
                 "socks-proxy-agent": "3.0.1",
-                "ssri": "5.2.4"
+                "ssri": "5.3.0"
               },
               "dependencies": {
                 "agentkeepalive": {
@@ -8494,7 +8815,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "typedarray": "0.0.6"
                       },
                       "dependencies": {
@@ -8510,7 +8831,7 @@
                       "requires": {
                         "end-of-stream": "1.4.1",
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "stream-shift": "1.0.0"
                       },
                       "dependencies": {
@@ -8532,7 +8853,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       }
                     },
                     "from2": {
@@ -8540,7 +8861,7 @@
                       "bundled": true,
                       "requires": {
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       }
                     },
                     "parallel-transform": {
@@ -8549,7 +8870,7 @@
                       "requires": {
                         "cyclist": "0.2.2",
                         "inherits": "2.0.3",
-                        "readable-stream": "2.3.5"
+                        "readable-stream": "2.3.6"
                       },
                       "dependencies": {
                         "cyclist": {
@@ -8603,7 +8924,7 @@
                       "version": "2.0.3",
                       "bundled": true,
                       "requires": {
-                        "readable-stream": "2.3.5",
+                        "readable-stream": "2.3.6",
                         "xtend": "4.0.1"
                       },
                       "dependencies": {
@@ -8621,7 +8942,7 @@
                   "requires": {
                     "encoding": "0.1.12",
                     "json-parse-better-errors": "1.0.1",
-                    "safe-buffer": "5.1.1"
+                    "safe-buffer": "5.1.2"
                   },
                   "dependencies": {
                     "encoding": {
@@ -8726,7 +9047,7 @@
               "version": "2.1.0",
               "bundled": true,
               "requires": {
-                "npm-package-arg": "6.0.0",
+                "npm-package-arg": "6.1.0",
                 "semver": "5.5.0"
               }
             },
@@ -8741,6 +9062,10 @@
                 "err-code": {
                   "version": "1.1.2",
                   "bundled": true
+                },
+                "retry": {
+                  "version": "0.10.1",
+                  "bundled": true
                 }
               }
             },
@@ -8768,28 +9093,23 @@
           "bundled": true
         },
         "qrcode-terminal": {
-          "version": "0.11.0",
+          "version": "0.12.0",
           "bundled": true
         },
         "query-string": {
-          "version": "5.1.0",
+          "version": "6.1.0",
           "bundled": true,
           "requires": {
             "decode-uri-component": "0.2.0",
-            "object-assign": "4.1.1",
-            "strict-uri-encode": "1.1.0"
+            "strict-uri-encode": "2.0.0"
           },
           "dependencies": {
             "decode-uri-component": {
               "version": "0.2.0",
               "bundled": true
             },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true
-            },
             "strict-uri-encode": {
-              "version": "1.1.0",
+              "version": "2.0.0",
               "bundled": true
             }
           }
@@ -8859,7 +9179,7 @@
           }
         },
         "read-package-tree": {
-          "version": "5.1.6",
+          "version": "5.2.1",
           "bundled": true,
           "requires": {
             "debuglog": "1.0.1",
@@ -8870,15 +9190,15 @@
           }
         },
         "readable-stream": {
-          "version": "2.3.5",
+          "version": "2.3.6",
           "bundled": true,
           "requires": {
             "core-util-is": "1.0.2",
             "inherits": "2.0.3",
             "isarray": "1.0.0",
             "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.1",
-            "string_decoder": "1.0.3",
+            "safe-buffer": "5.1.2",
+            "string_decoder": "1.1.1",
             "util-deprecate": "1.0.2"
           },
           "dependencies": {
@@ -8895,10 +9215,10 @@
               "bundled": true
             },
             "string_decoder": {
-              "version": "1.0.3",
+              "version": "1.1.1",
               "bundled": true,
               "requires": {
-                "safe-buffer": "5.1.1"
+                "safe-buffer": "5.1.2"
               }
             },
             "util-deprecate": {
@@ -8918,29 +9238,29 @@
           }
         },
         "request": {
-          "version": "2.83.0",
+          "version": "2.85.0",
           "bundled": true,
           "requires": {
             "aws-sign2": "0.7.0",
             "aws4": "1.6.0",
             "caseless": "0.12.0",
-            "combined-stream": "1.0.5",
+            "combined-stream": "1.0.6",
             "extend": "3.0.1",
             "forever-agent": "0.6.1",
-            "form-data": "2.3.1",
+            "form-data": "2.3.2",
             "har-validator": "5.0.3",
             "hawk": "6.0.2",
             "http-signature": "1.2.0",
             "is-typedarray": "1.0.0",
             "isstream": "0.1.2",
             "json-stringify-safe": "5.0.1",
-            "mime-types": "2.1.17",
+            "mime-types": "2.1.18",
             "oauth-sign": "0.8.2",
             "performance-now": "2.1.0",
             "qs": "6.5.1",
-            "safe-buffer": "5.1.1",
+            "safe-buffer": "5.1.2",
             "stringstream": "0.0.5",
-            "tough-cookie": "2.3.3",
+            "tough-cookie": "2.3.4",
             "tunnel-agent": "0.6.0",
             "uuid": "3.2.1"
           },
@@ -8958,7 +9278,7 @@
               "bundled": true
             },
             "combined-stream": {
-              "version": "1.0.5",
+              "version": "1.0.6",
               "bundled": true,
               "requires": {
                 "delayed-stream": "1.0.0"
@@ -8979,12 +9299,12 @@
               "bundled": true
             },
             "form-data": {
-              "version": "2.3.1",
+              "version": "2.3.2",
               "bundled": true,
               "requires": {
                 "asynckit": "0.4.0",
-                "combined-stream": "1.0.5",
-                "mime-types": "2.1.17"
+                "combined-stream": "1.0.6",
+                "mime-types": "2.1.18"
               },
               "dependencies": {
                 "asynckit": {
@@ -8997,18 +9317,18 @@
               "version": "5.0.3",
               "bundled": true,
               "requires": {
-                "ajv": "5.2.3",
+                "ajv": "5.5.2",
                 "har-schema": "2.0.0"
               },
               "dependencies": {
                 "ajv": {
-                  "version": "5.2.3",
+                  "version": "5.5.2",
                   "bundled": true,
                   "requires": {
                     "co": "4.6.0",
-                    "fast-deep-equal": "1.0.0",
-                    "json-schema-traverse": "0.3.1",
-                    "json-stable-stringify": "1.0.1"
+                    "fast-deep-equal": "1.1.0",
+                    "fast-json-stable-stringify": "2.0.0",
+                    "json-schema-traverse": "0.3.1"
                   },
                   "dependencies": {
                     "co": {
@@ -9016,25 +9336,16 @@
                       "bundled": true
                     },
                     "fast-deep-equal": {
-                      "version": "1.0.0",
+                      "version": "1.1.0",
+                      "bundled": true
+                    },
+                    "fast-json-stable-stringify": {
+                      "version": "2.0.0",
                       "bundled": true
                     },
                     "json-schema-traverse": {
                       "version": "0.3.1",
                       "bundled": true
-                    },
-                    "json-stable-stringify": {
-                      "version": "1.0.1",
-                      "bundled": true,
-                      "requires": {
-                        "jsonify": "0.0.0"
-                      },
-                      "dependencies": {
-                        "jsonify": {
-                          "version": "0.0.0",
-                          "bundled": true
-                        }
-                      }
                     }
                   }
                 },
@@ -9050,15 +9361,15 @@
               "requires": {
                 "boom": "4.3.1",
                 "cryptiles": "3.1.2",
-                "hoek": "4.2.0",
-                "sntp": "2.0.2"
+                "hoek": "4.2.1",
+                "sntp": "2.1.0"
               },
               "dependencies": {
                 "boom": {
                   "version": "4.3.1",
                   "bundled": true,
                   "requires": {
-                    "hoek": "4.2.0"
+                    "hoek": "4.2.1"
                   }
                 },
                 "cryptiles": {
@@ -9072,20 +9383,20 @@
                       "version": "5.2.0",
                       "bundled": true,
                       "requires": {
-                        "hoek": "4.2.0"
+                        "hoek": "4.2.1"
                       }
                     }
                   }
                 },
                 "hoek": {
-                  "version": "4.2.0",
+                  "version": "4.2.1",
                   "bundled": true
                 },
                 "sntp": {
-                  "version": "2.0.2",
+                  "version": "2.1.0",
                   "bundled": true,
                   "requires": {
-                    "hoek": "4.2.0"
+                    "hoek": "4.2.1"
                   }
                 }
               }
@@ -9096,7 +9407,7 @@
               "requires": {
                 "assert-plus": "1.0.0",
                 "jsprim": "1.4.1",
-                "sshpk": "1.13.1"
+                "sshpk": "1.14.1"
               },
               "dependencies": {
                 "assert-plus": {
@@ -9139,7 +9450,7 @@
                   }
                 },
                 "sshpk": {
-                  "version": "1.13.1",
+                  "version": "1.14.1",
                   "bundled": true,
                   "requires": {
                     "asn1": "0.2.3",
@@ -9213,14 +9524,14 @@
               "bundled": true
             },
             "mime-types": {
-              "version": "2.1.17",
+              "version": "2.1.18",
               "bundled": true,
               "requires": {
-                "mime-db": "1.30.0"
+                "mime-db": "1.33.0"
               },
               "dependencies": {
                 "mime-db": {
-                  "version": "1.30.0",
+                  "version": "1.33.0",
                   "bundled": true
                 }
               }
@@ -9242,7 +9553,7 @@
               "bundled": true
             },
             "tough-cookie": {
-              "version": "2.3.3",
+              "version": "2.3.4",
               "bundled": true,
               "requires": {
                 "punycode": "1.4.1"
@@ -9258,13 +9569,13 @@
               "version": "0.6.0",
               "bundled": true,
               "requires": {
-                "safe-buffer": "5.1.1"
+                "safe-buffer": "5.1.2"
               }
             }
           }
         },
         "retry": {
-          "version": "0.10.1",
+          "version": "0.12.0",
           "bundled": true
         },
         "rimraf": {
@@ -9275,7 +9586,7 @@
           }
         },
         "safe-buffer": {
-          "version": "5.1.1",
+          "version": "5.1.2",
           "bundled": true
         },
         "semver": {
@@ -9287,7 +9598,7 @@
           "bundled": true,
           "requires": {
             "graceful-fs": "4.1.11",
-            "readable-stream": "2.3.5"
+            "readable-stream": "2.3.6"
           }
         },
         "slide": {
@@ -9344,7 +9655,7 @@
               "version": "1.2.0",
               "bundled": true,
               "requires": {
-                "readable-stream": "2.3.5",
+                "readable-stream": "2.3.6",
                 "stream-shift": "1.0.0"
               },
               "dependencies": {
@@ -9357,10 +9668,10 @@
           }
         },
         "ssri": {
-          "version": "5.2.4",
+          "version": "5.3.0",
           "bundled": true,
           "requires": {
-            "safe-buffer": "5.1.1"
+            "safe-buffer": "5.1.2"
           }
         },
         "strip-ansi": {
@@ -9377,14 +9688,15 @@
           }
         },
         "tar": {
-          "version": "4.4.0",
+          "version": "4.4.2",
           "bundled": true,
           "requires": {
             "chownr": "1.0.1",
             "fs-minipass": "1.2.5",
-            "minipass": "2.2.1",
+            "minipass": "2.2.4",
             "minizlib": "1.1.0",
             "mkdirp": "0.5.1",
+            "safe-buffer": "5.1.2",
             "yallist": "3.0.2"
           },
           "dependencies": {
@@ -9392,13 +9704,14 @@
               "version": "1.2.5",
               "bundled": true,
               "requires": {
-                "minipass": "2.2.1"
+                "minipass": "2.2.4"
               }
             },
             "minipass": {
-              "version": "2.2.1",
+              "version": "2.2.4",
               "bundled": true,
               "requires": {
+                "safe-buffer": "5.1.2",
                 "yallist": "3.0.2"
               }
             },
@@ -9406,9 +9719,13 @@
               "version": "1.1.0",
               "bundled": true,
               "requires": {
-                "minipass": "2.2.1"
+                "minipass": "2.2.4"
               }
             },
+            "safe-buffer": {
+              "version": "5.1.2",
+              "bundled": true
+            },
             "yallist": {
               "version": "3.0.2",
               "bundled": true
@@ -9419,6 +9736,10 @@
           "version": "0.2.0",
           "bundled": true
         },
+        "tiny-relative-date": {
+          "version": "1.3.0",
+          "bundled": true
+        },
         "uid-number": {
           "version": "0.0.6",
           "bundled": true
@@ -9448,13 +9769,14 @@
           "bundled": true
         },
         "update-notifier": {
-          "version": "2.3.0",
+          "version": "2.5.0",
           "bundled": true,
           "requires": {
-            "boxen": "1.2.1",
-            "chalk": "2.1.0",
-            "configstore": "3.1.1",
+            "boxen": "1.3.0",
+            "chalk": "2.4.1",
+            "configstore": "3.1.2",
             "import-lazy": "2.1.0",
+            "is-ci": "1.1.0",
             "is-installed-globally": "0.1.0",
             "is-npm": "1.0.0",
             "latest-version": "3.1.0",
@@ -9463,16 +9785,16 @@
           },
           "dependencies": {
             "boxen": {
-              "version": "1.2.1",
+              "version": "1.3.0",
               "bundled": true,
               "requires": {
                 "ansi-align": "2.0.0",
                 "camelcase": "4.1.0",
-                "chalk": "2.1.0",
+                "chalk": "2.4.1",
                 "cli-boxes": "1.0.0",
                 "string-width": "2.1.1",
                 "term-size": "1.2.0",
-                "widest-line": "1.0.0"
+                "widest-line": "2.0.0"
               },
               "dependencies": {
                 "ansi-align": {
@@ -9528,7 +9850,7 @@
                           "version": "5.1.0",
                           "bundled": true,
                           "requires": {
-                            "lru-cache": "4.1.1",
+                            "lru-cache": "4.1.2",
                             "shebang-command": "1.2.0",
                             "which": "1.3.0"
                           },
@@ -9586,75 +9908,32 @@
                   }
                 },
                 "widest-line": {
-                  "version": "1.0.0",
+                  "version": "2.0.0",
                   "bundled": true,
                   "requires": {
-                    "string-width": "1.0.2"
-                  },
-                  "dependencies": {
-                    "string-width": {
-                      "version": "1.0.2",
-                      "bundled": true,
-                      "requires": {
-                        "code-point-at": "1.1.0",
-                        "is-fullwidth-code-point": "1.0.0",
-                        "strip-ansi": "3.0.1"
-                      },
-                      "dependencies": {
-                        "code-point-at": {
-                          "version": "1.1.0",
-                          "bundled": true
-                        },
-                        "is-fullwidth-code-point": {
-                          "version": "1.0.0",
-                          "bundled": true,
-                          "requires": {
-                            "number-is-nan": "1.0.1"
-                          },
-                          "dependencies": {
-                            "number-is-nan": {
-                              "version": "1.0.1",
-                              "bundled": true
-                            }
-                          }
-                        },
-                        "strip-ansi": {
-                          "version": "3.0.1",
-                          "bundled": true,
-                          "requires": {
-                            "ansi-regex": "2.1.1"
-                          },
-                          "dependencies": {
-                            "ansi-regex": {
-                              "version": "2.1.1",
-                              "bundled": true
-                            }
-                          }
-                        }
-                      }
-                    }
+                    "string-width": "2.1.1"
                   }
                 }
               }
             },
             "chalk": {
-              "version": "2.1.0",
+              "version": "2.4.1",
               "bundled": true,
               "requires": {
-                "ansi-styles": "3.2.0",
+                "ansi-styles": "3.2.1",
                 "escape-string-regexp": "1.0.5",
-                "supports-color": "4.4.0"
+                "supports-color": "5.4.0"
               },
               "dependencies": {
                 "ansi-styles": {
-                  "version": "3.2.0",
+                  "version": "3.2.1",
                   "bundled": true,
                   "requires": {
-                    "color-convert": "1.9.0"
+                    "color-convert": "1.9.1"
                   },
                   "dependencies": {
                     "color-convert": {
-                      "version": "1.9.0",
+                      "version": "1.9.1",
                       "bundled": true,
                       "requires": {
                         "color-name": "1.1.3"
@@ -9673,14 +9952,14 @@
                   "bundled": true
                 },
                 "supports-color": {
-                  "version": "4.4.0",
+                  "version": "5.4.0",
                   "bundled": true,
                   "requires": {
-                    "has-flag": "2.0.0"
+                    "has-flag": "3.0.0"
                   },
                   "dependencies": {
                     "has-flag": {
-                      "version": "2.0.0",
+                      "version": "3.0.0",
                       "bundled": true
                     }
                   }
@@ -9688,12 +9967,12 @@
               }
             },
             "configstore": {
-              "version": "3.1.1",
+              "version": "3.1.2",
               "bundled": true,
               "requires": {
                 "dot-prop": "4.2.0",
                 "graceful-fs": "4.1.11",
-                "make-dir": "1.0.0",
+                "make-dir": "1.2.0",
                 "unique-string": "1.0.0",
                 "write-file-atomic": "2.3.0",
                 "xdg-basedir": "3.0.0"
@@ -9713,14 +9992,14 @@
                   }
                 },
                 "make-dir": {
-                  "version": "1.0.0",
+                  "version": "1.2.0",
                   "bundled": true,
                   "requires": {
-                    "pify": "2.3.0"
+                    "pify": "3.0.0"
                   },
                   "dependencies": {
                     "pify": {
-                      "version": "2.3.0",
+                      "version": "3.0.0",
                       "bundled": true
                     }
                   }
@@ -9744,23 +10023,36 @@
               "version": "2.1.0",
               "bundled": true
             },
+            "is-ci": {
+              "version": "1.1.0",
+              "bundled": true,
+              "requires": {
+                "ci-info": "1.1.3"
+              },
+              "dependencies": {
+                "ci-info": {
+                  "version": "1.1.3",
+                  "bundled": true
+                }
+              }
+            },
             "is-installed-globally": {
               "version": "0.1.0",
               "bundled": true,
               "requires": {
-                "global-dirs": "0.1.0",
-                "is-path-inside": "1.0.0"
+                "global-dirs": "0.1.1",
+                "is-path-inside": "1.0.1"
               },
               "dependencies": {
                 "global-dirs": {
-                  "version": "0.1.0",
+                  "version": "0.1.1",
                   "bundled": true,
                   "requires": {
                     "ini": "1.3.5"
                   }
                 },
                 "is-path-inside": {
-                  "version": "1.0.0",
+                  "version": "1.0.1",
                   "bundled": true,
                   "requires": {
                     "path-is-inside": "1.0.2"
@@ -9784,7 +10076,7 @@
                   "bundled": true,
                   "requires": {
                     "got": "6.7.1",
-                    "registry-auth-token": "3.3.1",
+                    "registry-auth-token": "3.3.2",
                     "registry-url": "3.1.0",
                     "semver": "5.5.0"
                   },
@@ -9799,8 +10091,8 @@
                         "is-redirect": "1.0.0",
                         "is-retry-allowed": "1.1.0",
                         "is-stream": "1.1.0",
-                        "lowercase-keys": "1.0.0",
-                        "safe-buffer": "5.1.1",
+                        "lowercase-keys": "1.0.1",
+                        "safe-buffer": "5.1.2",
                         "timed-out": "4.0.1",
                         "unzip-response": "2.0.1",
                         "url-parse-lax": "1.0.0"
@@ -9840,7 +10132,7 @@
                           "bundled": true
                         },
                         "lowercase-keys": {
-                          "version": "1.0.0",
+                          "version": "1.0.1",
                           "bundled": true
                         },
                         "timed-out": {
@@ -9867,25 +10159,25 @@
                       }
                     },
                     "registry-auth-token": {
-                      "version": "3.3.1",
+                      "version": "3.3.2",
                       "bundled": true,
                       "requires": {
-                        "rc": "1.2.1",
-                        "safe-buffer": "5.1.1"
+                        "rc": "1.2.7",
+                        "safe-buffer": "5.1.2"
                       },
                       "dependencies": {
                         "rc": {
-                          "version": "1.2.1",
+                          "version": "1.2.7",
                           "bundled": true,
                           "requires": {
-                            "deep-extend": "0.4.2",
+                            "deep-extend": "0.5.1",
                             "ini": "1.3.5",
                             "minimist": "1.2.0",
                             "strip-json-comments": "2.0.1"
                           },
                           "dependencies": {
                             "deep-extend": {
-                              "version": "0.4.2",
+                              "version": "0.5.1",
                               "bundled": true
                             },
                             "minimist": {
@@ -9904,21 +10196,21 @@
                       "version": "3.1.0",
                       "bundled": true,
                       "requires": {
-                        "rc": "1.2.1"
+                        "rc": "1.2.7"
                       },
                       "dependencies": {
                         "rc": {
-                          "version": "1.2.1",
+                          "version": "1.2.7",
                           "bundled": true,
                           "requires": {
-                            "deep-extend": "0.4.2",
+                            "deep-extend": "0.5.1",
                             "ini": "1.3.5",
                             "minimist": "1.2.0",
                             "strip-json-comments": "2.0.1"
                           },
                           "dependencies": {
                             "deep-extend": {
-                              "version": "0.4.2",
+                              "version": "0.5.1",
                               "bundled": true
                             },
                             "minimist": {
@@ -9955,29 +10247,44 @@
           "bundled": true
         },
         "validate-npm-package-license": {
-          "version": "3.0.1",
+          "version": "3.0.3",
           "bundled": true,
           "requires": {
-            "spdx-correct": "1.0.2",
-            "spdx-expression-parse": "1.0.4"
+            "spdx-correct": "3.0.0",
+            "spdx-expression-parse": "3.0.0"
           },
           "dependencies": {
             "spdx-correct": {
-              "version": "1.0.2",
+              "version": "3.0.0",
               "bundled": true,
               "requires": {
-                "spdx-license-ids": "1.2.2"
+                "spdx-expression-parse": "3.0.0",
+                "spdx-license-ids": "3.0.0"
               },
               "dependencies": {
                 "spdx-license-ids": {
-                  "version": "1.2.2",
+                  "version": "3.0.0",
                   "bundled": true
                 }
               }
             },
             "spdx-expression-parse": {
-              "version": "1.0.4",
-              "bundled": true
+              "version": "3.0.0",
+              "bundled": true,
+              "requires": {
+                "spdx-exceptions": "2.1.0",
+                "spdx-license-ids": "3.0.0"
+              },
+              "dependencies": {
+                "spdx-exceptions": {
+                  "version": "2.1.0",
+                  "bundled": true
+                },
+                "spdx-license-ids": {
+                  "version": "3.0.0",
+                  "bundled": true
+                }
+              }
             }
           }
         },
@@ -10008,11 +10315,10 @@
           }
         },
         "worker-farm": {
-          "version": "1.5.4",
+          "version": "1.6.0",
           "bundled": true,
           "requires": {
-            "errno": "0.1.7",
-            "xtend": "4.0.1"
+            "errno": "0.1.7"
           },
           "dependencies": {
             "errno": {
@@ -10027,10 +10333,6 @@
                   "bundled": true
                 }
               }
-            },
-            "xtend": {
-              "version": "4.0.1",
-              "bundled": true
             }
           }
         },
@@ -11441,8 +11743,8 @@
       "requires": {
         "hoist-non-react-statics": "2.5.0",
         "invariant": "2.2.2",
-        "lodash": "4.17.5",
-        "lodash-es": "4.17.8",
+        "lodash": "4.17.10",
+        "lodash-es": "4.17.10",
         "loose-envify": "1.3.1",
         "prop-types": "15.6.1"
       },
@@ -11453,14 +11755,14 @@
           "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
         },
         "lodash": {
-          "version": "4.17.5",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
-          "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
+          "version": "4.17.10",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+          "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
         },
         "lodash-es": {
-          "version": "4.17.8",
-          "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.8.tgz",
-          "integrity": "sha512-I9mjAxengFAleSThFhhAhvba6fsO0hunb9/0sQ6qQihSZsJRBofv2rYH58WXaOb/O++eUmYpCLywSQ22GfU+sA=="
+          "version": "4.17.10",
+          "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz",
+          "integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg=="
         }
       }
     },
@@ -11502,9 +11804,9 @@
       }
     },
     "react-table": {
-      "version": "6.8.0",
-      "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.0.tgz",
-      "integrity": "sha1-XOQC63Nd9oU0wD2rs/qgMUeLalg=",
+      "version": "6.8.2",
+      "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.2.tgz",
+      "integrity": "sha1-Olrvq8hZUzANFnhvowfDBhDbmtw=",
       "requires": {
         "classnames": "2.2.5"
       }
diff --git a/monkey_island/cc/ui/src/components/pages/ReportPage.js b/monkey_island/cc/ui/src/components/pages/ReportPage.js
index f8959a252..f018254b0 100644
--- a/monkey_island/cc/ui/src/components/pages/ReportPage.js
+++ b/monkey_island/cc/ui/src/components/pages/ReportPage.js
@@ -346,7 +346,7 @@ class ReportPageComponent extends AuthComponent {
                     <li>Weak segmentation - Machines from different segments are able to
                       communicate.</li> : null}
                   {this.state.report.overview.warnings[this.Warning.TUNNEL] ?
-                    <li>Weak segmentation - machines were able to communicate over unused ports.</li> : null}
+                    <li>Weak segmentation - Machines were able to communicate over unused ports.</li> : null}
                 </ul>
               </div>
               :
diff --git a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
index 099c20a43..a23dd1d36 100644
--- a/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
+++ b/monkey_island/cc/ui/src/components/pages/TelemetryPage.js
@@ -1,8 +1,9 @@
 import React from 'react';
-import {Col} from 'react-bootstrap';
+import {Button, Col} from 'react-bootstrap';
 import JSONTree from 'react-json-tree'
 import {DataTable} from 'react-data-components';
 import AuthComponent from '../AuthComponent';
+import download from 'downloadjs'
 
 const renderJson = (val) => <JSONTree data={val} level={1} theme="eighties" invertTheme={true} />;
 const renderTime = (val) => val.split('.')[0];
@@ -28,21 +29,47 @@ class TelemetryPageComponent extends AuthComponent {
       .then(res => this.setState({data: res.objects}));
   };
 
+downloadIslandLog = () => {
+    this.authFetch('/api/log/island/download')
+      .then(res => res.json())
+      .then(res => {
+        let filename = 'Island_log'
+        let logContent = (res['log_file']);
+        download(logContent, filename, 'text/plain');
+      });
+    };
+
   render() {
     return (
-      <Col xs={12} lg={8}>
-        <h1 className="page-title">Log</h1>
-        <div className="data-table-container">
-          <DataTable
-            keys="name"
-            columns={columns}
-            initialData={this.state.data}
-            initialPageLength={20}
-            initialSortBy={{ prop: 'timestamp', order: 'descending' }}
-            pageLengthOptions={[ 20, 50, 100 ]}
-          />
-        </div>
-      </Col>
+    <div>
+      <div>
+        <Col xs={12} lg={8}>
+          <h1 className="page-title">Log</h1>
+          <div className="data-table-container">
+            <DataTable
+              keys="name"
+              columns={columns}
+              initialData={this.state.data}
+              initialPageLength={20}
+              initialSortBy={{ prop: 'timestamp', order: 'descending' }}
+              pageLengthOptions={[ 20, 50, 100 ]}
+            />
+          </div>
+        </Col>
+      </div>
+      <div>
+        <Col xs={12} lg={8}>
+          <h1 className="page-title"> Monkey Island Logs </h1>
+          <div className="text-center" style={{marginBottom: '20px'}}>
+            <p style={{'marginBottom': '2em', 'fontSize': '1.2em'}}> Download Monkey Island internal log file </p>
+            <Button bsSize="large" onClick={()=> {
+              this.downloadIslandLog();
+              }}>
+              <i className="glyphicon glyphicon-download"/> Download </Button>
+          </div>
+        </Col>
+      </div>
+    </div>
     );
   }
 }
diff --git a/monkey_island/deb-package/DEBIAN/control b/monkey_island/deb-package/DEBIAN/control
index 2426feecb..2693afbd9 100644
--- a/monkey_island/deb-package/DEBIAN/control
+++ b/monkey_island/deb-package/DEBIAN/control
@@ -5,4 +5,4 @@ Homepage: http://www.guardicore.com
 Priority: optional
 Version: 1.0
 Description: Guardicore Infection Monkey Island installation package
-Depends: openssl, python-pip
+Depends: openssl, python-pip, python-dev