diff --git a/installsystems/database.py b/installsystems/database.py
index 6a7667ede1b64a946ae30f09a8f46b7014933153..b5dd8463d9139105d8f14e4290139d7e49eb8375 100644
--- a/installsystems/database.py
+++ b/installsystems/database.py
@@ -26,7 +26,7 @@ class Database(object):
         if os.path.exists(dbpath):
             raise Exception("db already exists")
         try:
-            tarball = Tarball.open(dbpath, mode="w:bz2", dereference=True)
+            tarball = Tarball.open(dbpath, mode="w:gz", dereference=True)
             tarball.add_str("format", Database.db_format, tarfile.REGTYPE, 0444)
             tarball.close()
         except Exception as e:
@@ -52,8 +52,8 @@ class Database(object):
         jdesc = json.dumps(desc)
         try:
             arrow("Adding to tarball", 2, self.verbose)
-            db = Tarball.open(self.path, mode='r:bz2')
-            newdb = Tarball.open(newdb_path, mode='w:bz2')
+            db = Tarball.open(self.path, mode='r:gz')
+            newdb = Tarball.open(newdb_path, mode='w:gz')
             for ti in db.getmembers():
                 if ti.name != name:
                     newdb.addfile(ti, db.extractfile(ti))
@@ -72,8 +72,8 @@ class Database(object):
         newdb_path = "%s.new" % self.path
         fname = "%s-%s.json" % (name, version)
         try:
-            db = Tarball.open(self.path, mode='r:bz2')
-            newdb = Tarball.open(newdb_path, mode='w:bz2')
+            db = Tarball.open(self.path, mode='r:gz')
+            newdb = Tarball.open(newdb_path, mode='w:gz')
             for ti in db.getmembers():
                 if ti.name != fname:
                     newdb.addfile(ti, db.extractfile(ti))
@@ -88,7 +88,7 @@ class Database(object):
     def databalls(self, name, version):
         '''List data tarballs filenames'''
         try:
-            db = Tarball.open(self.path, mode='r:bz2')
+            db = Tarball.open(self.path, mode='r:gz')
             jdesc = json.loads(db.get_str("%s-%s.json" % (name, version)))
             db.close()
             return jdesc["data"]
@@ -98,7 +98,7 @@ class Database(object):
     def find(self, name, version=None):
         '''Find last version of an image'''
         try:
-            tarb = Tarball.open(self.path, mode='r:bz2')
+            tarb = Tarball.open(self.path, mode='r:gz')
             candidates = [ int((os.path.splitext(tpname)[0]).rsplit("-", 1)[1])
                            for tpname in tarb.getnames("%s-\d+.json" % name) ]
             tarb.close()
diff --git a/installsystems/image.py b/installsystems/image.py
index ac7e128da10e6b7ff0986543a6420496c65cf249..b645f683f0cdfbdaf1ab0e8d584b3f7a72c0e2a8 100644
--- a/installsystems/image.py
+++ b/installsystems/image.py
@@ -37,22 +37,11 @@ class Image(object):
         '''Check if @name is a valid image version'''
         return re.match("\d+", buf) is not None
 
-    def __init__(self, pbzip2=True):
-        self.pbzip2_path = self.path_search("pbzip2") if pbzip2 else None
-
-    def path_search(self, name, path=None):
-        '''Search in PATH for a binary'''
-        path = path or os.environ["PATH"]
-        for d in path.split(os.pathsep):
-            if os.path.exists(os.path.join(d, name)):
-                return os.path.join(os.path.abspath(d), name)
-        return None
-
 class SourceImage(Image):
     '''Image source manipulation class'''
 
     @classmethod
-    def create(cls, path, verbose=True, pbzip2=True):
+    def create(cls, path, verbose=True):
         '''Create an empty source image'''
         parser_path = os.path.join(path, "parser")
         setup_path = os.path.join(path, "setup")
