diff --git a/jeepyb/cmd/notify_impact.py b/jeepyb/cmd/notify_impact.py
index 2214ffb..7038c8f 100644
--- a/jeepyb/cmd/notify_impact.py
+++ b/jeepyb/cmd/notify_impact.py
@@ -91,7 +91,7 @@
               'but I am in dry run mode' % subscriber)
 
 
-def create_bug(git_log, args, lp_project, subscribers):
+def create_bug(git_log, args, lp_project, config):
     """Create a bug for a change.
 
     Create a launchpad bug in lp_project, titled with the first line of
@@ -127,23 +127,22 @@
 
         # If the author of the merging patch matches our configured
         # subscriber lists, then subscribe the configured victims.
-        for email_address in subscribers.get('author_map', {}):
+        for email_address in config.get('author_map', {}):
             email_re = re.compile('^Author:.*%s.*' % email_address)
             for line in bug_descr.split('\n'):
                 m = email_re.match(line)
                 if m:
-                    author_class = subscribers['author_map'][email_address]
+                    author_class = config['author_map'][email_address]
 
         if author_class:
-            subscribers = \
-                subscribers.get('subscriber_map', {}).get(author_class, [])
-            for subscriber in subscribers:
+            config = config.get('subscriber_map', {}).get(author_class, [])
+            for subscriber in config:
                 actions.subscribe(buginfo, subscriber)
 
     return buglink
 
 
-def process_impact(git_log, args, subscribers):
+def process_impact(git_log, args, config):
     """Process DocImpact flag.
 
     If the 'DocImpact' flag is present for a change that is merged,
@@ -154,7 +153,7 @@
     """
     if args.impact.lower() == 'docimpact':
         if args.hook == "change-merged":
-            create_bug(git_log, args, 'openstack-manuals', subscribers)
+            create_bug(git_log, args, 'openstack-manuals', config)
         return
 
     email_content = EMAIL_TEMPLATE % (args.impact,
@@ -207,8 +206,8 @@
     parser.add_argument('--impact', default=None)
     parser.add_argument('--dest-address', default=None)
 
-    # Automatic subscribers
-    parser.add_argument('--auto-subscribers', type=argparse.FileType('r'),
+    # Automatic config
+    parser.add_argument('--config', type=argparse.FileType('r'),
                         default=None)
 
     # Don't actually create the bug
@@ -241,16 +240,16 @@
     # Where the entries in the author map are email addresses
     # to match in author lines, and the subscriber map is a
     # list of launchpad user ids.
-    subscribers = {}
-    if args.auto_subscribers:
-        subscribers = yaml.load(args.auto_subscribers.read())
+    config = {}
+    if args.config:
+        config = yaml.load(args.config.read())
 
     # Get git log
     git_log = extract_git_log(args)
 
     # Process impacts found in git log
     if impacted(git_log, args.impact):
-        process_impact(git_log, args, subscribers)
+        process_impact(git_log, args, config)
 
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/update_bug.py b/jeepyb/cmd/update_bug.py
index f714e18..be24c46 100644
--- a/jeepyb/cmd/update_bug.py
+++ b/jeepyb/cmd/update_bug.py
@@ -316,11 +316,13 @@
     parser.add_argument('--project', default=None)
     parser.add_argument('--branch', default=None)
     parser.add_argument('--commit', default=None)
+    parser.add_argument('--topic', default=None)
     # change-merged
     parser.add_argument('--submitter', default=None)
     # patchset-created
     parser.add_argument('--uploader', default=None)
     parser.add_argument('--patchset', default=None)
+    parser.add_argument('--is-draft', default=None)
 
     args = parser.parse_args()
 
diff --git a/jeepyb/projects.py b/jeepyb/projects.py
index 6d15549..090a891 100644
--- a/jeepyb/projects.py
+++ b/jeepyb/projects.py
@@ -35,8 +35,7 @@
     try:
         return registry[project_full_name]['launchpad']
     except KeyError:
-        return _hardcoded_git2lp(project_full_name)
-        # return u.short_project_name(project_full_name)
+        return u.short_project_name(project_full_name)
 
 
 def _is_no_launchpad(project_full_name, obj_type):
@@ -116,61 +115,3 @@
         'stackforge/cookbook-openstack-orchestration',
         'stackforge/openstack-chef-repo',
     ]
-
-
-def _hardcoded_git2lp(project_full_name):
-    """Convert Git repo name to Launchpad project.
-
-    This function should be removed when projects.yaml will be updated.
-    To specify launchpad project name you just need add parameter 'lp' to your
-    project declaration in projects.yaml
-
-    Example:
-        - project: some/project
-          launchpad: awesomeproject
-          description: Best project ever.
-    """
-
-    project_map = {
-        'openstack/api-site': 'openstack-api-site',
-        'openstack/compute-api': 'openstack-api-site',
-        'openstack/database-api': 'openstack-api-site',
-        'openstack/django_openstack_auth': 'django-openstack-auth',
-        'openstack/identity-api': 'openstack-api-site',
-        'openstack/image-api': 'openstack-api-site',
-        'openstack/netconn-api': 'openstack-api-site',
-        'openstack/object-api': 'openstack-api-site',
-        'openstack/oslo-incubator': 'oslo',
-        'openstack/python-quantumclient': 'python-neutronclient',
-        'openstack/quantum': 'neutron',
-        'openstack/savanna': 'savanna',
-        'openstack/savanna-dashboard': 'savanna',
-        'openstack/savanna-extra': 'savanna',
-        'openstack/savanna-image-elements': 'savanna',
-        'openstack/tripleo-heat-templates': 'tripleo',
-        'openstack/tripleo-image-elements': 'tripleo',
-        'openstack/tripleo-incubator': 'tripleo',
-        'openstack/volume-api': 'openstack-api-site',
-        'stackforge/cookbook-openstack-block-storage': 'openstack-chef',
-        'stackforge/cookbook-openstack-common': 'openstack-chef',
-        'stackforge/cookbook-openstack-compute': 'openstack-chef',
-        'stackforge/cookbook-openstack-dashboard': 'openstack-chef',
-        'stackforge/cookbook-openstack-identity': 'openstack-chef',
-        'stackforge/cookbook-openstack-image': 'openstack-chef',
-        'stackforge/cookbook-openstack-metering': 'openstack-chef',
-        'stackforge/cookbook-openstack-network': 'openstack-chef',
-        'stackforge/cookbook-openstack-object-storage': 'openstack-chef',
-        'stackforge/cookbook-openstack-ops-database': 'openstack-chef',
-        'stackforge/cookbook-openstack-ops-messaging': 'openstack-chef',
-        'stackforge/cookbook-openstack-orchestration': 'openstack-chef',
-        'stackforge/fuel-astute': 'fuel',
-        'stackforge/fuel-main': 'fuel',
-        'stackforge/fuel-ostf': 'fuel',
-        'stackforge/fuel-web': 'fuel',
-        'stackforge/openstack-chef-repo': 'openstack-chef',
-        'stackforge/puppet-openstack_dev_env': 'puppet-openstack',
-        'stackforge/puppet-quantum': 'puppet-neutron',
-        'stackforge/puppet-savanna': 'savanna',
-    }
-    return project_map.get(project_full_name,
-                           u.short_project_name(project_full_name))
