diff --git a/cfg_checker/helpers/console_utils.py b/cfg_checker/helpers/console_utils.py
index 994143c..1a2c184 100644
--- a/cfg_checker/helpers/console_utils.py
+++ b/cfg_checker/helpers/console_utils.py
@@ -16,8 +16,8 @@
         new_size = len(note)
         if self._note_size > new_size:
             _suffix = ' '*(self._note_size - new_size)
-        _percent = (100 * index) / self.total
-        _index = (self.bar_size * index) / self.total
+        _percent = (100 * index) // self.total
+        _index = (self.bar_size * index) // self.total
         # clear the line
         sys.stdout.write('\r')
         # print new progress
diff --git a/cfg_checker/helpers/errors.py b/cfg_checker/helpers/errors.py
index 95e1495..27ed242 100644
--- a/cfg_checker/helpers/errors.py
+++ b/cfg_checker/helpers/errors.py
@@ -25,11 +25,15 @@
         0: "Unknown error"
     }
 
-    def __init__(self, area_code, delimiter='-'):
+    def __init__(self, area_code, delimiter='-', folder=None):
         self._area_code = area_code
         self._delimiter = delimiter
         self._index += 1
 
+        # save folder
+        if folder:
+            self._error_logs_folder_name = folder
+
         # init the error log storage folder
         _folder = os.path.join(pkg_dir, self._error_logs_folder_name)
         self._conf_filename = os.path.join(
@@ -98,7 +102,7 @@
         _code = self._format_error_code(index)
         # prepare data as string list
         _d = self._errors[index]['data']
-        _data = ["    {}: {}".format(_k, _v) for _k, _v in _d.iteritems()]
+        _data = ["    {}: {}".format(_k, _v) for _k, _v in _d.items()]
         # format message
         _msg = "### {}:\n    Description: {}\n{}".format(
             _code,
@@ -170,9 +174,11 @@
 
         for _type in self._types.keys():
             _len = len(
-                filter(
-                    lambda i: self._errors[i]['type'] == _type,
-                    self._errors
+                list(
+                    filter(
+                        lambda i: self._errors[i]['type'] == _type,
+                        self._errors
+                    )
                 )
             )
             if _len:
diff --git a/cfg_checker/helpers/tgz.py b/cfg_checker/helpers/tgz.py
index 754f0de..5be00e2 100644
--- a/cfg_checker/helpers/tgz.py
+++ b/cfg_checker/helpers/tgz.py
@@ -50,11 +50,14 @@
         else:
             self.basefile = _filepath
 
-    def get_file(self, name):
+    def get_file(self, name, decode=False):
         if self.has_file(name):
             with tarfile.open(self.basefile, "r:gz") as tgz:
                 _tgzitem = tgz.extractfile(tgz.getmember(name))
-                return _tgzitem.read()
+                if decode:
+                    return _tgzitem.read().decode('utf-8') 
+                else:
+                    return _tgzitem.read()
         else:
             return None
 
diff --git a/cfg_checker/helpers/zip.py b/cfg_checker/helpers/zip.py
deleted file mode 100644
index b050030..0000000
--- a/cfg_checker/helpers/zip.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import os
-import zipfile
-
-
-class ZIPFile(object):
-    def __init__(self, _filepath, label=None):
-
-        return
