diff --git a/staffeln/objects/__init__.py b/staffeln/objects/__init__.py
index 4a5adfd..b79e47b 100755
--- a/staffeln/objects/__init__.py
+++ b/staffeln/objects/__init__.py
@@ -1,5 +1,6 @@
-from .queue import Queue
-from .volume import Volume
+from .queue import Queue  # noqa: F401
+from .volume import Volume  # noqa: F401
+
 
 # from volume import Volume
 def register_all():
diff --git a/staffeln/objects/queue.py b/staffeln/objects/queue.py
index b6ef500..1d5a022 100644
--- a/staffeln/objects/queue.py
+++ b/staffeln/objects/queue.py
@@ -21,12 +21,12 @@
     }
 
     @base.remotable_classmethod
-    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]
+    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]
 
     @base.remotable_classmethod
-    def get_by_id(self, context, id):
+    def get_by_id(cls, context, id):
         """Find a backup based on backup_id
         :param context: Security context. NOTE: This should only
                         be used internally by the indirection_api.
@@ -37,8 +37,8 @@
         :param backup_id: the backup id of volume in queue.
         :returns: a :class:`Queue` object.
         """
-        db_queue = self.dbapi.get_queue_by_id(context, id)
-        queue = self._from_db_object(self(context), db_queue)
+        db_queue = cls.dbapi.get_queue_by_id(context, id)
+        queue = cls._from_db_object(cls(context), db_queue)
         return queue
 
     @base.remotable
diff --git a/staffeln/objects/volume.py b/staffeln/objects/volume.py
index 741d5fe..4b4f39f 100644
--- a/staffeln/objects/volume.py
+++ b/staffeln/objects/volume.py
@@ -21,14 +21,14 @@
     }
 
     @base.remotable_classmethod
-    def list(self, context, filters=None):
+    def list(cls, context, filters=None):
         """Return a list of :class:`Backup` objects.
 
         :param filters: dict mapping the filter to a value.
         """
-        db_backups = self.dbapi.get_backup_list(context, filters=filters)
+        db_backups = cls.dbapi.get_backup_list(context, filters=filters)
 
-        return [self._from_db_object(self(context), obj) for obj in db_backups]
+        return [cls._from_db_object(cls(context), obj) for obj in db_backups]
 
     @base.remotable
     def create(self):
@@ -66,7 +66,7 @@
         self.dbapi.soft_delete_backup(self.id)
 
     @base.remotable_classmethod
-    def get_backup_by_backup_id(self, context, backup_id):
+    def get_backup_by_backup_id(cls, context, backup_id):
         """Find a backup based on backup_id
         :param context: Security context. NOTE: This should only
                         be used internally by the indirection_api.
@@ -77,9 +77,9 @@
         :param backup_id: the backup id of volume in volume data.
         :returns: a :class:`Backup` object.
         """
-        db_backup = self.dbapi.get_backup_by_backup_id(context, backup_id)
+        db_backup = cls.dbapi.get_backup_by_backup_id(context, backup_id)
         if db_backup is None:
             return db_backup
         else:
-            backup = self._from_db_object(self(context), db_backup)
+            backup = cls._from_db_object(cls(context), db_backup)
             return backup
