diff --git a/etc/staffeln/staffeln.conf b/etc/staffeln/staffeln.conf
index cbf82d5..5a735b2 100644
--- a/etc/staffeln/staffeln.conf
+++ b/etc/staffeln/staffeln.conf
@@ -1,6 +1,6 @@
 [conductor]
-# backup_peroid = 1
-# workers = 1
+backup_peroid = 20
+workers = 1
 
 [database]
 backend = sqlalchemy
diff --git a/staffeln/common/constants.py b/staffeln/common/constants.py
new file mode 100644
index 0000000..5818dcd
--- /dev/null
+++ b/staffeln/common/constants.py
@@ -0,0 +1,3 @@
+BACKUP_COMPLETED=2
+BACKUP_WIP=1
+BACKUP_PLANNED=0
diff --git a/staffeln/conductor/manager.py b/staffeln/conductor/manager.py
index 169230c..6f24cce 100755
--- a/staffeln/conductor/manager.py
+++ b/staffeln/conductor/manager.py
@@ -6,7 +6,7 @@
 import threading
 import time
 
-from staffeln.common import auth
+from staffeln.common import constants
 from staffeln.conductor import backup
 from staffeln.common import context
 
@@ -49,11 +49,14 @@
         LOG.info("%s periodics" % self.name)
         queue = backup.Queue().get_queues()
         queues_to_start = backup.Queue().get_queues(
-            filters={'backup_status': 0})
+            filters={'backup_status': constants.BACKUP_PLANNED})
+        print(queues_to_start)
         queues_started = backup.Queue().get_queues(
-            filters={'backup_status': 1})
+            filters={'backup_status': constants.BACKUP_WIP})
+        print(queues_started)
         queue_completed = backup.Queue().get_queues(
-            filters={'backup_status': 2})
+            filters={'backup_status': constants.BACKUP_COMPLETED})
+        print(queue_completed)
         if len(queue) == 0:
             create_queue = backup.Queue().create_queue()
         elif len(queues_started) != 0:
diff --git a/staffeln/conf/__init__.py b/staffeln/conf/__init__.py
index 8f82b29..53cd2be 100755
--- a/staffeln/conf/__init__.py
+++ b/staffeln/conf/__init__.py
@@ -3,11 +3,11 @@
 from staffeln.conf import api
 from staffeln.conf import conductor
 from staffeln.conf import database
-from staffeln.conf import paths
+# from staffeln.conf import paths
 
 CONF = cfg.CONF
 
 api.register_opts(CONF)
 conductor.register_opts(CONF)
 database.register_opts(CONF)
-paths.register_opts(CONF)
+# paths.register_opts(CONF)
diff --git a/staffeln/conf/database.py b/staffeln/conf/database.py
index 5f636f2..eddc9d1 100644
--- a/staffeln/conf/database.py
+++ b/staffeln/conf/database.py
@@ -1,7 +1,7 @@
 from oslo_config import cfg
 from oslo_db import options as oslo_db_options
 
