diff --git a/.github/linters/.mypy.ini b/.github/linters/.mypy.ini
new file mode 100644
index 0000000..f8c69a0
--- /dev/null
+++ b/.github/linters/.mypy.ini
@@ -0,0 +1,2 @@
+[mypy]
+ignore_errors = True
\ No newline at end of file
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 3588b3d..3418ed8 100755
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -23,7 +23,7 @@
 extensions = [
     "sphinx.ext.autodoc",
     "openstackdocstheme",
-    #'sphinx.ext.intersphinx',
+#    'sphinx.ext.intersphinx',
 ]
 
 # autodoc generation is a bit aggressive and a nuisance when doing heavy
diff --git a/staffeln/__init__.py b/staffeln/__init__.py
index 553afa9..5612b0d 100755
--- a/staffeln/__init__.py
+++ b/staffeln/__init__.py
@@ -14,5 +14,4 @@
 
 import pbr.version
 
-
 __version__ = pbr.version.VersionInfo("staffeln").version_string()
diff --git a/staffeln/api/app.py b/staffeln/api/app.py
index e506dd6..64ade58 100755
--- a/staffeln/api/app.py
+++ b/staffeln/api/app.py
@@ -1,10 +1,7 @@
-from flask import Flask
-from flask import Response
-from flask import request
+from flask import Flask, Response, request
+from oslo_log import log
 from staffeln import objects
 from staffeln.common import context
-from oslo_log import log
-
 
 ctx = context.make_context()
 app = Flask(__name__)
@@ -22,7 +19,10 @@
         )
 
     # Retrive the backup object from backup_data table with matching backup_id.
-    backup = objects.Volume.get_backup_by_backup_id(ctx, request.args["backup_id"])
+    backup = objects.Volume.get_backup_by_backup_id(
+        context=ctx,
+        backup_id=request.args["backup_id"]
+    )
     # backup_info is None when there is no entry of the backup id in backup_table.
     # So the backup should not be the automated backup.
     if backup is None:
diff --git a/staffeln/api/middleware/parsable_error.py b/staffeln/api/middleware/parsable_error.py
index 05297b2..2b49f83 100755
--- a/staffeln/api/middleware/parsable_error.py
+++ b/staffeln/api/middleware/parsable_error.py
@@ -19,7 +19,6 @@
 """
 
 from oslo_serialization import jsonutils
-
 from staffeln.i18n import _
 
 
diff --git a/staffeln/api/wsgi.py b/staffeln/api/wsgi.py
index 55e080f..45b9347 100755
--- a/staffeln/api/wsgi.py
+++ b/staffeln/api/wsgi.py
@@ -1,2 +1,3 @@
+import app
 if __name__ == "__main__":
     app.run(host="0.0.0.0", port=8080)
diff --git a/staffeln/cmd/api.py b/staffeln/cmd/api.py
index 0280a66..a46656c 100755
--- a/staffeln/cmd/api.py
+++ b/staffeln/cmd/api.py
@@ -2,13 +2,11 @@
 import os
 import sys
 
+import staffeln.conf
 from oslo_log import log as logging
-
 from staffeln.api import app as api_app
 from staffeln.common import service
-import staffeln.conf
 from staffeln.i18n import _
-from staffeln import version
 
 CONF = staffeln.conf.CONF
 
diff --git a/staffeln/common/context.py b/staffeln/common/context.py
index a223558..c6046e1 100644
--- a/staffeln/common/context.py
+++ b/staffeln/common/context.py
@@ -1,6 +1,5 @@
 from oslo_context import context
 from oslo_log import log
-from oslo_utils import timeutils
 
 LOG = log.getLogger(__name__)
 
diff --git a/staffeln/common/email.py b/staffeln/common/email.py
index c5c4b70..693feb5 100644
--- a/staffeln/common/email.py
+++ b/staffeln/common/email.py
@@ -1,8 +1,8 @@
 # Email notification package
 # This should be upgraded by integrating with mail server to send batch
 import smtplib
-from email.mime.text import MIMEText
 from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
 
 __DRY_RUN__ = False
 
diff --git a/staffeln/common/openstack.py b/staffeln/common/openstack.py
index c6d2769..01e5ff5 100644
--- a/staffeln/common/openstack.py
+++ b/staffeln/common/openstack.py
@@ -1,5 +1,4 @@
-from openstack import exceptions
-from openstack import proxy
+from openstack import exceptions, proxy
 from oslo_log import log
 from staffeln.common import auth
 from staffeln.i18n import _
@@ -36,21 +35,17 @@
             user = self.conn.get_user(name_or_id=user_name)
         return user.id
 
-    ############## project
     def get_projects(self):
         return self.conn.list_projects()
 
-    ############## server
     def get_servers(self, project_id, all_projects=True, details=True):
         return self.conn.compute.servers(
             details=details, all_projects=all_projects, project_id=project_id
         )
 
-    ############## volume
     def get_volume(self, uuid, project_id):
         return self.conn.get_volume_by_id(uuid)
 
-    ############## backup
     def get_backup(self, uuid, project_id=None):
         # return conn.block_storage.get_backup(
         #     project_id=project_id, backup_id=uuid,
diff --git a/staffeln/common/service.py b/staffeln/common/service.py
index e35da2a..d2ad7a5 100755
--- a/staffeln/common/service.py
+++ b/staffeln/common/service.py
@@ -12,11 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from oslo_log import log as logging
-
-from staffeln.common import config
-from staffeln import objects
 import staffeln.conf
+from oslo_log import log as logging
+from staffeln import objects
+from staffeln.common import config
 
 CONF = staffeln.conf.CONF
 
diff --git a/staffeln/common/short_id.py b/staffeln/common/short_id.py
index 9350258..db4a3b1 100755
--- a/staffeln/common/short_id.py
+++ b/staffeln/common/short_id.py
@@ -6,7 +6,6 @@
 import uuid
 
 import six
-
 from staffeln.i18n import _
 
 
@@ -17,8 +16,8 @@
     required.
     """
     shifts = six.moves.xrange(num_bits - 8, -8, -8)
