diff --git a/slapos/recipe/cloud9/__init__.py b/slapos/recipe/cloud9/__init__.py
index bff48351d7c8828b63679be7fc0d246e7584e762..f5dd16089ab081b8c81dd542464c7c0622f7956c 100644
--- a/slapos/recipe/cloud9/__init__.py
+++ b/slapos/recipe/cloud9/__init__.py
@@ -31,14 +31,15 @@ class Recipe(GenericBaseRecipe):
   """Deploy a fully operational cloud9 service."""
 
   def _options(self, options):
-    self.ip = options['ipv6'].strip()
+    self.ip = options['ip'].strip()
     self.port = options['port'].strip()
     self.git = options['git-binary'].strip()
     self.node_executable = options['node-binary'].strip()
     self.cloud9 = options['cloud9'].strip()
     self.workdir = options['working-directory'].strip()
+    self.wrapper = options['wrapper'].strip()
     # Set cloud9 access URL
-    options['access_url'] = 'http://[%s]:%s' % (self.ip, self.port)
+    options['access-url'] = 'http://[%s]:%s' % (self.ip, self.port)
 
   def install(self):
     path_list = []
@@ -50,8 +51,10 @@ class Recipe(GenericBaseRecipe):
     cloud9_args = [self.node_executable, self.cloud9, '-l', self.ip, '-p',
         self.port, '-w', self.workdir]
 
-    wrapper = self.createPythonScript(self.options['wrapper-name'],
-        'slapos.recipe.librecipe.execute.executee', cloud9_args, environment)
+    wrapper = self.createPythonScript(self.wrapper,
+        'slapos.recipe.librecipe.execute.executee',
+        (cloud9_args, environment)
+    )
     path_list.append(wrapper)
-    
+
     return path_list
diff --git a/slapos/recipe/slaprunner/__init__.py b/slapos/recipe/slaprunner/__init__.py
index d1b758809456f3076219afe5e7460636337930ba..4cdb935c8a43d9c30cede89fa81528733b2ee4f6 100644
--- a/slapos/recipe/slaprunner/__init__.py
+++ b/slapos/recipe/slaprunner/__init__.py
@@ -24,74 +24,70 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ##############################################################################
-from slapos.recipe.librecipe import BaseSlapRecipe
+from slapos.recipe.librecipe import GenericBaseRecipe
 import os
-import pkg_resources
-import sys
-import zc.buildout
-import zc.recipe.egg
 
+class Recipe(GenericBaseRecipe):
+
+  def _options(self, options):
+    self.ipv4 = options['ipv4'].strip()
+    self.ipv6 = options['ipv6'].strip()
+    self.proxy_port = options['proxy_port'].strip()
+    self.runner_port = options['runner_port'].strip()
+    self.workdir = options['working-directory'].strip()
+    self.software_directory = options['software-directory'].strip()
+    self.instance_directory = options['instance-directory'].strip()
+    self.partition_amount = options['partition-amount'].strip()
+    self.cloud9_url = options['cloud9-url'].strip()
+    # Set slaprunner access URL
+    options['access-url'] = 'http://[%s]:%s' % (self.ipv6, self.runner_port)
+
+  def install(self):
+    path_list = []
 