-_DEFAULT_SQL_CONNECTION = "mysql+pymysql://root:password@localhost:3306/staffeln"
+_DEFAULT_SQL_CONNECTION = "mysql+pymysql://admin:123123@192.168.2.115:3306/staffeln"
 
 database = cfg.OptGroup(
     "database",
diff --git a/staffeln/db/api.py b/staffeln/db/api.py
index a623f7a..db0255f 100644
--- a/staffeln/db/api.py
+++ b/staffeln/db/api.py
@@ -13,90 +13,5 @@
     return IMPL
 
 
-class BaseConnection(object, metaclass=abc.ABCMeta):
+# class BaseConnection(object, metaclass=abc.ABCMeta):
     """Base class for storage system connections."""
-
-    @abc.abstractmethod
-    def get_backup_list(self, filters=None):
-        """Get specific columns for matching backup.
-
-        Return a list of the specidied columns for all the backups
-        that match the specified filters.
-
-        :param filters: Filters to apply. Defaults to None.
-        :return: A list of tuples of the specified columns.
-        """
-
-    @abc.abstractmethod
-    def create_backup(self, values):
-        """Create new backup.
-
-        :param values: A dict containing several items used to add
-                       the backup. For example:
-
-                       ::
-
-                        {
-                            'uuid': short_id.generate_uuid(),
-                            'volume_name': 'Dummy',
-                        }
-        :returns: A backup
-        """
-
-    @abc.abstractmethod
-    def update_backup(self, backup_uuid, values):
-        """Update properties of the backup.
-        : param backup_uuid: uuid of the backup
-        :param values: A dict containing several items used to add
-                       the backup. For example:
-
-                       ::
-
-                        {
-                            'backup_id': short_id.generate_uuid(),
-                            'backup_status': 'completed',
-                        }
-        :returns: A backup
-        """
-
-    @abc.abstractmethod
-    def create_queue(self, values):
-        """Create entry in queue_data.
-        :param values: A dict containing several items used to add
-                        the volume information for backup
-
-                        ::
-                        {
-                            'backup_id': "backup_id"
-                            'volume_id': "volume_id"
-                            'backup_status': 0
-                        }
-        :returns A queue
-        """
-
-    @abc.abstractmethod
-    def update_queue(self, backup_id, values):
-        """Update properties of the backup.
-        : param backup_id: uuid of the backup
-        :param values: A dict containing several items used to add
-                       the backup. For example:
-
-                       ::
-
-                        {
-                            'backup_id': short_id.generate_uuid(),
-                            'backup_status': 1
-                        }
-        :returns: A backup
-        """
-
-    @abc.abstractmethod
-    def get_queue_list(self, filters=None):
-        """Get specific columns for matching backup.
-
-        Return a list of the specidied columns for all the queues
-        that match the specified filters.
-
-        :param filters: Filters to apply. Defaults to None.
-        :return: A list of tuples of the specified columns.
-        """
diff --git a/staffeln/db/migration.py b/staffeln/db/migration.py
index bbe05f4..176d66a 100644
--- a/staffeln/db/migration.py
+++ b/staffeln/db/migration.py
@@ -1,7 +1,6 @@
-"""Database setup and migration commands."""
+"""Database setup command"""
 
 
-from oslo_config import cfg
 from stevedore import driver
 import staffeln.conf
 
@@ -13,9 +12,8 @@
 def get_backend():
     global _IMPL
     if not _IMPL:
-        # cfg.CONF.import_opt('backend', 'oslo_db.options', group='database')
-        _IMPL = driver.DriverManager(
-            "staffeln.database.migration_backend", CONF.database.backend).driver
+        _IMPL = driver.DriverManager("staffeln.database.migration_backend",
+                                     CONF.database.backend).driver
     return _IMPL
 
 
diff --git a/staffeln/db/sqlalchemy/alembic.ini b/staffeln/db/sqlalchemy/alembic.ini
deleted file mode 100644
index 5dcef31..0000000
--- a/staffeln/db/sqlalchemy/alembic.ini
+++ /dev/null
@@ -1,54 +0,0 @@
-# A generic, single database configuration.
-
-[alembic]
-# path to migration scripts
-script_location = %(here)s/alembic
-
-# template used to generate migration files
-# file_template = %%(rev)s_%%(slug)s
-
-# max length of characters to apply to the
-# "slug" field
-#truncate_slug_length = 40
-
-# set to 'true' to run the environment during
-# the 'revision' command, regardless of autogenerate
-# revision_environment = false
-
-#sqlalchemy.url = driver://user:pass@localhost/dbname
-
-
-# Logging configuration
-[loggers]
-keys = root,sqlalchemy,alembic
-
-[handlers]
-keys = console
-
-[formatters]
-keys = generic
-
-[logger_root]
-level = WARN
-handlers = console
-qualname =
-
-[logger_sqlalchemy]
-level = WARN
-handlers =
-qualname = sqlalchemy.engine
-
-[logger_alembic]
-level = INFO
-handlers =
-qualname = alembic
-
-[handler_console]
-class = StreamHandler
-args = (sys.stderr,)
-level = NOTSET
-formatter = generic
-
-[formatter_generic]
-format = %(levelname)-5.5s [%(name)s] %(message)s
-datefmt = %H:%M:%S
\ No newline at end of file
diff --git a/staffeln/db/sqlalchemy/api.py b/staffeln/db/sqlalchemy/api.py
index f6c3ea4..7d3cd0b 100644
--- a/staffeln/db/sqlalchemy/api.py
+++ b/staffeln/db/sqlalchemy/api.py
@@ -1,6 +1,5 @@
 """SQLAlchemy storage backend."""
 
-import collections
 import datetime
 import operator
 
@@ -15,13 +14,9 @@
 from sqlalchemy.inspection import inspect
 from sqlalchemy.orm import exc
 
-
-from staffeln.i18n import _
-from staffeln.common import config
-from staffeln.db import api
 from staffeln.db.sqlalchemy import models
 from staffeln.common import short_id
-from staffeln import objects
+
 
 LOG = log.getLogger(__name__)
 
@@ -91,7 +86,7 @@
     return query.all()
 
 
-class Connection(api.BaseConnection):
+class Connection(object):
     """SQLAlchemy connection."""
 
     valid_operators = {
@@ -186,8 +181,8 @@
         query = model_query(model)
 
         query = query.filter(getattr(model, fieldname) == value)
-        if not context.show_deleted:
-            query = query.filter(model.deleted_at.is_(None))
+        # if not context.show_deleted:
+        #     query = query.filter(model.deleted_at.is_(None))
 
         try:
             obj = query.one()
diff --git a/staffeln/db/sqlalchemy/migration.py b/staffeln/db/sqlalchemy/migration.py
index 546cf37..e836b25 100644
--- a/staffeln/db/sqlalchemy/migration.py
+++ b/staffeln/db/sqlalchemy/migration.py
@@ -1,21 +1,9 @@
 import os
 
-import alembic
-from alembic import config as alembic_config
-import alembic.migration as alembic_migration
-from oslo_db import exception as db_exec
-
-from staffeln.i18n import _
 from staffeln.db.sqlalchemy import api as sqla_api
 from staffeln.db.sqlalchemy import models
 
 
-def _alembic_config():
-    path = os.path.join(os.path.dirname(__file__), "alembic.ini")
-    config = alembic_config.Config(path)
-    return config
-
-
 def create_schema(config=None, engine=None):
     """Create database schema from models description/
 
diff --git a/staffeln/objects/__init__.py b/staffeln/objects/__init__.py
index b9ba344..8003db1 100755
--- a/staffeln/objects/__init__.py
+++ b/staffeln/objects/__init__.py
@@ -1,3 +1,5 @@
+from .queue import Queue
+# from volume import Volume
 def register_all():
     __import__('staffeln.objects.volume')
     __import__('staffeln.objects.queue')
diff --git a/staffeln/objects/base.py b/staffeln/objects/base.py
index d300500..ea04b59 100755
--- a/staffeln/objects/base.py
+++ b/staffeln/objects/base.py
@@ -41,16 +41,16 @@
 
 
 class StaffelnPersistentObject(object):
-    feilds = {
+    fields = {
         "created_at": ovoo_fields.DateTimeField(nullable=True),
+        # "deleted_at": ovoo_fields.DateTimeField(nullable=True),
         "updated_at": ovoo_fields.DateTimeField(nullable=True),
-        "deleted_at": ovoo_fields.DateTimeField(nullable=True),
     }
 
     object_fields = {}
 
     def obj_refresh(self, loaded_object):
-        fields = (field for field in self.feilds if field not in self.object_fields)
+        fields = (field for field in self.fields if field not in self.object_fields)
         for field in fields:
             if self.obj_attr_is_set(field) and self[field] != loaded_object[field]:
                 self[field] = loaded_object[field]
diff --git a/staffeln/objects/volume.py b/staffeln/objects/volume.py
index 640e144..c2652d7 100644
--- a/staffeln/objects/volume.py
+++ b/staffeln/objects/volume.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
diff --git a/tox.ini b/tox.ini
index 9676ac4..4812539 100755
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py3,pep8
+envlist = py37,pep8
 skipsdist = True
 sitepackages = False
 skip_missing_interpreters = True
