diff --git a/cfg_checker/helpers/tgz.py b/cfg_checker/helpers/tgz.py
index 5be00e2..9ac84f2 100644
--- a/cfg_checker/helpers/tgz.py
+++ b/cfg_checker/helpers/tgz.py
@@ -55,7 +55,7 @@
             with tarfile.open(self.basefile, "r:gz") as tgz:
                 _tgzitem = tgz.extractfile(tgz.getmember(name))
                 if decode:
-                    return _tgzitem.read().decode('utf-8') 
+                    return _tgzitem.read().decode('utf-8')
                 else:
                     return _tgzitem.read()
         else:
diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index 54dadb9..b65e14d 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -81,4 +81,4 @@
             errors_class=self.errors,
             skip_list=skip_list,
             skip_list_file=skip_list_file
-        )
\ No newline at end of file
+        )
diff --git a/cfg_checker/modules/packages/repos.py b/cfg_checker/modules/packages/repos.py
index 6853a8f..a308864 100644
--- a/cfg_checker/modules/packages/repos.py
+++ b/cfg_checker/modules/packages/repos.py
@@ -135,11 +135,11 @@
             return [], []
         a = page.text.splitlines()
         # Comprehension for dirs. Anchors for ends with '-'
-        _dirs = [l[l.index(_s)+6:l.index(_e)-1]
-                 for l in a if l.startswith(_a) and l.endswith('-')]
+        _dirs = [ll[ll.index(_s)+6:ll.index(_e)-1]
+                 for ll in a if ll.startswith(_a) and ll.endswith('-')]
         # Comprehension for files. Anchors ends with size
-        _files = [l[l.index(_s)+6:l.index(_e)]
-                  for l in a if l.startswith(_a) and not l.endswith('-')]
+        _files = [ll[ll.index(_s)+6:ll.index(_e)]
+                  for ll in a if ll.startswith(_a) and not ll.endswith('-')]
 
         return _dirs, _files
 
@@ -754,10 +754,6 @@
                                 _value = ""
                             else:
                                 _key, _value = _line.split(": ", 1)
-                            # _key = _line[:_line.index(':')]
-
-                            # _value = _line[_line.index(':')+1:]
-                            # _value = _value if _value[0] != ' ' else _value[1:]
                             _key = _key.lower()
                             _desc[_key] = _value
                     # save descriptions if needed
diff --git a/cfg_checker/nodes.py b/cfg_checker/nodes.py
index eea6500..fde217f 100644
--- a/cfg_checker/nodes.py
+++ b/cfg_checker/nodes.py
@@ -39,7 +39,7 @@
                     "\n".join(_invalid)
                 )
             )
-        
+
     # process wildcard, create node list out of mask
     if skip_list:
         _list = []
diff --git a/scripts/sniffer.py b/scripts/sniffer.py
index 8657f8a..72ccbb9 100644
--- a/scripts/sniffer.py
+++ b/scripts/sniffer.py
@@ -1,3 +1,8 @@
+"""
+This is a WIP script.
+Work is halted,
+due to incompatibility between Mac OS X and Linux on how to handle network
+"""
 import binascii
 import socket
 import struct
@@ -118,21 +123,22 @@
     # Capture packets from network
     pkt = s.recvfrom(65565)
 
-    print "\n\n=== [+] ------------ Ethernet Header----- [+]"
+    print("\n\n=== [+] ------------ Ethernet Header----- [+]")
 
     # print data on terminal
     for i in u.eth_header(pkt[0][0:14]).items():
         a, b = i
-        print "{} : {} | ".format(a, b),
-    print "\n=== [+] ------------ IP Header ------------[+]"
+        print("{} : {} | ".format(a, b))
+    print("\n=== [+] ------------ IP Header ------------[+]")
     for i in u.ip_header(pkt[0][14:34]).items():
         a, b = i
-        print "{} : {} | ".format(a, b),
-    print "\n== [+] ------------ Tcp Header ----------- [+]"
+        print("{} : {} | ".format(a, b))
+    print("\n== [+] ------------ Tcp Header ----------- [+]")
+
     for i in u.tcp_header(pkt[0][34:54]).items():
         a, b = i
-        print "{} : {} | ".format(a, b),
-    print "\n===== Data ===="
-    print pkt[0][54:]
-    print "\n======="
-    print pkt[1:]
+        print("{} : {} | ".format(a, b))
+    print("\n===== Data ====")
+    print(pkt[0][54:])
+    print("\n=======")
+    print(pkt[1:])
diff --git a/tests/res/fake.csv b/tests/res/fake.csv
index b3ea843..08f4c59 100644
--- a/tests/res/fake.csv
+++ b/tests/res/fake.csv
@@ -1,8 +1,8 @@
 type,package_name,node,status,action,installed,candidate,release
-mirantis,fakepackage-m,cfg01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
-mirantis,fakepackage-m,cmp01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
-mirantis,fakepackage-m,ctl01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
     
     
     
+unlisted,fakepackage-m,cfg01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
+unlisted,fakepackage-m,cmp01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
+unlisted,fakepackage-m,ctl01.fakedomain.local,OK,Upgrade possible,1.2.2-0ubuntu4,1.2.3-0ubuntu4,n/a
     
diff --git a/versions/repo.info.tgz b/versions/repo.info.tgz
index 2bbc28d..b865fb7 100644
--- a/versions/repo.info.tgz
+++ b/versions/repo.info.tgz
Binary files differ
diff --git a/versions/repo.versions.tgz b/versions/repo.versions.tgz
index 39f188d..657ccd3 100644
--- a/versions/repo.versions.tgz
+++ b/versions/repo.versions.tgz
Binary files differ
