diff --git a/software/gitlab/instance-gitlab.cfg.in b/software/gitlab/instance-gitlab.cfg.in
index e2613f165998334d3b967ec29531f0629728d9cd..0e258bac9ee25780d9d6053b47bf3f21dada90ba 100644
--- a/software/gitlab/instance-gitlab.cfg.in
+++ b/software/gitlab/instance-gitlab.cfg.in
@@ -1,6 +1,7 @@
 # GitLab instance
 # NOTE instance/software layout is inspired by gitlab omnibus
 # TODO last updated for gitlab-omnibus vXXXX
+# TODO all services are interconnected via unix sockets: write why / more
 [buildout]
 extends = {{ gitlab_parameters_cfg }}
 parts =
@@ -8,14 +9,19 @@ parts =
 #   promise     TODO
     publish-instance-info
 
-
-    gitlab-rails
-    gitlab-rake
-    gitlab-unicorn
-    gitlab-sidekiq
+#   gitlab-<prog>
+# ? unicorn_rails, mailroom, ri
+{% set gitlab_progv = 'rails rake unicorn sidekiq' .split() %}
+{% for prog in gitlab_progv %}
+    gitlab-{{ prog }}
+{% endfor %}
 
     gitlab-root-shadow
 
+#   service-gitlab-workhorse
+#   service-gitlab-unicorn
+#   service-gitlab-sidekiq
+
     service-nginx
     service-postgresql
     service-redis
@@ -91,7 +97,6 @@ promise = ${:etc}/promise
 
 # gitlab: etc/ log/ ...
 # TODO var/run/ (for *.pid .lock)
-# XXX do we need gitlab/ subdir for all that? (services are already separated into different slappartX)
 [gitlab]
 recipe  = slapos.cookbook:mkdirectory
 etc     = ${directory:etc}/gitlab
@@ -121,6 +126,11 @@ extensions = jinja2.ext.do
 mode    = 0640
 import-list =
     rawfile macrolib.cfg.in     {{ macrolib_cfg_in }}
+context =
+    raw     autogenerated       # This file was autogenerated. (DO NOT EDIT - changes will be lost)
+    ${:context-extra}
+
+
 # TODO move common context parameters here (= common)
 
 
@@ -131,14 +141,14 @@ rendered= ${gitlab:etc}/${:_buildout_section_name_}
 [database.yml]
 <= gitlab-etc-template
 template= {{ database_yml_in }}
-context =
+context-extra =
     section gitlab_backend      gitlab-backend
     section pgsql               service-postgresql
 
 [gitlab.yml]
 <= gitlab-etc-template
 template= {{ gitlab_yml_in }}
-context =
+context-extra =
     section gitlab              gitlab
     section gitlab_backend      gitlab-backend
     section instance_parameter  instance-parameter
@@ -146,19 +156,19 @@ context =
 [resque.yml]
 <= gitlab-etc-template
 template= {{ resque_yml_in }}
-context =
+context-extra =
     section redis   service-redis
 
 [smtp_settings.rb]
 <= gitlab-etc-template
 template= {{ smtp_settings_rb_in }}
-context =
+context-extra =
     section instance_parameter  instance-parameter
 
 [rack_attack.rb]
 <= gitlab-etc-template
 template = {{ rack_attack_rb_in }}
-context =
+context-extra =
     section instance_parameter  instance-parameter
 
 
@@ -169,7 +179,7 @@ rendered= ${nginx:etc}/${:_buildout_section_name_}
 [nginx.conf]
 <= nginx-etc-template
 template= {{ nginx_conf_in }}
-context =
+context-extra =
     section instance_parameter      instance-parameter
     section gitlab_backend          gitlab-backend
     section directory               directory
@@ -179,7 +189,7 @@ context =
 [nginx-gitlab-http.conf]
 <= nginx-etc-template
 template= {{ nginx_gitlab_http_conf_in }}
-context =
+context-extra =
     section instance_parameter      instance-parameter
     section gitlab_backend          gitlab-backend
     section nginx                   nginx
@@ -189,10 +199,7 @@ context =
 
 
 # 3. bin/
-#   gitlab-rails
-#   gitlab-rake
-#   gitlab-unicorn
-#   gitlab-sidekiq
+#   gitlab-<prog>
 [gitlab-bin]
 recipe  = slapos.cookbook:wrapper
 wrapper-path = ${directory:bin}/${:_buildout_section_name_}
@@ -204,38 +211,18 @@ environment  =
 # XXX here vvv ?
     SIDEKIQ_MEMORY_KILLER_MAX_RSS = 1000000
 
-[gitlab-rails]
-<= gitlab-bin
-# NOTE sys.argv[1:] implicityly appended
-command-line =
-    {{ bundler_4gitlab }} exec sh -c
-    'cd ${gitlab-root-shadow:location} && rails "$@"' rails
-
-[gitlab-rake]
-<= gitlab-bin
-# NOTE sys.argv[1:] implicityly appended
-command-line =
-    {{ bundler_4gitlab }} exec sh -c
-    'cd ${gitlab-root-shadow:location} && rake "$@"' rake
-
-[gitlab-unicorn]
-<= gitlab-bin
 # NOTE sys.argv[1:] implicityly appended
 command-line =
     {{ bundler_4gitlab }} exec sh -c