-class Recipe(BaseSlapRecipe):
-  def _install(self):
-    self.path_list = []
-    self.requirements, self.ws = self.egg.working_set()
-    ipv4 = self.getLocalIPv4Address()
-    ipv6 = self.getGlobalIPv6Address()
-    proxy_port = '50000'
-    runner_port = '50000'
-    cloud9_port = '30000'
-    workdir = self.createDataDirectory('runner')
-    software_root = os.path.join(workdir, 'software')
-    instance_root = os.path.join(workdir, 'instance')
     configuration = dict(
-        software_root=software_root,
-        instance_root=instance_root,
-        master_url='http://%s:%s/' % (ipv4, proxy_port),
+        software_root=self.software_directory,
+        instance_root=self.instance_directory,
+        master_url='http://%s:%s/' % (self.ipv4, self.proxy_port),
         computer_id='slaprunner',
-        partition_amount=7,
+        partition_amount=self.partition_amount,
         slapgrid_sr=self.options['slapgrid_sr'],
         slapgrid_cp=self.options['slapgrid_cp'],
         slapproxy=self.options['slapproxy'],
         supervisor=self.options['supervisor'],
-        supervisord_config=os.path.join(instance_root, 'etc',
+        supervisord_config=os.path.join(self.instance_directory, 'etc',
           'supervisord.conf'),
-        runner_workdir=workdir,
-        runner_host=ipv6,
-        runner_port=runner_port,
-        ipv4_address=ipv4,
-        ipv6_address=ipv6,
-        proxy_host=ipv4,
-        proxy_port=proxy_port,
-        proxy_database=os.path.join(workdir, 'proxy.db'),
-  git=self.options['git'],
-  cloud9_url='http://[%s]:%s' % (ipv6, cloud9_port),
-  ssh_client=self.options['ssh_client'],
-  public_key=self.options['public_key'],
-  private_key=self.options['private_key'],
-
+        runner_workdir=self.workdir,
+        runner_host=self.ipv6,
+        runner_port=self.runner_port,
+        ipv4_address=self.ipv4,
+        ipv6_address=self.ipv6,
+        proxy_host=self.ipv4,
+        proxy_port=self.proxy_port,
+        proxy_database=os.path.join(self.workdir, 'proxy.db'),
+        git=self.options['git-binary'],
+        ssh_client=self.options['ssh_client'],
+        public_key=self.options['public_key'],
+        private_key=self.options['private_key'],
+        cloud9_url=self.cloud9_url
     )
-    config_file = self.createConfigurationFile('slapos.cfg',
-        self.substituteTemplate(pkg_resources.resource_filename(__name__,
-          'template/slapos.cfg.in'), configuration))
-    self.path_list.append(config_file)
+    
+    config_file = self.createFile(self.options['slapos.cfg'],
+        self.substituteTemplate(self.getTemplateFilename('slapos.cfg.in'),
+        configuration))
+    path_list.append(config_file)
 
     environment = dict(
-        PATH=os.path.dirname(self.options['git']) + ':' + os.environ['PATH'],
+        PATH=os.path.dirname(self.options['git-binary']) + ':' + os.environ['PATH'],
         GIT_SSH=self.options['ssh_client']
     )
-    project_workdir = os.path.join(workdir, 'project')
-    if not os.path.exists(project_workdir):
-      os.mkdir(project_workdir)
+
     launch_args = [self.options['slaprunner'].strip(), config_file, '--debug']
-    cloud9_args = [self.options['node-bin'].strip(), self.options['cloud9'].strip(),
-                   '-l', ipv6, '-p', cloud9_port, '-w', workdir]
-    self.path_list.extend(zc.buildout.easy_install.scripts([('slaprunner',
-      'slapos.recipe.librecipe.execute', 'executee')], self.ws, sys.executable,
-      self.wrapper_directory, arguments=[launch_args, environment]))
-    self.path_list.extend(zc.buildout.easy_install.scripts([('cloud9IDE',
-      'slapos.recipe.librecipe.execute', 'executee')], self.ws, sys.executable,
-      self.wrapper_directory, arguments=[cloud9_args, environment]))
-    self.setConnectionDict(dict(slaprunner_url='http://[%s]:%s' % (ipv6, runner_port),
-                            cloud9_url='http://[%s]:%s' % (ipv6, cloud9_port)))
-    return self.path_list
+
+    wrapper = self.createPythonScript(self.options['wrapper'],
+        'slapos.recipe.librecipe.execute.executee',
+        (launch_args, environment)
+    )
+    path_list.append(wrapper)
+
+    return path_list
diff --git a/software/slaprunner/instance-runner.cfg b/software/slaprunner/instance-runner.cfg
index b8980f85524f62d0b54963c553c1bc757ae031c1..3e53640be25a0ca13ecc80854abff96596377d4f 100644
--- a/software/slaprunner/instance-runner.cfg
+++ b/software/slaprunner/instance-runner.cfg
@@ -1,33 +1,81 @@
 [buildout]
 parts =
-  instance
+  cloud9
+  slaprunner
   sshkeys-dropbear
   dropbear-server-add-authorized-key
+  publish-connection-informations
 
 eggs-directory = ${buildout:eggs-directory}
 develop-eggs-directory = ${buildout:develop-eggs-directory}
 offline = true
 
-[instance]
-recipe = ${instance-recipe:egg}:${instance-recipe:module}
+
+# Create all needed directories
+[rootdirectory]
+recipe = slapos.cookbook:mkdirectory
+etc = $${buildout:directory}/etc/
+var = $${buildout:directory}/var/
+srv = $${buildout:directory}/srv/
+bin = $${buildout:directory}/bin/
+
+[directory]
+recipe = slapos.cookbook:mkdirectory
+sshkeys = $${rootdirectory:srv}/sshkeys
+services = $${rootdirectory:etc}/run/
+ssh = $${rootdirectory:etc}/ssh/
+
+[basedirectory]
+recipe = slapos.cookbook:mkdirectory
+log = $${rootdirectory:var}/log/
+services = $${rootdirectory:etc}/run/
+run = $${rootdirectory:var}/run/
+backup = $${rootdirectory:srv}/backup/
+promises = $${rootdirectory:etc}/promise/
+
+[runnerdirectory]
+recipe = slapos.cookbook:mkdirectory
+home = $${rootdirectory:srv}/runner/
+project = $${:home}/project
+software-root = $${:home}/software
+instance-root = $${:home}/instance
+
+# Deploy cloud9 and slaprunner
+[cloud9]
+recipe = slapos.cookbook:cloud9
+ip = $${slap-network-information:global-ipv6}
+port = 30000
+wrapper = $${basedirectory:services}/cloud9
+working-directory = $${runnerdirectory:home}
+git-binary = ${git:location}/bin/git
+node-binary = ${nodejs:location}/bin/node
+cloud9 = ${cloud9:location}/server.js
+
+[slaprunner]
+recipe = slapos.cookbook:slaprunner
 slaprunner = ${buildout:directory}/bin/slaprunner
 slapgrid_sr = ${buildout:directory}/bin/slapgrid-sr
 slapgrid_cp = ${buildout:directory}/bin/slapgrid-cp
 slapproxy = ${buildout:directory}/bin/slapproxy
 supervisor = ${buildout:directory}/bin/slapgrid-supervisorctl
-git = ${git:location}/bin/git
-node-bin = ${nodejs:location}/bin/node
-cloud9 = ${cloud9:location}/bin/cloud9.js
+git-binary = ${git:location}/bin/git
+slapos.cfg = $${rootdirectory:etc}/slapos.cfg
+working-directory = $${runnerdirectory:home}
+project-directory = $${runnerdirectory:project}
+software-directory = $${runnerdirectory:software-root}
+instance-directory = $${runnerdirectory:instance-root}
 ssh_client = $${sshkeys-dropbear:wrapper}
 public_key = $${sshkeys-dropbear:public-key}
 private_key = $${sshkeys-dropbear:private-key}
+ipv4 = $${slap-network-information:local-ipv4}
+ipv6 = $${slap-network-information:global-ipv6}
+proxy_port = 50000
+runner_port = 50000
+partition-amount = 7
+cloud9-url = $${cloud9:access-url}
+wrapper = $${basedirectory:services}/slaprunner
 
-[sshkeys-directory]
-recipe = slapos.cookbook:mkdirectory
-requests = $${directory:sshkeys}/requests/
-keys = $${directory:sshkeys}/keys/
-
-# Deploy dropbear (minimalist SSH server)
+# Deploy dropbear (minimalist ssh server)
 [sshkeys-directory]
 recipe = slapos.cookbook:mkdirectory
 requests = $${directory:sshkeys}/requests/
@@ -65,26 +113,14 @@ wrapper = $${basedirectory:services}/sshd
 recipe = slapos.cookbook:dropbear.add_authorized_key
 key = $${slap-parameter:authorized-key}
 
-[rootdirectory]
-recipe = slapos.cookbook:mkdirectory
-etc = $${buildout:directory}/etc/
-var = $${buildout:directory}/var/
-srv = $${buildout:directory}/srv/
-bin = $${buildout:directory}/bin/
 
-[directory]
-recipe = slapos.cookbook:mkdirectory
-sshkeys = $${rootdirectory:srv}/sshkeys
-services = $${rootdirectory:etc}/run/
-ssh = $${rootdirectory:etc}/ssh/
+# Send informations to SlapOS Master
+[publish-connection-informations]
+recipe = slapos.cookbook:publish
+url = $${slaprunner:access-url}
+cloud9_url = $${cloud9:access-url}
+ssh_command = ssh $${dropbear-server:host} -p $${dropbear-server:port}
 
-[basedirectory]
-recipe = slapos.cookbook:mkdirectory
-log = $${rootdirectory:var}/log/
-services = $${rootdirectory:etc}/run/
-run = $${rootdirectory:var}/run/
-backup = $${rootdirectory:srv}/backup/
-promises = $${rootdirectory:etc}/promise/
 
 [slap-parameter]
 # Default value if no ssh key is specified
diff --git a/software/slaprunner/software.cfg b/software/slaprunner/software.cfg
index 84353bdcc07f20785b6c360c9975ff3d248bef44..2d15e220339b1a4e9a0bfac6b210b51290a9c5db 100644
--- a/software/slaprunner/software.cfg
+++ b/software/slaprunner/software.cfg
@@ -34,7 +34,7 @@ md5sum = 5307e4200f044ae57b504ad68444491c
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-runner.cfg
 output = ${buildout:directory}/template-runner.cfg
-md5sum = c24f4a76c9e8be5f5b83af28daf0fca1
+md5sum = 779df8a10f18511058a49b14b8ffba18
 mode = 0644
 
 [eggs]