diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index ca4e261..0ca1e85 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -147,7 +147,7 @@
         }
         return _info
 
-    def get_cmd_for_nodes(self, cmd, target_key, target_dict=None):
+    def get_cmd_for_nodes(self, cmd, target_key, target_dict=None, nodes=None):
         """Function runs. cmd.run and parses result into place
         or into dict structure provided
 
@@ -160,8 +160,9 @@
             _nodes = target_dict
         else:
             _nodes = self.nodes
-        _result = self.execute_cmd_on_active_nodes(cmd)
+        _result = self.execute_cmd_on_active_nodes(cmd, nodes=nodes)
         for node, data in _nodes.iteritems():
+            
             if node in self.skip_list:
                 logger_cli.debug(
                     "... '{}' skipped while collecting '{}'".format(
@@ -176,6 +177,8 @@
             # Save data
             if data['status'] == const.NODE_DOWN:
                 data[target_key] = None
+            elif node not in _result:
+                continue
             elif not _result[node]:
                 logger_cli.debug(
                     "... '{}' not responded after '{}'".format(
@@ -369,11 +372,11 @@
         self.not_responded = [_n for _n in _r.keys() if not _r[_n]]
         return _r
 
-    def execute_cmd_on_active_nodes(self, cmd):
+    def execute_cmd_on_active_nodes(self, cmd, nodes=None):
         # execute cmd
         self.not_responded = []
         _r = self.salt.cmd(
-            self.active_nodes_compound,
+            nodes if nodes else self.active_nodes_compound,
             'cmd.run',
             param=cmd,
             expr_form="compound"