@@ -90,10 +79,10 @@ class SourceImage(Image):
                     os.chmod(pf, 0777 & ~umask)
         except Exception as e:
             raise Exception("Unable to set rights on %s: %s" % (pf, e))
-        return cls(path, verbose, pbzip2)
+        return cls(path, verbose)
 
-    def __init__(self, path, verbose=True, pbzip2=True):
-        Image.__init__(self, pbzip2)
+    def __init__(self, path, verbose=True):
+        Image.__init__(self)
         self.base_path = path
         self.parser_path = os.path.join(path, "parser")
         self.setup_path = os.path.join(path, "setup")
@@ -122,11 +111,6 @@ class SourceImage(Image):
         # check if free to create script tarball
         if os.path.exists(tarpath) and overwrite == False:
             raise Exception("Tarball already exists. Remove it before")
-        # printing pbzip2 status
-        if self.pbzip2_path:
-            arrow("Parallel bzip2 enabled (%s)" % self.pbzip2_path, 1, self.verbose)
-        else:
-            arrow("Parallel bzip disabled", 1, self.verbose)
         #  Create data tarballs
         data_d = self.create_data_tarballs()
         # generate description.json
@@ -135,7 +119,7 @@ class SourceImage(Image):
         arrow("Creating scripts tarball", 1, self.verbose)
         arrow("Name %s" % os.path.relpath(tarpath), 2, self.verbose)
         try:
-            tarball = Tarball.open(tarpath, mode="w:bz2", dereference=True)
+            tarball = Tarball.open(tarpath, mode="w:gz", dereference=True)
         except Exception as e:
             raise Exception("Unable to create tarball %s: %s" % (tarpath, e))
         # add .description.json
@@ -190,26 +174,10 @@ class SourceImage(Image):
         ddref = False if os.path.isdir(data_path) else True
         try:
             # opening file
-            if self.pbzip2_path:
-                tb = open(tar_path, mode="w")
-                p = subprocess.Popen(self.pbzip2_path, shell=False, close_fds=True,
-                                     stdin=subprocess.PIPE, stdout=tb.fileno())
-                tarball = Tarball.open(mode="w|", dereference=ddref, fileobj=p.stdin)
-            else:
-                tarball = Tarball.open(tar_path, "w:bz2", dereference=ddref)
+            tarball = Tarball.open(tar_path, "w:gz", dereference=ddref)
             tarball.add(data_path, arcname=dname, recursive=True)
             # closing tarball file
             tarball.close()
-            if self.pbzip2_path:
-                # closing pipe, needed to end pbzip2
-                p.stdin.close()
-                # waiting pbzip to terminate
-                r = p.wait()
-                # cleaning openfile
-                tb.close()
-                # status
-                if r != 0:
-                    raise Exception("Data tarball %s creation return %s" % (tar_path, r))
         except Exception as e:
             raise Exception("Unable to create data tarball %s: %s" % (tar_path, e))
 
@@ -264,7 +232,7 @@ class PackageImage(Image):
         self.path = os.path.abspath(path)
         self.base_path = os.path.dirname(self.path)
         self.verbose = verbose
-        self.tarball = Tarball.open(self.path, mode='r:bz2')
+        self.tarball = Tarball.open(self.path, mode='r:gz')
         self.parse()
 
     @property
diff --git a/installsystems/tools.py b/installsystems/tools.py
index 28a17296b0a3517f2ce40e08754159016a585067..56c086757c21751499261f3b7b4ffa82fafaa0e0 100644
--- a/installsystems/tools.py
+++ b/installsystems/tools.py
@@ -101,7 +101,7 @@ def extractdata(image, name, target, filelist=None):
         raise Exception("No such data tarball in %s" % image.name)
     datainfo = image.datas[filename]
     fileobject = ropen(filename)
-    tarball = Tarball.open(fileobj=fileobject, mode="r|bz2")
+    tarball = Tarball.open(fileobj=fileobject, mode="r|gz")
     if filelist is None:
         tarball.extractall(target)
     else: