diff --git a/_modules/gerrit.py b/_modules/gerrit.py
index 6132ead..8a23a01 100644
--- a/_modules/gerrit.py
+++ b/_modules/gerrit.py
@@ -212,14 +212,12 @@
     }
     kwargs.update(gerrit.kwargs.copy())
 
-    response = requests.post(gerrit.make_url(path), **kwargs)
+    requests.post(gerrit.make_url(path), **kwargs)
 
 
 def _create_group_membership(gerrit, account_id, group_id):
     logging.info('Creating membership of %s in group %s', account_id, group_id)
 #    group_id = _group_name2id(gerrit, group_id)
-    print group_id
-    import json
     path = 'groups/%s/members/%s' % (_quote(group_id), account_id)
     gerrit.put(path, data=json.dumps({}))
 
@@ -384,7 +382,7 @@
 
     if params.get('ssh_key') is not None:
         ssh_key, ssh_keys_changed = _ensure_only_one_account_ssh_key(
-            gerrit, account_id,  params['ssh_key'])
+            gerrit, account_id, params['ssh_key'])
         output['ssh_key'] = ssh_key
         change |= ssh_keys_changed
 
@@ -459,7 +457,7 @@
     password = get('password', 'admin')
     auth_method = get('auth_method', 'digest')
 
-    url = protocol+"://"+str(host)+':'+str(http_port)
+    url = protocol + "://" + str(host) + ':' + str(http_port)
 
     if auth_method == 'digest':
         auth = requests.auth.HTTPDigestAuth(username, password)
@@ -548,6 +546,7 @@
         })
     return output
 
+
 def account_list(**kwargs):
     '''
     List gerrit accounts
@@ -653,16 +652,15 @@
         salt '*' gerrit.project_create namespace/nova description='nova project'
 
     '''
-    ret = {}
     gerrit_client = _gerrit_ssh_connection(**kwargs)
 
     project = project_get(name, **kwargs)
 
-    if project and not "Error" in project:
+    if project and "Error" not in project:
         LOG.debug("Project {0} exists".format(name))
         return project
 
-    new = gerrit_client.createProject(name)
+    gerrit_client.createProject(name)
     return project_get(name, **kwargs)
 
 
@@ -679,7 +677,7 @@
     gerrit_client = _gerrit_ssh_connection(**kwargs)
     ret = {}
     projects = gerrit_client.listProjects()
-    if not name in projects:
+    if name not in projects:
         return {'Error': 'Error in retrieving project'}
     ret[name] = {'name': name}
     return ret
diff --git a/gerrit/client/project.sls b/gerrit/client/project.sls
index 92706ec..3f9acf7 100644
--- a/gerrit/client/project.sls
+++ b/gerrit/client/project.sls
@@ -1,13 +1,13 @@
 {% from "gerrit/map.jinja" import client with context %}
 {%- if client.enabled %}
 
-/srv/jeepyb/projects.ini:
+{{ client.dir.project_config }}/projects.ini:
   file.managed:
   - source: salt://gerrit/files/projects.ini
   - template: jinja
   - require_in:
     - cmd: gerrit_client_enforce_projects
-
+{%- if client.dir.project_config == "/srv/jeepyb" %}
 /srv/jeepyb/projects.yaml:
   file.managed:
   - source: salt://gerrit/files/projects.yaml
@@ -23,7 +23,7 @@
   - template: jinja
   - makedirs: true
   - defaults:
-      project_name: {{ project_name }}
+      project_name: {{ project.get('name', project_name) }}
   - require_in:
     - cmd: gerrit_client_enforce_projects
 
@@ -34,13 +34,13 @@
 #}
 
 {%- endfor %}
-
+{%- endif %}
 gerrit_client_enforce_projects:
   cmd.run:
-  - name: manage-projects -v
+  - name: manage-projects -d -v 2>&1 | tee {{ client.dir.project_config }}/jeepyb.log
   - env:
-    - PROJECTS_INI: "/srv/jeepyb/projects.ini"
-    - PROJECTS_YAML: "/srv/jeepyb/projects.yaml"
+    - PROJECTS_INI: "{{ client.dir.project_config }}/projects.ini"
+    - PROJECTS_YAML: "{{ client.dir.project_config }}/projects.yaml"
     - GERRIT_CONFIG: "{{ client.dir.gerrit_config }}"
     - GERRIT_SECURE_CONFIG: "{{ client.dir.gerrit_secure_config }}"
 
diff --git a/gerrit/files/projects.ini b/gerrit/files/projects.ini
index ec1677e..2d1e55a 100644
--- a/gerrit/files/projects.ini
+++ b/gerrit/files/projects.ini
@@ -6,7 +6,7 @@
 jeepyb-cache-dir={{ client.dir.cache }}
 gerrit-host={{ client.server.host }}
 gerrit-user={{ client.server.user }}
-gerrit-committer={{ client.server.email }}
+gerrit-committer={{ client.server.user }} <{{ client.server.email }}>
 gerrit-key={{ client.config.key }}
 gerrit-replicate={{ client.get('replicate', False) }}
 {%- if client.github is defined %}
diff --git a/gerrit/map.jinja b/gerrit/map.jinja
index 310f9ee..61a44fb 100644
--- a/gerrit/map.jinja
+++ b/gerrit/map.jinja
@@ -14,6 +14,7 @@
 {%- set server = salt['grains.filter_by'](server_defaults, merge=salt['pillar.get']('gerrit:server')) %}
 
 {%- load_yaml as client_defaults %}
+{% set project_config = pillar.gerrit.get('client', {}).get('dir', {}).get('project_config', '/srv/jeepyb') %}
 Debian:
   homepage: "http://domain.com/"
   source:
@@ -24,10 +25,11 @@
     - jeepyb
     - curl
   dir:
+    project_config: {{ project_config }}
     base: /usr/share/jeepyb
-    acls: /srv/jeepyb/acls
+    acls: {{ project_config }}/acls
     git: /srv/jeepyb/git
-    cache: /srv/jeepyb/cache
+    cache: {{ project_config }}/cache
     gerrit_config: /home/gerrit2/review_site/etc/gerrit.config
     gerrit_secure_config: /home/gerrit2/review_site/etc/secure.config
   config:
