Package versions report updates
diff --git a/cfg_checker/modules/packages/__init__.py b/cfg_checker/modules/packages/__init__.py
index 4f1a809..0e2d956 100644
--- a/cfg_checker/modules/packages/__init__.py
+++ b/cfg_checker/modules/packages/__init__.py
@@ -16,6 +16,6 @@
     # collect data on installed packages
     pChecker.collect_installed_packages()
     # diff installed and candidates
-    # pChecker.collect_packages()
+    pChecker.collect_packages()
     # report it
     pChecker.create_html_report(_filename)
diff --git a/cfg_checker/modules/packages/checker.py b/cfg_checker/modules/packages/checker.py
index 100b329..4956a52 100644
--- a/cfg_checker/modules/packages/checker.py
+++ b/cfg_checker/modules/packages/checker.py
@@ -32,7 +32,7 @@
                     logger_cli.info("... no JSON for '{}'".format(
                         key
                     ))
-                    logger_cli.debug("... {}".format(_text[:_text.find('{')]))
+                    logger_cli.debug("ERROR:\n{}\n".format(_text[:_text.find('{')]))
                     _dict = {}
                 
                 self.nodes[key]['packages'] = _dict
@@ -50,16 +50,31 @@
 
         :return: no return values, all date put to dict in place
         """
-        _all_packages = {}
+        # Collect packages from all of the nodes in flat dict
+        _diff_packages = {}
         for node_name, node_value in self.nodes.iteritems():
-            for package_name in node_value['packages']:
-                if package_name not in _all_packages:
-                    _all_packages[package_name] = {}
-                _all_packages[package_name][node_name] = node_value
+            for _name, _value in node_value['packages'].iteritems():
+                if _name not in _diff_packages:
+                    _diff_packages[_name] = {}
+                    _diff_packages[_name]['df_nodes'] = {}
+                    _diff_packages[_name]['eq_nodes'] = []
+                
+                # compare packages, mark if equal
+                if _value['installed'] != _value['candidate']:
+                    # Saving compare value so we not do str compare again
+                    _value['is_equal'] = False
+                    # add node name to list
+                    _diff_packages[_name]['df_nodes'][node_name] = {
+                        'i': _value['installed'],
+                        'c': _value['candidate'],
+                        'raw': _value['raw']
+                    }
+                else:
+                    # Saving compare value so we not do str compare again
+                    _value['is_equal'] = True
+                    _diff_packages[_name]['eq_nodes'].append(node_name)
 
-        # TODO: process data for per-package basis
-
-        self.all_packages = _all_packages
+        self.diff_packages = _diff_packages
 
     def create_html_report(self, filename):
         """
@@ -74,6 +89,7 @@
         )
         _report({
             "nodes": self.nodes,
-            "diffs": {}
+            "rc_diffs": {},
+            "pkg_diffs": self.diff_packages
         })
         logger_cli.info("-> Done")
diff --git a/cfg_checker/modules/reclass/comparer.py b/cfg_checker/modules/reclass/comparer.py
index eaf1ce8..5ef2ca5 100644
--- a/cfg_checker/modules/reclass/comparer.py
+++ b/cfg_checker/modules/reclass/comparer.py
@@ -135,7 +135,7 @@
             )
         
         # save it as a single data object
-        self.models[name]["all_diffs"] = raw_tree[root_key]
+        self.models[name]["rc_diffs"] = raw_tree[root_key]
         return True
 
     def find_changes(self, dict1, dict2, path=""):
@@ -356,7 +356,7 @@
         # report will have tabs for each of the comparable entities in diffs
         report({
             "nodes": {},
-            "all_diffs": diffs,
+            "rc_diffs": diffs,
         })
         # with open("./gen_tree.json", "w+") as _out:
         #     _out.write(json.dumps(mComparer.generate_model_report_tree))
diff --git a/cfg_checker/reports/reporter.py b/cfg_checker/reports/reporter.py
index 9d2b2eb..e1d6b6f 100644
--- a/cfg_checker/reports/reporter.py
+++ b/cfg_checker/reports/reporter.py
@@ -63,7 +63,8 @@
         # system, nodes, clusters, and the rest in other
         data.update({
             "nodes": payload['nodes'],
-            "all_diffs": payload['diffs'],
+            "rc_diffs": payload['rc_diffs'],
+            "pkg_diffs": payload['pkg_diffs'],
             "tabs": {}
         })
 
@@ -121,18 +122,20 @@
         return _fail_uniq
 
     def _extend_data(self, data):
-        _all_pkg = 0
+        # Count values on per-node basis
         for key, value in data['nodes'].iteritems():
-            # add count of packages for this node to total
-            _all_pkg += len(value.keys())
-
             # count differences
             data['counters'][key] = {}
             data['counters'][key]['packages'] = len(value['packages'].keys())
             data['counters'][key]['package_diff'] = 0
+            data['counters'][key]['package_eq'] = 0
+
+            # Lookup if this fail is uniq for this node
             for pkg_name, pkg_value in value['packages'].iteritems():
-                if pkg_value['installed'] != pkg_value['candidate']:
-                    pkg_value['is_equal'] = False
+                if pkg_value['is_equal']:
+                    pkg_value['fail_uniq'] = False
+                    data['counters'][key]['package_eq'] += 1
+                else:
                     pkg_value['fail_uniq'] = self.is_fail_uniq(
                         pkg_value,
                         pkg_name,
@@ -140,11 +143,15 @@
                         key
                     )
                     data['counters'][key]['package_diff'] += 1
-                else:
-                    pkg_value['is_equal'] = True
-                    pkg_value['fail_uniq'] = False
+       
+        # Count values on all-diffs basis
+        for key, value in data['pkg_diffs'].iteritems():
+            data['counters'][key] = {}
+            data['counters'][key]['df_nodes'] = len(value['df_nodes'].keys())
+            data['counters'][key]['eq_nodes'] = len(value['eq_nodes'])
 
-        data['counters']['total_packages'] = _all_pkg
+        # Save all packages counter
+        data['counters']['total_packages'] = data['pkg_diffs'].keys()
 
 
 # Package versions report
@@ -153,8 +160,8 @@
 
     def _extend_data(self, data):
         # move names into separate place
-        data["names"] = data["all_diffs"].pop("diff_names")
-        data["tabs"] = data.pop("all_diffs")
+        data["names"] = data["rc_diffs"].pop("diff_names")
+        data["tabs"] = data.pop("rc_diffs")
         
         # counters - mdl_diff
         for _tab in data["tabs"].keys():