diff --git a/requirements.txt b/requirements.txt
index 60f0516..4537d1c 100755
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,3 +10,4 @@
 oslo.db>=5.0.0
 oslo.config>=8.1.0
 oslo.service>=2.5.0 
+oslo.log>=4.4.0 # Apache-2.0
diff --git a/staffeln/api/app.py b/staffeln/api/app.py
index 0d723f0..90f35df 100755
--- a/staffeln/api/app.py
+++ b/staffeln/api/app.py
@@ -16,3 +16,6 @@
     input_json = request.get_json(force=True)
     dictToReturn = {'text': input_json['text']}
     return jsonify(dictToReturn)
+
+def run(host, port, ssl_context):
+    app.run(host=host, port=port, ssl_context=ssl_context)
diff --git a/staffeln/cmd/api.py b/staffeln/cmd/api.py
index cc7b760..f554354 100755
--- a/staffeln/cmd/api.py
+++ b/staffeln/cmd/api.py
@@ -3,7 +3,6 @@
 import sys
 
 from oslo_log import log as logging
-from oslo_reports import guru_meditation_report as gmr
 
 from staffeln.api import app as api_app
 from staffeln.common import service
@@ -36,7 +35,6 @@
 
 def main():
     service.prepare_service(sys.argv)
-    gmr.TextGuruMeditation.setup_autorun(version, conf=CONF)
 
     # SSL configuration
     use_ssl = CONF.api.enabled_ssl
diff --git a/staffeln/common/config.py b/staffeln/common/config.py
index c90aa63..dd28201 100755
--- a/staffeln/common/config.py
+++ b/staffeln/common/config.py
@@ -1,6 +1,3 @@
-from oslo_middleware import cors
-from oslo_policy import opts
-
 # from staffeln.common import rpc
 import staffeln.conf
 from staffeln import version
@@ -18,41 +15,4 @@
 
 
 def set_config_defaults():
-    """Update default value for configuration options from other namespace.
-
-    Example, oslo lib config options. This is needed for
-    config generator tool to pick these default value changes.
-    https://docs.openstack.org/oslo.config/latest/cli/
-    generator.html#modifying-defaults-from-other-namespaces
-    """
-
-    set_cors_middleware_defaults()
-
-    # TODO(gmann): Remove setting the default value of config policy_file
-    # once oslo_policy change the default value to 'policy.yaml'.
-    # https://github.com/openstack/oslo.policy/blob/a626ad12fe5a3abd49d70e3e5b95589d279ab578/oslo_policy/opts.py#L49
-    opts.set_defaults(CONF, 'policy.yaml')
-
-
-def set_cors_middleware_defaults():
-    """Update default configuration options for oslo.middleware."""
-    cors.set_defaults(
-        allow_headers=['X-Auth-Token',
-                       'X-Identity-Status',
-                       'X-Roles',
-                       'X-Service-Catalog',
-                       'X-User-Id',
-                       'X-Tenant-Id',
-                       'X-OpenStack-Request-ID',
-                       'X-Server-Management-Url'],
-        expose_headers=['X-Auth-Token',
-                        'X-Subject-Token',
-                        'X-Service-Token',
-                        'X-OpenStack-Request-ID',
-                        'X-Server-Management-Url'],
-        allow_methods=['GET',
-                       'PUT',
-                       'POST',
-                       'DELETE',
-                       'PATCH']
-    )
+    pass
diff --git a/staffeln/conductor/__init__.py b/staffeln/conductor/__init__.py
new file mode 100755
index 0000000..94ff7c7
--- /dev/null
+++ b/staffeln/conductor/__init__.py
@@ -0,0 +1,37 @@
+import cotyledon
+from futurist import periodics
+from oslo_log import log
+import staffeln.conf
+import sys
+import threading
+
+
+LOG = log.getLogger(__name__)
+CONF = staffeln.conf.CONF
+
+
+class BackupService(cotyledon.Service):
+    name = "conductor"
+
+    def __init__(self, worker_id, conf):
+        super(BackupService, self).__init__(worker_id)
+        self._shutdown = threading.Event()
+        self.conf = conf
+        LOG.error("%s init" % self.name)
+
+    def run(self):
+        LOG.error("%s run" % self.name)
+        self._shutdown.wait()
+        interval = CONF.conductor.backup_period
+        @periodics.periodic(spacing=interval, run_immediately=True)
+        def backup_engine():
+            print("echo")
+            pass
+
+    def terminate(self):
+        LOG.error("%s terminate" % self.name)
+        self._shutdown.set()
+        sys.exit(42)
+
+    def reload(self):
+        LOG.error("%s reload" % self.name)
diff --git a/staffeln/conductor/manage.py b/staffeln/conductor/manage.py
index 7f18678..0e7174d 100755
--- a/staffeln/conductor/manage.py
+++ b/staffeln/conductor/manage.py
@@ -25,6 +25,7 @@
         interval = CONF.conductor.backup_period
         @periodics.periodic(spacing=interval, run_immediately=True)
         def backup_engine():
+            print("echo")
             pass
 
     def terminate(self):
diff --git a/staffeln/conf/api.py b/staffeln/conf/api.py
index e146689..36baed2 100755
--- a/staffeln/conf/api.py
+++ b/staffeln/conf/api.py
@@ -7,17 +7,35 @@
     help='Options under this group are used to define staffeln API.'
 )
 
-
-test_opts = [
+connection_opts = [
     cfg.StrOpt(
-        'api_test_option',
-        default='test',
-        deprecated_group='DEFAULT',
-        help='test options'
+        'host',
+        default="0.0.0.0",
+        help='IP address on which the staffeln API will listen.'
+    ),
+    cfg.PortOpt(
+        'port',
+        default=8774,
+        help='Staffeln API listens on this port number for incoming requests.'
+    ),
+    cfg.BoolOpt(
+        'enabled_ssl',
+        default=False,
+        help='ssl enabled'
+    ),
+    cfg.StrOpt(
+        'ssl_key_file',
+        default=False,
+        help='ssl key file path'
+    ),
+    cfg.StrOpt(
+        'ssl_cert_file',
+        default=False,
+        help='ssl cert file path'
     ),
 ]
 
-API_OPTS = (test_opts)
+API_OPTS = (connection_opts)
 
 
 def register_opts(conf):
diff --git a/staffeln/conf/conductor.py b/staffeln/conf/conductor.py
index 47c86c0..ae89d38 100755
--- a/staffeln/conf/conductor.py
+++ b/staffeln/conf/conductor.py
@@ -10,6 +10,7 @@
 backup_opts = [
     cfg.IntOpt(
         'workers',
+        default=1,
         help='The maximum number of conductor processes to '
              'fork and run. Default to number of CPUs on the host.'),
     cfg.IntOpt(
@@ -32,9 +33,10 @@
 
 def register_opts(conf):
     conf.register_group(conductor_group)
-    conf.register_opts(CONDUCTOR_OPTS, group=conductor_group)
+    conf.register_opts(backup_opts, group=conductor_group)
+    conf.register_opts(rotation_opts)
 
 
 def list_opts():
-    return {"DEFAULT": backup_opts,
-            conductor_group: CONDUCTOR_OPTS}
+    return {"DEFAULT": rotation_opts,
+            conductor_group: backup_opts}
