diff --git a/cfg_checker/common/salt_utils.py b/cfg_checker/common/salt_utils.py
index 4955fae..d4bd007 100644
--- a/cfg_checker/common/salt_utils.py
+++ b/cfg_checker/common/salt_utils.py
@@ -44,7 +44,7 @@
     
     _ssh_cmd.append(_salt_cmd)
     _ssh_cmd = " ".join(_ssh_cmd)
-    logger_cli.debug("### Calling salt: '{}'".format(_ssh_cmd))
+    logger_cli.debug("...calling salt: '{}'".format(_ssh_cmd))
     _result = shell(_ssh_cmd)
     if len(_result) < 1:
         raise InvalidReturnException("# Empty value returned for '{}".format(
diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index ccc7d62..24d751f 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -36,7 +36,7 @@
 
         :return: none
         """
-        logger_cli.info("### Collecting network data")
+        logger_cli.info("# Mapping node runtime network data")
         _result = self.execute_script_on_active_nodes("ifs_data.py", args=["json"])
 
         for key in self.nodes.keys():
@@ -47,7 +47,7 @@
                 self.nodes[key]['networks'] = _dict
             else:
                 self.nodes[key]['networks'] = {}
-            logger_cli.debug("# {} has {} networks".format(
+            logger_cli.debug("... {} has {} networks".format(
                 key,
                 len(self.nodes[key]['networks'].keys())
             ))
@@ -85,10 +85,11 @@
                     )
 
         # save collected info
-        self.all_networks = _all_nets
+        self.all_nets = _all_nets
 
 
     def collect_reclass_networks(self):
+        logger_cli.info("# Mapping reclass networks")
         # Get networks from reclass and mark them
         _reclass_nets = {}
         # Get required pillars
@@ -119,20 +120,46 @@
 
         :return: none
         """
-        for network, nodes in self.all_networks.iteritems():
+        _all_nets = self.all_nets.keys()
+        logger_cli.info("# Reclass networks")
+        _reclass = [n for n in _all_nets if n in self.reclass_nets]
+        for network in _reclass:
+            # shortcuts
             logger_cli.info("-> {}".format(str(network)))
-            names = sorted(nodes.keys())
+            names = sorted(self.all_nets[network].keys())
 
             for hostname in names:
-                _text = "{0:30}: {1:19} {2:5} {3:4}".format(
-                    nodes[hostname]['name'],
-                    str(nodes[hostname]['if'].ip),
-                    nodes[hostname]['mtu'],
-                    nodes[hostname]['state']
+                _a = self.all_nets[network][hostname]
+                _r = self.reclass_nets[network][hostname]
+                _text = "{0:30}: {1:19} {2:5}{3:10} {4}{5}".format(
+                    _a['name'],
+                    str(_a['if'].ip),
+                    _a['mtu'],
+                    '('+str(_r['mtu'])+')' if 'mtu' in _r else '(unset!)',
+                    _a['state'],
+                    "(enabled)" if _r['enabled'] else "(disabled)"
                 )
                 logger_cli.info(
                     "\t{0:10} {1}".format(hostname.split('.')[0], _text)
                 )
+        
+        logger_cli.info("\n# Other networks")
+        _other = [n for n in _all_nets if n not in self.reclass_nets]
+        for network in _other:
+            logger_cli.info("-> {}".format(str(network)))
+            names = sorted(self.all_nets[network].keys())
+
+            for hostname in names:
+                _text = "{0:30}: {1:19} {2:5} {3:4}".format(
+                    self.all_nets[network][hostname]['name'],
+                    str(self.all_nets[network][hostname]['if'].ip),
+                    self.all_nets[network][hostname]['mtu'],
+                    self.all_nets[network][hostname]['state']
+                )
+                logger_cli.info(
+                    "\t{0:10} {1}".format(hostname.split('.')[0], _text)
+                )
+
     
     def create_html_report(self, filename):
         """
diff --git a/cfg_checker/modules/packages/checker.py b/cfg_checker/modules/packages/checker.py
index 61e84b5..797c0fe 100644
--- a/cfg_checker/modules/packages/checker.py
+++ b/cfg_checker/modules/packages/checker.py
@@ -19,7 +19,7 @@
 
         :return: none
         """
-        logger_cli.info("### Collecting installed packages")
+        logger_cli.info("# Collecting installed packages")
         _result = self.execute_script_on_active_nodes("pkg_versions.py")
 
         for key in self.nodes.keys():
@@ -30,7 +30,7 @@
                 self.nodes[key]['packages'] = _dict
             else:
                 self.nodes[key]['packages'] = {}
-            logger_cli.debug("# {} has {} packages installed".format(
+            logger_cli.debug("... {} has {} packages installed".format(
                 key,
                 len(self.nodes[key]['packages'].keys())
             ))
@@ -59,7 +59,7 @@
 
         :return: buff with html
         """
-        logger_cli.info("### Generating report to '{}'".format(filename))
+        logger_cli.info("# Generating report to '{}'".format(filename))
         _report = reporter.ReportToFile(
             reporter.HTMLPackageCandidates(),
             filename
diff --git a/cfg_checker/modules/reclass/__init__.py b/cfg_checker/modules/reclass/__init__.py
index a695482..66576b6 100644
--- a/cfg_checker/modules/reclass/__init__.py
+++ b/cfg_checker/modules/reclass/__init__.py
@@ -37,7 +37,7 @@
 
 
 def do_diff(args):
-    logger_cli.info("Reclass comparer (HTML report: '{}'".format(args.file))
+    logger_cli.info("# Reclass comparer (HTML report: '{}'".format(args.file))
     _filename = args_utils.get_file_arg(args)
 
     # checking folder params
diff --git a/cfg_checker/modules/reclass/comparer.py b/cfg_checker/modules/reclass/comparer.py
index 0dec9d1..eaf1ce8 100644
--- a/cfg_checker/modules/reclass/comparer.py
+++ b/cfg_checker/modules/reclass/comparer.py
@@ -82,7 +82,7 @@
         Arguments:
             root_folder_path {string} -- Path to Model's root folder. Optional
         """
-        logger_cli.info("Loading reclass tree from '{}'".format(root_path))
+        logger_cli.info("# Loading reclass tree from '{}'".format(root_path))
         # prepare the file tree to walk
         raw_tree = {}
         # Credits to Andrew Clark@MIT. Original code is here:
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index a8c7cd1..798a8e5 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -19,13 +19,13 @@
 
 class SaltNodes(object):
     def __init__(self):
-        logger_cli.info("### Collecting nodes")
+        logger_cli.info("# Collecting nodes")
         # simple salt rest client
         self.salt = salt_utils.SaltRemote()
 
         # Keys for all nodes
         # this is not working in scope of 2016.8.3, will overide with list
-        logger_cli.info("# Collecting node names existing in the cloud")
+        logger_cli.debug("...collecting node names existing in the cloud")
         try:
             _keys = self.salt.list_keys()
             _str = []
@@ -86,7 +86,7 @@
 
         :return: no return value, data pulished internally
         """
-        logger_cli.info("# Collecting node pillars for '{}'".format(pillar_path))
+        logger_cli.debug("...collecting node pillars for '{}'".format(pillar_path))
         _result = self.salt.pillar_get(self.active_nodes_compound, pillar_path)
         for node, data in self.nodes.iteritems():
             _pillar_keys = pillar_path.split(':')
@@ -108,7 +108,7 @@
             config.salt_file_root, config.salt_scripts_folder
         )
         logger_cli.debug(
-            "# Uploading script {} to master's file cache folder: '{}'".format(
+            "...Uploading script {} to master's file cache folder: '{}'".format(
                 script_filename,
                 _storage_path
             )
@@ -127,11 +127,11 @@
             script_filename
         )
 
-        logger_cli.debug("# Creating file in cache '{}'".format(_cache_path))
+        logger_cli.debug("...creating file in cache '{}'".format(_cache_path))
         _result = self.salt.f_touch_master(_cache_path)
         _result = self.salt.f_append_master(_cache_path, _script)
         # command salt to copy file to minions
-        logger_cli.debug("# Creating script target folder '{}'".format(_cache_path))
+        logger_cli.debug("...creating script target folder '{}'".format(_cache_path))
         _result = self.salt.mkdir(
             self.active_nodes_compound,
             os.path.join(
