diff --git a/cfg_checker/modules/network/pinger.py b/cfg_checker/modules/network/pinger.py
index 075012c..30881da 100644
--- a/cfg_checker/modules/network/pinger.py
+++ b/cfg_checker/modules/network/pinger.py
@@ -3,7 +3,6 @@
 
 from cfg_checker.common import logger_cli
 from cfg_checker.helpers.console_utils import Progress
-from cfg_checker.modules.network.network_errors import NetworkErrors
 
 
 # This is independent class with a salt.nodes input
@@ -13,7 +12,6 @@
         mapper,
         mtu=None,
         detailed=False,
-        errors_class=None,
         skip_list=None,
         skip_list_file=None
     ):
@@ -25,12 +23,6 @@
         self.packet_size = int(self.target_mtu) - 20 - 8
         self.detailed_summary = detailed
 
-        if errors_class:
-            self.errors = errors_class
-        else:
-            logger_cli.debug("... init error logs folder")
-            self.errors = NetworkErrors()
-
     def _collect_node_addresses(self, target_net):
         # use reclass model and standard methods
         # to create list of nodes with target network
@@ -151,8 +143,8 @@
                         _result
                     )
                 )
-                self.errors.add_error(
-                    self.errors.NET_NODE_NON_RESPONSIVE,
+                self.mapper.errors.add_error(
+                    self.mapper.errors.NET_NODE_NON_RESPONSIVE,
                     node=src,
                     response=_result
                 )
@@ -177,32 +169,32 @@
 
                     if not _params["returncode"]:
                         # 0
-                        self.errors.add_error(
-                            self.errors.NET_PING_SUCCESS,
+                        self.mapper.errors.add_error(
+                            self.mapper.errors.NET_PING_SUCCESS,
                             ping_path=_body,
                             stdout=_stdout,
                             stderr=_stderr
                         )
                     elif _params["returncode"] == 68:
                         # 68 is a 'can't resove host error'
-                        self.errors.add_error(
-                            self.errors.NET_PING_NOT_RESOLVED,
+                        self.mapper.errors.add_error(
+                            self.mapper.errors.NET_PING_NOT_RESOLVED,
                             ping_path=_body,
                             stdout=_stdout,
                             stderr=_stderr
                         )
                     elif _params["returncode"] > 1:
                         # >1 is when no actial (any) response
-                        self.errors.add_error(
-                            self.errors.NET_PING_ERROR,
+                        self.mapper.errors.add_error(
+                            self.mapper.errors.NET_PING_ERROR,
                             ping_path=_body,
                             stdout=_stdout,
                             stderr=_stderr
                         )
                     else:
                         # 1 is for timeouts amd/or packet lost
-                        self.errors.add_error(
-                            self.errors.NET_PING_TIMEOUT,
+                        self.mapper.errors.add_error(
+                            self.mapper.errors.NET_PING_TIMEOUT,
                             ping_path=_body,
                             stdout=_stdout,
                             stderr=_stderr
@@ -216,12 +208,12 @@
         return 0
 
     def print_summary(self):
-        logger_cli.info(self.errors.get_summary(print_zeros=False))
+        logger_cli.info(self.mapper.errors.get_summary(print_zeros=False))
 
     def print_details(self):
         # Detailed errors
         logger_cli.info(
             "\n{}\n".format(
-                self.errors.get_errors()
+                self.mapper.errors.get_errors()
             )
         )
