diff --git a/jeepyb/cmd/create_cgitrepos.py b/jeepyb/cmd/create_cgitrepos.py
index 0234c46..1572a44 100644
--- a/jeepyb/cmd/create_cgitrepos.py
+++ b/jeepyb/cmd/create_cgitrepos.py
@@ -27,8 +27,6 @@
 
 PROJECTS_YAML = os.environ.get('PROJECTS_YAML',
                                '/home/cgit/projects.yaml')
-PROJECTS_INI = os.environ.get('PROJECTS_INI',
-                              '/home/gerrit2/projects.ini')
 CGIT_REPOS = os.environ.get('CGIT_REPOS',
                             '/etc/cgitrepos')
 REPO_PATH = os.environ.get('REPO_PATH',
@@ -42,10 +40,7 @@
 
 def main():
     yaml_docs = [config for config in yaml.safe_load_all(open(PROJECTS_YAML))]
-    if os.path.exists(PROJECTS_INI):
-        config = yaml_docs[0]
-    else:
-        config = yaml_docs[1]
+    config = yaml_docs[-1]
     gitorgs = {}
     names = set()
     for entry in config:
diff --git a/jeepyb/cmd/notify_impact.py b/jeepyb/cmd/notify_impact.py
index b6e123c..c3c3303 100644
--- a/jeepyb/cmd/notify_impact.py
+++ b/jeepyb/cmd/notify_impact.py
@@ -214,6 +214,7 @@
     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)
@@ -221,6 +222,7 @@
     # patchset-created
     parser.add_argument('--uploader', default=None)
     parser.add_argument('--patchset', default=None)
+    parser.add_argument('--is-draft', default=None)
 
     # Not passed by gerrit:
     parser.add_argument('--impact', default=None)
diff --git a/jeepyb/cmd/openstackwatch.py b/jeepyb/cmd/openstackwatch.py
index 2381b4b..1798d48 100644
--- a/jeepyb/cmd/openstackwatch.py
+++ b/jeepyb/cmd/openstackwatch.py
@@ -139,7 +139,7 @@
     rss = PyRSS2Gen.RSS2(
         title=title,
         link="http://github.com/chmouel/openstackwatch.rss",
-        description="The latest reviews about Openstack, straight "
+        description="The latest reviews about OpenStack, straight "
                     "from Gerrit.",
         lastBuildDate=datetime.datetime.now()
     )
diff --git a/jeepyb/cmd/update_blueprint.py b/jeepyb/cmd/update_blueprint.py
index 3e3604b..58cc390 100644
--- a/jeepyb/cmd/update_blueprint.py
+++ b/jeepyb/cmd/update_blueprint.py
@@ -130,11 +130,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/cmd/welcome_message.py b/jeepyb/cmd/welcome_message.py
index 03278cc..e031ff7 100644
--- a/jeepyb/cmd/welcome_message.py
+++ b/jeepyb/cmd/welcome_message.py
@@ -35,7 +35,6 @@
 BASE_DIR = '/home/gerrit2/review_site'
 
 logger = logging.getLogger('welcome_reviews')
-logger.setLevel(logging.INFO)
 
 
 def is_newbie(uploader):
@@ -124,21 +123,30 @@
     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)
     # for Welcome Message
     parser.add_argument('user', help='The gerrit admin user')
     parser.add_argument('ssh_key', help='The gerrit admin SSH key file')
     # Don't actually post the message
     parser.add_argument('--dryrun', dest='dryrun', action='store_true')
     parser.add_argument('--no-dryrun', dest='dryrun', action='store_false')
+    parser.add_argument('-v', dest='verbose', action='store_true',
+                        help='verbose output')
     parser.set_defaults(dryrun=False)
 
     args = parser.parse_args()
 
+    if args.verbose:
+        logging.basicConfig(level=logging.DEBUG)
+    else:
+        logging.basicConfig(level=logging.ERROR)
+
     # they're a first-timer, post the message on 1st patchset
     if is_newbie(args.uploader) and args.patchset == 1 and not args.dryrun:
         post_message(args.change, args.user, args.ssh_key)
diff --git a/jeepyb/projects.py b/jeepyb/projects.py
index da898b9..4cf9ffe 100644
--- a/jeepyb/projects.py
+++ b/jeepyb/projects.py
@@ -65,7 +65,8 @@
 
 
 def docimpact_target(project_full_name):
-    return registry.get('docimpact-group', 'unknown')
+    return registry.get_project_item(project_full_name, 'docimpact-group',
+                                     'unknown')
 
 
 # The following functions should be deleted when projects.yaml will be updated
diff --git a/jeepyb/utils.py b/jeepyb/utils.py
index d010e3b..f92852e 100644
--- a/jeepyb/utils.py
+++ b/jeepyb/utils.py
@@ -51,5 +51,8 @@
     def __getitem__(self, item):
         return self.configs[item]
 
-    def get(self, item, default=None):
-        return self.configs.get(item, default)
+    def get_project_item(self, project, item, default=None):
+        if project in self.configs:
+            return self.configs[project].get(item, default)
+        else:
+            return default