-    'cd ${gitlab-root-shadow:location} && unicorn "$@"' unicorn
+    'cd ${gitlab-root-shadow:location} && ${:prog} "$@"' ${:prog}
 
-[gitlab-sidekiq]
+{% for prog in gitlab_progv %}
+[gitlab-{{ prog }}]
 <= gitlab-bin
-# NOTE sys.argv[1:] implicityly appended
-command-line =
-    {{ bundler_4gitlab }} exec sh -c
-    'cd ${gitlab-root-shadow:location} && sidekiq "$@"' sidekiq
+prog    = {{ prog }}
+{% endfor %}
 
 
-# # TODO -> service/
-# [gitlab-unicorn]
-# <= gitlab-bin
 
 
 # Gitlab/Rails operation is tighted that config/ lives inside code, which goes
@@ -370,6 +357,12 @@ ipv6    = ::1
 port    = 0
 
 
+########################
+#   gitlab-workhorse   #
+########################
+# TODO
+
+
 ######################
 #   Nginx frontend   #
 ######################
diff --git a/software/gitlab/template/database.yml.in b/software/gitlab/template/database.yml.in
index 0a2f3294487b5dfeaeea260175d79ff7de718362..b98805052c3d8f5231be4aa447fed9f7b413c6c6 100644
--- a/software/gitlab/template/database.yml.in
+++ b/software/gitlab/template/database.yml.in
@@ -1,4 +1,4 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/database.yml.postgresql
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/database.yml.erb
diff --git a/software/gitlab/template/gitlab.yml.in b/software/gitlab/template/gitlab.yml.in
index cc644e637302951be244a14d04069bde67f8f25a..d45313c9624987a630ac576a8a75615e6d96f4f4 100644
--- a/software/gitlab/template/gitlab.yml.in
+++ b/software/gitlab/template/gitlab.yml.in
@@ -1,4 +1,4 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
diff --git a/software/gitlab/template/nginx-gitlab-http.conf.in b/software/gitlab/template/nginx-gitlab-http.conf.in
index c6a067a847ec64bc26f762069cb5539f9acdadc0..779c82fec3da1d9a470f29d7df9b6b1a336b401c 100644
--- a/software/gitlab/template/nginx-gitlab-http.conf.in
+++ b/software/gitlab/template/nginx-gitlab-http.conf.in
@@ -1,4 +1,4 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/nginx-gitlab-http.conf.erb
 # (last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9)
diff --git a/software/gitlab/template/nginx.conf.in b/software/gitlab/template/nginx.conf.in
index 53b4886b3d726cfbc8627afbf8118706ceaacadf..621ec093e957d7e748e050ab31ebd0cf2e18e5bd 100644
--- a/software/gitlab/template/nginx.conf.in
+++ b/software/gitlab/template/nginx.conf.in
@@ -1,4 +1,4 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab-ssl
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/nginx.conf.erb
diff --git a/software/gitlab/template/rack_attack.rb.in b/software/gitlab/template/rack_attack.rb.in
index 20f4557f01a8f9ce27738c659c271a374cfad611..96c454bc56e457a932730fbc2ade19eca871e837 100644
--- a/software/gitlab/template/rack_attack.rb.in
+++ b/software/gitlab/template/rack_attack.rb.in
@@ -1,4 +1,4 @@
-# @autogenerated
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/initializers/rack_attack.rb.example
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/rack_attack.rb.erb
diff --git a/software/gitlab/template/resque.yml.in b/software/gitlab/template/resque.yml.in
index 9812ed168b6eb795ff298d74cae27fdb86f90ece..49bd082a513cb72a1ea9dce276ccedb62a6c2147 100644
--- a/software/gitlab/template/resque.yml.in
+++ b/software/gitlab/template/resque.yml.in
@@ -1,6 +1,7 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/resque.yml.example
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb
+# (last udpdated for 8.1.0+rc1.ce.0-77-ge349060)
 
 production: unix://{{ redis.unixsocket }}
diff --git a/software/gitlab/template/smtp_settings.rb.in b/software/gitlab/template/smtp_settings.rb.in
index 9ab6b0bcfa0ce9cb983b3913115da5846d0ffec8..6f93f463344dd587e0e584cd1d83fd24443fd274 100644
--- a/software/gitlab/template/smtp_settings.rb.in
+++ b/software/gitlab/template/smtp_settings.rb.in
@@ -1,4 +1,4 @@
-# @autogenerated
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/initializers/smtp_settings.rb.sample
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/smtp_settings.rb.erb
diff --git a/software/gitlab/template/unicorn.rb.in b/software/gitlab/template/unicorn.rb.in
index f310f760e07503e30701577e92c91bc1b091c6fd..8e3cef43e760a6c66d16f42d251d2b4f472de56c 100644
--- a/software/gitlab/template/unicorn.rb.in
+++ b/software/gitlab/template/unicorn.rb.in
@@ -1,10 +1,12 @@
-# @autogenerated XXX
+{{ autogenerated }}
 # see:
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/unicorn.rb.example
 # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/unicorn.rb.example.development
 # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/unicorn.rb.erb
 # (last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9 XXX check)
 
+# XXX import cfg
+
 # What ports/sockets to listen on, and what options for them.
 listen "{XXX:unicorn-host:port}", :tcp_nopush => ${instance-parameters:configuration.unicorn_tcp_nopush}