diff --git a/sensors/config.yaml b/sensors/config.yaml
deleted file mode 100644
index d9ce8bb..0000000
--- a/sensors/config.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-192.168.0.104:
-    block-io:
-        allowed_prefixes: [sda1, rbd1]
-    net-io:
-        allowed_prefixes: [virbr2]
-
-# 192.168.152.39:
-#     block-io:
-#         allowed_prefixes: [sdb, sdc]
-#     net-io:
-#         allowed_prefixes: [eth0]
-
-# 192.168.152.40:
-#     block-io:
-#         allowed_prefixes: [sdb, sdc]
-#     net-io:
-#         allowed_prefixes: [eth0]
-
-# 192.168.152.41:
-#     block-io:
-#         allowed_prefixes: [sdb, sdc]
-#     net-io:
-#         allowed_prefixes: [eth0]
diff --git a/sensors/cp_protocol.py b/sensors/cp_protocol.py
index 79f94af..962bf0a 100644
--- a/sensors/cp_protocol.py
+++ b/sensors/cp_protocol.py
@@ -5,9 +5,15 @@
 import zlib
 import json
 import binascii
-import logging
 
-from logger import define_logger
+try:
+    from disk_perf_test_tool.logger import define_logger
+    logger = define_logger(__name__)
+except ImportError:
+    class Logger(object):
+        def debug(self, *dt):
+            pass
+    logger = Logger()
 
 # protocol contains 2 type of packet:
 # 1 - header, which contains template schema of counters
@@ -52,7 +58,6 @@
         self.tmpl_size = 0
         self.packer = packer
 
-
     def new_packet(self, part):
         """ New packet adding """
         # proceed packet
@@ -111,10 +116,8 @@
             else:
                 return None
 
-
         except PacketException as e:
             # if something wrong - skip packet
-            logger = logging.getLogger(__name__)
             logger.warning("Packet skipped: %s", e)
             self.is_begin = False
             self.is_end = False
@@ -122,7 +125,6 @@
 
         except TypeError:
             # if something wrong - skip packet
-            logger = logging.getLogger(__name__)
             logger.warning("Packet skipped: doesn't match schema")
             self.is_begin = False
             self.is_end = False
@@ -130,13 +132,11 @@
 
         except:
             # if something at all wrong - skip packet
-            logger = logging.getLogger(__name__)
             logger.warning("Packet skipped: something is wrong")
             self.is_begin = False
             self.is_end = False
             return None
 
-
     @staticmethod
     def create_packet(data, part_size):
         """ Create packet divided by parts with part_size from data
@@ -160,7 +160,6 @@
 
         return result
 
-
     def create_packet_v2(self, data, part_size):
         """ Create packet divided by parts with part_size from data
             Compressed """
@@ -179,7 +178,6 @@
         result.extend(parts)
         return result
 
-
     def get_matching_value_list(self, data):
         """ Get values in order server expect"""
         vals = range(0, self.tmpl_size)
@@ -188,7 +186,7 @@
             for node, groups in self.clt_template.items():
                 for group, counters in groups.items():
                     for counter, index in counters.items():
-                        if  not isinstance(index, dict):
+                        if not isinstance(index, dict):
                             vals[index] = data[node][group][counter]
                         else:
                             for k, i in index.items():
@@ -201,8 +199,6 @@
             logger.error("Data don't match last schema")
             raise PacketException("Data don't match last schema")
 
-
-
     def create_answer_template(self, perf_string):
         """ Create template for server to insert counter values
             Return tuple of server and clien templates + number of replaces"""
@@ -233,7 +229,3 @@
 
         self.tmpl_size = k
         self.clt_template = json.loads(clt_template)
-
-
-
-define_logger(__name__)
diff --git a/sensors/cp_transport.py b/sensors/cp_transport.py
index 1b951f2..2e00e80 100644
--- a/sensors/cp_transport.py
+++ b/sensors/cp_transport.py
@@ -5,7 +5,15 @@
 import urlparse
 
 from cp_protocol import Packet
-from logger import define_logger
+
+try:
+    from disk_perf_test_tool.logger import define_logger
+    logger = define_logger(__name__)
+except ImportError:
+    class Logger(object):
+        def debug(self, *dt):
+            pass
+    logger = Logger()
 
 
 class SenderException(Exception):
@@ -62,14 +70,12 @@
         self.all_data = {}
         self.send_packer = None
 
-
     def bind(self):
         """ Prepare for listening """
         self.sock.bind(self.bindto)
         self.sock.settimeout(0.5)
         self.binded = True
 
-
     def send(self, data):
         """ Send data to udp socket"""
         if self.sock.sendto(data, self.sendto) != len(data):
@@ -77,7 +83,6 @@
             logger.error(mes)
             raise SenderException("Cannot send data")
 
-
     def send_by_protocol(self, data):
         """ Send data by Packet protocol
             data = dict"""
@@ -87,7 +92,6 @@
         for part in parts:
             self.send(part)
 
-
     def recv(self):
         """ Receive data from udp socket"""
         # check for binding
@@ -100,7 +104,6 @@
         except socket.timeout:
             raise Timeout()
 
-
     def recv_by_protocol(self):
         """ Receive data from udp socket by Packet protocol"""
         data, remote_ip = self.recv()
@@ -110,7 +113,6 @@
 
         return self.all_data[remote_ip].new_packet(data)
 
-
     def recv_with_answer(self, stop_event=None):
         """ Receive data from udp socket and send 'ok' back
             Command port = local port + 1
@@ -132,7 +134,6 @@
                     # return None if we are interrupted
                     return None
 
-
     def verified_send(self, send_host, message, max_repeat=20):
         """ Send and verify it by answer not more then max_repeat
             Send port = local port + 1
@@ -148,12 +149,9 @@
                 if remote_ip == send_host and data == "ok":
                     return True
                 else:
-                    logger.warning("No answer from %s, try %i", send_host, repeat)
+                    logger.warning("No answer from %s, try %i",
+                                   send_host, repeat)
             except Timeout:
                 logger.warning("No answer from %s, try %i", send_host, repeat)
 
         return False
-
-
-
-logger = define_logger(__name__)
diff --git a/sensors/daemonize.py b/sensors/daemonize.py
index 1c3241b..a4fa157 100644
--- a/sensors/daemonize.py
+++ b/sensors/daemonize.py
@@ -20,17 +20,22 @@
     - action: your custom function which will be executed after daemonization.
     - keep_fds: optional list of fds which should not be closed.
     - auto_close_fds: optional parameter to not close opened fds.
-    - privileged_action: action that will be executed before drop privileges if user or
+    - privileged_action: action that will be executed before
+                         drop privileges if user or
                          group parameter is provided.
-                         If you want to transfer anything from privileged_action to action, such as
-                         opened privileged file descriptor, you should return it from
-                         privileged_action function and catch it inside action function.
+                         If you want to transfer anything from privileged
+                         action to action, such as opened privileged file
+                         descriptor, you should return it from
+                         privileged_action function and catch it inside action
+                         function.
     - user: drop privileges to this user if provided.
     - group: drop privileges to this group if provided.
     - verbose: send debug messages to logger if provided.
     - logger: use this logger object instead of creating new one, if provided.
     """
-    def __init__(self, app, pid, action, keep_fds=None, auto_close_fds=True, privileged_action=None, user=None, group=None, verbose=False, logger=None):
+    def __init__(self, app, pid, action, keep_fds=None, auto_close_fds=True,
+                 privileged_action=None, user=None, group=None, verbose=False,
+                 logger=None):
         self.app = app
         self.pid = pid
         self.action = action
@@ -62,19 +67,22 @@
         """ start method
         Main daemonization process.
         """
-        # If pidfile already exists, we should read pid from there; to overwrite it, if locking
+        # If pidfile already exists, we should read pid from there;
+        # to overwrite it, if locking
         # will fail, because locking attempt somehow purges the file contents.
         if os.path.isfile(self.pid):
             with open(self.pid, "r") as old_pidfile:
                 old_pid = old_pidfile.read()
-        # Create a lockfile so that only one instance of this daemon is running at any time.
+        # Create a lockfile so that only one instance of this daemon is
+        # running at any time.
         try:
             lockfile = open(self.pid, "w")
         except IOError:
             print("Unable to create the pidfile.")
             sys.exit(1)
         try:
-            # Try to get an exclusive lock on the file. This will fail if another process has the file
+            # Try to get an exclusive lock on the file. This will fail if
+            # another process has the file
             # locked.
             fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
         except IOError:
@@ -97,7 +105,8 @@
         # Stop listening for signals that the parent process receives.
         # This is done by getting a new process id.
         # setpgrp() is an alternative to setsid().
-        # setsid puts the process in a new parent group and detaches its controlling terminal.
+        # setsid puts the process in a new parent group and detaches
+        # its controlling terminal.
         process_id = os.setsid()
         if process_id == -1:
             # Uh oh, there was a problem.
@@ -106,10 +115,12 @@
         # Add lockfile to self.keep_fds.
         self.keep_fds.append(lockfile.fileno())
 
-        # Close all file descriptors, except the ones mentioned in self.keep_fds.
+        # Close all file descriptors, except the ones mentioned in
+        # self.keep_fds.
         devnull = "/dev/null"
         if hasattr(os, "devnull"):
-            # Python has set os.devnull on this system, use it instead as it might be different
+            # Python has set os.devnull on this system, use it instead as it
+            # might be different
             # than /dev/null.
             devnull = os.devnull
 
@@ -140,7 +151,8 @@
             else:
                 syslog_address = "/dev/log"
 
-            # We will continue with syslog initialization only if actually have such capabilities
+            # We will continue with syslog initialization only if
+            # actually have such capabilities
             # on the machine we are running this.
             if os.path.isfile(syslog_address):
                 syslog = handlers.SysLogHandler(syslog_address)
@@ -149,17 +161,20 @@
                 else:
                     syslog.setLevel(logging.INFO)
                 # Try to mimic to normal syslog messages.
-                formatter = logging.Formatter("%(asctime)s %(name)s: %(message)s",
+                format_t = "%(asctime)s %(name)s: %(message)s"
+                formatter = logging.Formatter(format_t,
                                               "%b %e %H:%M:%S")
                 syslog.setFormatter(formatter)
 
                 self.logger.addHandler(syslog)
 
-        # Set umask to default to safe file permissions when running as a root daemon. 027 is an
+        # Set umask to default to safe file permissions when running
+        # as a root daemon. 027 is an
         # octal number which we are typing as 0o27 for Python3 compatibility.
         os.umask(0o27)
 
-        # Change to a known directory. If this isn't done, starting a daemon in a subdirectory that
+        # Change to a known directory. If this isn't done, starting a daemon
+        # in a subdirectory that
         # needs to be deleted results in "directory busy" errors.
         os.chdir("/")
 
diff --git a/sensors/deploy_sensors.py b/sensors/deploy_sensors.py
index a1091c2..b2dc3f1 100644
--- a/sensors/deploy_sensors.py
+++ b/sensors/deploy_sensors.py
@@ -2,11 +2,10 @@
 import json
 import os.path
 
-from ssh_copy_directory import copy_paths
-from ssh_runner import connect
-
 from concurrent.futures import ThreadPoolExecutor, wait
 
+from disk_perf_test_tool.ssh_utils import connect, copy_paths
+
 
 def wait_all_ok(futures):
     return all(future.result() for future in futures)
@@ -42,6 +41,7 @@
         cmd = cmd_templ.format(main_remote_path,
                                monitor_uri,
                                config_remote_path)
+        print "Executing", cmd
         conn.exec_command(cmd)
         sftp.close()
         conn.close()
diff --git a/sensors/logger.py b/sensors/logger.py
deleted file mode 100644
index bd4c6ef..0000000
--- a/sensors/logger.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python
-""" Logger initialization """
-
-import logging
-
-
-def define_logger(name):
-    """ Initialization of logger"""
-    logger = logging.getLogger(name)
-    logger.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    logger.addHandler(ch)
-
-    log_format = '%(asctime)s - %(levelname)s - %(name)s - %(message)s'
-    formatter = logging.Formatter(log_format,
-                                  "%H:%M:%S")
-    ch.setFormatter(formatter)
-    return logger
diff --git a/sensors/main.py b/sensors/main.py
index 449acc1..fea46a3 100644
--- a/sensors/main.py
+++ b/sensors/main.py
@@ -2,25 +2,25 @@
 import sys
 import time
 import json
+import glob
 import signal
 import os.path
 import argparse
 
-# pylint: disable=W0611
-import io_sensors
-import net_sensors
-import pscpu_sensors
-import psram_sensors
-import syscpu_sensors
-import sysram_sensors
-# pylint: enable=W0611
-
-from utils import SensorInfo
+from sensors.utils import SensorInfo
 from daemonize import Daemonize
 from discover import all_sensors
 from protocol import create_protocol
 
 
+# load all sensors
+import sensors
+sensors_dir = os.path.dirname(sensors.__file__)
+for fname in glob.glob(os.path.join(sensors_dir, "*.py")):
+    mod_name = os.path.basename(fname[:-3])
+    __import__("sensors." + mod_name)
+
+
 def get_values(required_sensors):
     result = {}
     for sensor_name, params in required_sensors:
@@ -68,7 +68,7 @@
     opts = parse_args(argv)
 
     if opts.list_sensors:
-        print " ".join(all_sensors)
+        print "\n".join(sorted(all_sensors))
         return 0
 
     if opts.daemon is not None:
diff --git a/sensors/receiver.py b/sensors/receiver.py
index 8903f24..76f8bb7 100644
--- a/sensors/receiver.py
+++ b/sensors/receiver.py
@@ -1,41 +1,19 @@
-import yaml
-
 from api import start_monitoring, Empty
-from influx_exporter import connect, add_data
-
-monitor_config = yaml.load(open("config.yaml").read())
+# from influx_exporter import connect, add_data
 
 uri = "udp://192.168.0.104:12001"
-infldb_url = "influxdb://perf:perf@192.168.152.42:8086/perf"
-conn = connect(infldb_url)
+# infldb_url = "influxdb://perf:perf@192.168.152.42:8086/perf"
+# conn = connect(infldb_url)
 
-# sw_per_ip = {}
-# count = 4
-# expected = sorted(monitor_config.keys())
-
-# if 'sda1.sectors_written' in data:
-#     val = data['sda1.sectors_written']
-# elif 'sdb.sectors_written' in data:
-#     val = data['sdb.sectors_written']
-# else:
-#     val = 0
-
-# sw_per_ip[ip] = sw_per_ip.get(ip, 0) + val
-# count -= 1
-
-# if 0 == count:
-#     try:
-#         vals = [sw_per_ip[ip] for ip in expected]
-#         print ("{:>6}" * len(expected)).format(*vals)
-#         sw_per_ip = {}
-#         count = 4
-#     except KeyError:
-#         pass
+monitor_config = {'127.0.0.1':
+                  {"block-io": {'allowed_prefixes': ['sda1', 'rbd1']},
+                   "net-io": {"allowed_prefixes": ["virbr2"]}}}
 
 with start_monitoring(uri, monitor_config) as queue:
     while True:
         try:
             (ip, port), data = queue.get(True, 1)
-            add_data(conn, ip, [data])
+            print (ip, port), data
+            # add_data(conn, ip, [data])
         except Empty:
             pass
diff --git a/sensors/sensors/__init__.py b/sensors/sensors/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sensors/sensors/__init__.py
diff --git a/sensors/io_sensors.py b/sensors/sensors/io_sensors.py
similarity index 100%
rename from sensors/io_sensors.py
rename to sensors/sensors/io_sensors.py
diff --git a/sensors/net_sensors.py b/sensors/sensors/net_sensors.py
similarity index 100%
rename from sensors/net_sensors.py
rename to sensors/sensors/net_sensors.py
diff --git a/sensors/ps_mem.py b/sensors/sensors/ps_mem.py
similarity index 100%
rename from sensors/ps_mem.py
rename to sensors/sensors/ps_mem.py
diff --git a/sensors/pscpu_sensors.py b/sensors/sensors/pscpu_sensors.py
similarity index 99%
rename from sensors/pscpu_sensors.py
rename to sensors/sensors/pscpu_sensors.py
index f7c2d20..83b18c6 100644
--- a/sensors/pscpu_sensors.py
+++ b/sensors/sensors/pscpu_sensors.py
@@ -4,7 +4,6 @@
 from utils import SensorInfo, get_pid_name, get_pid_list
 
 
-
 @provides("perprocess-cpu")
 def pscpu_stat(disallowed_prefixes=None, allowed_prefixes=None):
     results = {}
diff --git a/sensors/psram_sensors.py b/sensors/sensors/psram_sensors.py
similarity index 100%
rename from sensors/psram_sensors.py
rename to sensors/sensors/psram_sensors.py
diff --git a/sensors/syscpu_sensors.py b/sensors/sensors/syscpu_sensors.py
similarity index 100%
rename from sensors/syscpu_sensors.py
rename to sensors/sensors/syscpu_sensors.py
diff --git a/sensors/sysram_sensors.py b/sensors/sensors/sysram_sensors.py
similarity index 100%
rename from sensors/sysram_sensors.py
rename to sensors/sensors/sysram_sensors.py
diff --git a/sensors/utils.py b/sensors/sensors/utils.py
similarity index 100%
rename from sensors/utils.py
rename to sensors/sensors/utils.py
diff --git a/sensors/storage/__init__.py b/sensors/storage/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sensors/storage/__init__.py
diff --git a/sensors/grafana.py b/sensors/storage/grafana.py
similarity index 100%
rename from sensors/grafana.py
rename to sensors/storage/grafana.py
diff --git a/sensors/grafana_template.js b/sensors/storage/grafana_template.js
similarity index 100%
rename from sensors/grafana_template.js
rename to sensors/storage/grafana_template.js
diff --git a/sensors/influx_exporter.py b/sensors/storage/influx_exporter.py
similarity index 100%
rename from sensors/influx_exporter.py
rename to sensors/storage/influx_exporter.py