-    byte_at = lambda off: (
-        (value >> off if off >= 0 else value << -off) & 0xFF  # noqa: E731
+    byte_at = lambda off: ( # noqa: E731
+        (value >> off if off >= 0 else value << -off) & 0xFF
     )
     return "".join(chr(byte_at(offset)) for offset in shifts)
 
diff --git a/staffeln/common/time.py b/staffeln/common/time.py
index fd045dd..27bcf4f 100644
--- a/staffeln/common/time.py
+++ b/staffeln/common/time.py
@@ -1,11 +1,13 @@
 import re
 from datetime import datetime
+
 from dateutil.relativedelta import relativedelta
 
 DEFAULT_TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
 
 regex = re.compile(
-    r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?((?P<days>\d+?)d)?((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?"
+    r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?((?P<days>\d+?)d)?"
+    r"((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?"
 )
 
 
@@ -29,7 +31,7 @@
         if empty_flag:
             return None
         return time_params
-    except:
+    except: # noqa: E722
         return None
 
 
@@ -56,16 +58,3 @@
         minutes=minutes,
         seconds=seconds,
     )
-
-
-## yearsago using Standard library
-# def yearsago(years, from_date=None):
-#     if from_date is None:
-#         from_date = datetime.now()
-#     try:
-#         return from_date.replace(year=from_date.year - years)
-#     except ValueError:
-#         # Must be 2/29!
-#         assert from_date.month == 2 and from_date.day == 29 # can be removed
-#         return from_date.replace(month=2, day=28,
-#                                  year=from_date.year-years)
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index 07b8946..f7fba5b 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -1,16 +1,14 @@
+import collections
+
 import parse
 import staffeln.conf
-import collections
-from staffeln.common import constants
-from staffeln.conductor import result
+from openstack.exceptions import HttpException as OpenstackHttpException
 from openstack.exceptions import ResourceNotFound as OpenstackResourceNotFound
 from openstack.exceptions import SDKException as OpenstackSDKException
-from openstack.exceptions import HttpException as OpenstackHttpException
 from oslo_log import log
-from staffeln.common import context
 from staffeln import objects
+from staffeln.common import constants, context, openstack
 from staffeln.i18n import _
-from staffeln.common import openstack
 
 CONF = staffeln.conf.CONF
 LOG = log.getLogger(__name__)
@@ -60,14 +58,14 @@
         self.result.initialize()
 
     def get_backups(self, filters=None):
-        return objects.Volume.list(self.ctx, filters=filters)
+        return objects.Volume.list(context=self.ctx, filters=filters)
 
     def get_backup_quota(self, project_id):
         return self.openstacksdk.get_backup_quota(project_id)
 
     def get_queues(self, filters=None):
         """Get the list of volume queue columns from the queue_data table"""
-        queues = objects.Queue.list(self.ctx, filters=filters)
+        queues = objects.Queue.list(context=self.ctx, filters=filters)
         return queues
 
     def create_queue(self, old_tasks):
@@ -81,13 +79,13 @@
         # 2. add new tasks in the queue which are not existing in the old task list
         queue_list = self.check_instance_volumes()
         for queue in queue_list:
-            if not queue.volume_id in old_task_volume_list:
+            if queue.volume_id not in old_task_volume_list:
                 self._volume_queue(queue)
 
     # Backup the volumes attached to which has a specific metadata
     def filter_by_server_metadata(self, metadata):
         if CONF.conductor.backup_metadata_key is not None:
-            if not CONF.conductor.backup_metadata_key in metadata:
+            if CONF.conductor.backup_metadata_key not in metadata:
                 return False
 
             return (
@@ -101,7 +99,7 @@
     def filter_by_volume_status(self, volume_id, project_id):
         try:
             volume = self.openstacksdk.get_volume(volume_id, project_id)
-            if volume == None:
+            if volume is None:
                 return False
             res = volume["status"] in ("available", "in-use")
             if not res:
@@ -127,7 +125,7 @@
                 self.process_non_existing_backup(task)
             self.openstacksdk.set_project(self.project_list[project_id])
             backup = self.openstacksdk.get_backup(task.backup_id)
-            if backup == None:
+            if backup is None:
                 return task.delete_queue()
             self.openstacksdk.delete_backup(task.backup_id, force=True)
             task.delete_queue()
@@ -144,7 +142,7 @@
     def soft_remove_backup_task(self, backup_object):
         try:
             backup = self.openstacksdk.get_backup(backup_object.backup_id)
-            if backup == None:
+            if backup is None:
                 LOG.info(
                     _(
                         "Backup %s is not existing in Openstack."
@@ -191,7 +189,7 @@
             backup = self.openstacksdk.get_backup(
                 uuid=backup_object.backup_id, project_id=project_id
             )
-            if backup == None:
+            if backup is None:
                 LOG.info(
                     _(
                         "Backup %s is not existing in Openstack."
@@ -392,7 +390,7 @@
         self.openstacksdk.set_project(self.project_list[project_id])
         backup_gen = self.openstacksdk.get_backup(queue.backup_id)
 
-        if backup_gen == None:
+        if backup_gen is None:
             # TODO(Alex): need to check when it is none
             LOG.info(
                 _("[Beta] Backup status of %s is returning none." % (queue.backup_id))
diff --git a/staffeln/conductor/manager.py b/staffeln/conductor/manager.py
index e885043..7994287 100755
--- a/staffeln/conductor/manager.py
+++ b/staffeln/conductor/manager.py
@@ -1,12 +1,12 @@
-import cotyledon
-from futurist import periodics
-from oslo_log import log
-import staffeln.conf
+
 import threading
 import time
 
-from staffeln.common import constants
-from staffeln.common import context
+import cotyledon
+import staffeln.conf
+from futurist import periodics
+from oslo_log import log
+from staffeln.common import constants, context
 from staffeln.common import time as xtime
 from staffeln.conductor import backup
 from staffeln.i18n import _
@@ -68,7 +68,7 @@
             CONF.conductor.backup_cycle_timout
         )
 
-        if time_delta_dict == None:
+        if time_delta_dict is None:
             LOG.info(
                 _(
                     "Recycle timeout format is invalid. "
@@ -160,7 +160,7 @@
 
     def get_backup_list(self):
         threshold_strtime = self.get_threshold_strtime()
-        if threshold_strtime == None:
+        if threshold_strtime is None:
             return False
         self.backup_list = self.controller.get_backups(
             filters={"created_at__lt": threshold_strtime}
@@ -199,7 +199,7 @@
     # get the threshold time str
     def get_threshold_strtime(self):
         time_delta_dict = xtime.parse_timedelta_string(CONF.conductor.retention_time)
-        if time_delta_dict == None:
+        if time_delta_dict is None:
             LOG.info(
                 _(
                     "Retention time format is invalid. "
diff --git a/staffeln/conductor/result.py b/staffeln/conductor/result.py
index 3a6d640..63b8dd8 100644
--- a/staffeln/conductor/result.py
+++ b/staffeln/conductor/result.py
@@ -1,15 +1,11 @@
 # Email notification package
 # This should be upgraded by integrating with mail server to send batch
-import smtplib
-from email.mime.text import MIMEText
-from email.mime.multipart import MIMEMultipart
-from oslo_log import log
 import staffeln.conf
-from staffeln.common import time as xtime
+from oslo_log import log
 from staffeln.common import email
-from staffeln.i18n import _
+from staffeln.common import time as xtime
 from staffeln.conductor import backup
-from staffeln.common import openstack as openstacksdk
+from staffeln.i18n import _
 
 CONF = staffeln.conf.CONF
 LOG = log.getLogger(__name__)
diff --git a/staffeln/conf/__init__.py b/staffeln/conf/__init__.py
index 3359185..3289b63 100755
--- a/staffeln/conf/__init__.py
+++ b/staffeln/conf/__init__.py
@@ -1,10 +1,5 @@
 from oslo_config import cfg
-
-from staffeln.conf import api
-from staffeln.conf import conductor
-from staffeln.conf import database
-from staffeln.conf import notify
-from staffeln.conf import paths
+from staffeln.conf import api, conductor, database, notify, paths
 
 CONF = cfg.CONF
 
diff --git a/staffeln/conf/conductor.py b/staffeln/conf/conductor.py
index cb665d5..3924beb 100755
--- a/staffeln/conf/conductor.py
+++ b/staffeln/conf/conductor.py
@@ -25,7 +25,10 @@
     ),
     cfg.StrOpt(
         "backup_cycle_timout",
-        regex=r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?((?P<days>\d+?)d)?((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?",
+        regex=(
+            r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?"
+            r"((?P<days>\d+?)d)?((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?"
+        ),
         default=constants.DEFAULT_BACKUP_CYCLE_TIMEOUT,
         help=_(
             "The duration while the backup cycle waits backups."
@@ -63,7 +66,10 @@
     ),
     cfg.StrOpt(
         "retention_time",
-        regex=r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?((?P<days>\d+?)d)?((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?",
+        regex=(
+            r"((?P<years>\d+?)y)?((?P<months>\d+?)mon)?((?P<weeks>\d+?)w)?"
+            r"((?P<days>\d+?)d)?((?P<hours>\d+?)h)?((?P<minutes>\d+?)min)?((?P<seconds>\d+?)s)?"
+        ),
         default="2w3d",
         help=_(
             "The time of retention period, the for mat is "
diff --git a/staffeln/conf/notify.py b/staffeln/conf/notify.py
index 13375f1..890796a 100644
--- a/staffeln/conf/notify.py
+++ b/staffeln/conf/notify.py
@@ -1,7 +1,6 @@
 from oslo_config import cfg
 from staffeln.i18n import _
 
-
 notify_group = cfg.OptGroup(
     "notification",
     title="Notification options",
diff --git a/staffeln/conf/paths.py b/staffeln/conf/paths.py
index 8d403c5..7dbd9a1 100644
--- a/staffeln/conf/paths.py
+++ b/staffeln/conf/paths.py
@@ -1,9 +1,8 @@
+import os
+
 from oslo_config import cfg
 from staffeln.i18n import _
 
-
-import os
-
 PATH_OPTS = [
     cfg.StrOpt(
         "pybasedir",
diff --git a/staffeln/db/api.py b/staffeln/db/api.py
index 029ad11..2d10a05 100644
--- a/staffeln/db/api.py
+++ b/staffeln/db/api.py
@@ -1,6 +1,4 @@
 """Base classes for storage engines"""
-
-import abc
 from oslo_config import cfg
 from oslo_db import api as db_api
 
@@ -11,6 +9,3 @@
 def get_instance():
     """Return a DB API instance."""
     return IMPL
-
-    # class BaseConnection(object, metaclass=abc.ABCMeta):
-    """Base class for storage system connections."""
diff --git a/staffeln/db/migration.py b/staffeln/db/migration.py
index 24e03ee..c75952d 100644
--- a/staffeln/db/migration.py
+++ b/staffeln/db/migration.py
@@ -1,8 +1,6 @@
 """Database setup command"""
-
-
-from stevedore import driver
 import staffeln.conf
+from stevedore import driver
 
 CONF = staffeln.conf.CONF
 
diff --git a/staffeln/db/sqlalchemy/api.py b/staffeln/db/sqlalchemy/api.py
index c777c19..6956403 100644
--- a/staffeln/db/sqlalchemy/api.py
+++ b/staffeln/db/sqlalchemy/api.py
@@ -4,19 +4,15 @@
 import operator
 
 from oslo_config import cfg
-from oslo_log import log
 from oslo_db import exception as db_exc
 from oslo_db.sqlalchemy import session as db_session
 from oslo_db.sqlalchemy import utils as db_utils
-from oslo_utils import timeutils
-from oslo_utils import strutils
-from oslo_utils import uuidutils
+from oslo_log import log
+from oslo_utils import strutils, timeutils, uuidutils
 from sqlalchemy.inspection import inspect
 from sqlalchemy.orm import exc
-
-from staffeln.db.sqlalchemy import models
 from staffeln.common import short_id
-
+from staffeln.db.sqlalchemy import models
 
 LOG = log.getLogger(__name__)
 
@@ -230,7 +226,7 @@
             except exc.NoResultFound:
                 LOG.error("Resource Not found.")
 
-            deleted_row = session.delete(row)
+            session.delete(row)
             return row
 
     def _get_model_list(
@@ -270,7 +266,7 @@
 
         try:
             return self._update(models.Backup_data, backup_id, values)
-        except:
+        except: # noqa: E722
             LOG.error("backup resource not found.")
 
     def create_queue(self, values):
@@ -292,7 +288,7 @@
 
         try:
             return self._update(models.Queue_data, id, values)
-        except:
+        except: # noqa: E722
             LOG.error("Queue resource not found.")
 
     def get_queue_by_id(self, context, id):
@@ -307,13 +303,13 @@
             return self._get(
                 context, model=models.Queue_data, fieldname=fieldname, value=value
             )
-        except:
+        except: # noqa: E722
             LOG.error("Queue not found")
 
     def soft_delete_queue(self, id):
         try:
             return self._soft_delete(models.Queue_data, id)
-        except:
+        except: # noqa: E722
             LOG.error("Queue Not found.")
 
     def get_backup_by_backup_id(self, context, backup_id):
@@ -321,7 +317,7 @@
 
         try:
             return self._get_backup(context, fieldname="backup_id", value=backup_id)
-        except:
+        except: # noqa: E722
             LOG.error("Backup not found with backup_id %s." % backup_id)
 
     def _get_backup(self, context, fieldname, value):
@@ -331,11 +327,11 @@
             return self._get(
                 context, model=models.Backup_data, fieldname=fieldname, value=value
             )
-        except:
+        except: # noqa: E722
             LOG.error("Backup resource not found.")
 
     def soft_delete_backup(self, id):
         try:
             return self._soft_delete(models.Backup_data, id)
-        except:
+        except: # noqa: E722
             LOG.error("Backup Not found.")
diff --git a/staffeln/db/sqlalchemy/migration.py b/staffeln/db/sqlalchemy/migration.py
index e836b25..4c46672 100644
--- a/staffeln/db/sqlalchemy/migration.py
+++ b/staffeln/db/sqlalchemy/migration.py
@@ -1,5 +1,3 @@
-import os
-
 from staffeln.db.sqlalchemy import api as sqla_api
 from staffeln.db.sqlalchemy import models
 
diff --git a/staffeln/db/sqlalchemy/models.py b/staffeln/db/sqlalchemy/models.py
index 93dae9f..a93bd6e 100644
--- a/staffeln/db/sqlalchemy/models.py
+++ b/staffeln/db/sqlalchemy/models.py
@@ -1,24 +1,11 @@
 """
 SQLAlchemy models for staffeln service
 """
+import urllib.parse as urlparse
 
 from oslo_db.sqlalchemy import models
-from oslo_serialization import jsonutils
-from sqlalchemy import Boolean
-from sqlalchemy import Column
-from sqlalchemy import DateTime
+from sqlalchemy import Column, Integer, String, UniqueConstraint
 from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy import Float
-from sqlalchemy import ForeignKey
-from sqlalchemy import Integer
-from sqlalchemy import LargeBinary
-from sqlalchemy import orm
-from sqlalchemy import Numeric
-from sqlalchemy import String
-from sqlalchemy import Text
-from sqlalchemy.types import TypeDecorator, TEXT
-from sqlalchemy import UniqueConstraint
-import urllib.parse as urlparse
 from staffeln import conf
 
 CONF = conf.CONF
diff --git a/staffeln/objects/__init__.py b/staffeln/objects/__init__.py
index 4a5adfd..b9022af 100755
--- a/staffeln/objects/__init__.py
+++ b/staffeln/objects/__init__.py
@@ -1,6 +1,3 @@
-from .queue import Queue
-from .volume import Volume
-
 # from volume import Volume
 def register_all():
     __import__("staffeln.objects.volume")
diff --git a/staffeln/objects/base.py b/staffeln/objects/base.py
index dd0730d..8dd6f94 100755
--- a/staffeln/objects/base.py
+++ b/staffeln/objects/base.py
@@ -3,10 +3,8 @@
 from oslo_utils import versionutils
 from oslo_versionedobjects import base as ovoo_base
 from oslo_versionedobjects import fields as ovoo_fields
-
 from staffeln import objects
 
-
 remotable_classmethod = ovoo_base.remotable_classmethod
 remotable = ovoo_base.remotable
 
diff --git a/staffeln/objects/fields.py b/staffeln/objects/fields.py
index bbf13e2..3f6c2a7 100644
--- a/staffeln/objects/fields.py
+++ b/staffeln/objects/fields.py
@@ -1,11 +1,7 @@
 """Utility method for objects"""
-
-import ast
-
 from oslo_serialization import jsonutils
 from oslo_versionedobjects import fields
 
-
 BooleanField = fields.BooleanField
 StringField = fields.StringField
 DateTimeField = fields.DateTimeField
diff --git a/staffeln/objects/queue.py b/staffeln/objects/queue.py
index 0137d4e..b6ef500 100644
--- a/staffeln/objects/queue.py
+++ b/staffeln/objects/queue.py
@@ -1,4 +1,3 @@
-from staffeln.common import short_id
 from staffeln.db import api as db_api
 from staffeln.objects import base
 from staffeln.objects import fields as sfeild
@@ -22,12 +21,12 @@
     }
 
     @base.remotable_classmethod
-    def list(cls, context, filters=None):
-        db_queue = cls.dbapi.get_queue_list(context, filters=filters)
-        return [cls._from_db_object(cls(context), obj) for obj in db_queue]
+    def list(self, context, filters=None):
+        db_queue = self.dbapi.get_queue_list(context, filters=filters)
+        return [self._from_db_object(self(context), obj) for obj in db_queue]
 
     @base.remotable_classmethod
-    def get_by_id(cls, context, id):
+    def get_by_id(self, context, id):
         """Find a backup based on backup_id
         :param context: Security context. NOTE: This should only
                         be used internally by the indirection_api.
@@ -38,8 +37,8 @@
         :param backup_id: the backup id of volume in queue.
         :returns: a :class:`Queue` object.
         """
-        db_queue = cls.dbapi.get_queue_by_id(context, id)
-        queue = cls._from_db_object(cls(context), db_queue)
+        db_queue = self.dbapi.get_queue_by_id(context, id)
+        queue = self._from_db_object(self(context), db_queue)
         return queue
 
     @base.remotable
@@ -65,4 +64,4 @@
     @base.remotable
     def delete_queue(self):
         """Soft Delete the :class:`Queue_data` from the DB"""
-        db_obj = self.dbapi.soft_delete_queue(self.id)
+        self.dbapi.soft_delete_queue(self.id)
diff --git a/staffeln/objects/volume.py b/staffeln/objects/volume.py
index 1216c64..4b4f39f 100644
--- a/staffeln/objects/volume.py
+++ b/staffeln/objects/volume.py
@@ -63,7 +63,7 @@
     @base.remotable
     def delete_backup(self):
         """Soft Delete the :class:`Queue_data` from the DB"""
-        db_obj = self.dbapi.soft_delete_backup(self.id)
+        self.dbapi.soft_delete_backup(self.id)
 
     @base.remotable_classmethod
     def get_backup_by_backup_id(cls, context, backup_id):
diff --git a/staffeln/version.py b/staffeln/version.py
index 1ef8d77..efe79df 100755
--- a/staffeln/version.py
+++ b/staffeln/version.py
@@ -1,5 +1,4 @@
 import pbr.version
 
-
 version_info = pbr.version.VersionInfo("staffeln")
 version_string = version_info.version_string
